В ядре Linux 5.18 планируют разрешить использование стандарта языка Си C11
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В процессе обсуждения набора патчей с исправлением связанных с уязвимостями класса Spectre проблем в коде для работы со связанными списками, стало ясно, что проблему удалось бы решить более изящно, если бы в ядро допускался код на языке Си, соответствующий более новой версии стандарта. В настоящее время добавляемый ядро код должен соответствовать спецификации ANSI C (С89), сформированной ещё в 1989 году.
Связанная со Spectre проблема в коде была вызвана продолжением использования отдельно определяемого итератора после цикла - для перебора элементов связанного списка используется макрос и так как итератор цикла передаётся в этот макрос, он определяется вне самого цикла и остаётся доступен после цикла. Использование стандарта C99 позволило бы определять переменные для цикла в блоке for(), что решило бы проблему без придумывания обходных путей.
Линус Торвальдс согласился с идеей реализации поддержки более новых спецификаций и предложил перейти в ядре 5.18 на использование стандарта C11, опубликованного в 2011 году.
При предварительной проверке сборка в GCC и Clang в новом режиме прошла без отклонений. Если при более тщательном тестировании не возникнет непредвиденных проблем, в сборочных скриптах ядра 5.18 опция '--std=gnu89' будет заменена на '--std=gnu11 -Wno-shift-negative-value'. Рассматривалась возможность и использования стандарта C17, но в этом случае пришлось бы повышать минимально поддерживаемую версию GCC. Включение же поддержки C11 укладываются в текущие требования к версии GCC (5.1).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- [url= https://news.ycombinator.com/item?id=30459634]Главная ссылка к новости ( https://news.ycombinator.com/...)[/url]
- OpenNews: Разработчики ядра Linux обсуждают возможность удаления ReiserFS
- OpenNews: Пятая редакция патчей для ядра Linux с поддержкой языка Rust
- OpenNews: Доступен Kasper, сканер проблем со спекулятивным выполнением кода в ядре Linux
- OpenNews: Уязвимость в механизме ucount ядра Linux, позволяющая повысить свои привилегии
- OpenNews: Вторая версия патчей c реструктуризацией заголовочных файлов ядра Linux
Похожие новости:
- Разработчики ядра Linux обсуждают возможность удаления ReiserFS
- Уязвимость в подсистеме netfilter, позволяющая выполнить код на уровне ядра Linux
- Опубликован AV Linux MX-21, дистрибутив для создания аудио- и видеоконтента
- Обновление сборки DogLinux для проверки оборудования
- Пятая редакция патчей для ядра Linux с поддержкой языка Rust
- Wayland использует менее 10% Linux-пользователей Firefox
- Выпуск дистрибутива Absolute Linux 15.0
- Выпуск минималистичного дистрибутива Tiny Core Linux 13
- Уязвимость в механизме ucount ядра Linux, позволяющая повысить свои привилегии
- Уязвимости в OpenSSL, Glibc, util-linux, драйверах i915 и vmwgfx
Теги для поиска: #_linux, #_kernel, #_compile
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:19
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В процессе обсуждения набора патчей с исправлением связанных с уязвимостями класса Spectre проблем в коде для работы со связанными списками, стало ясно, что проблему удалось бы решить более изящно, если бы в ядро допускался код на языке Си, соответствующий более новой версии стандарта. В настоящее время добавляемый ядро код должен соответствовать спецификации ANSI C (С89), сформированной ещё в 1989 году. Связанная со Spectre проблема в коде была вызвана продолжением использования отдельно определяемого итератора после цикла - для перебора элементов связанного списка используется макрос и так как итератор цикла передаётся в этот макрос, он определяется вне самого цикла и остаётся доступен после цикла. Использование стандарта C99 позволило бы определять переменные для цикла в блоке for(), что решило бы проблему без придумывания обходных путей. Линус Торвальдс согласился с идеей реализации поддержки более новых спецификаций и предложил перейти в ядре 5.18 на использование стандарта C11, опубликованного в 2011 году. При предварительной проверке сборка в GCC и Clang в новом режиме прошла без отклонений. Если при более тщательном тестировании не возникнет непредвиденных проблем, в сборочных скриптах ядра 5.18 опция '--std=gnu89' будет заменена на '--std=gnu11 -Wno-shift-negative-value'. Рассматривалась возможность и использования стандарта C17, но в этом случае пришлось бы повышать минимально поддерживаемую версию GCC. Включение же поддержки C11 укладываются в текущие требования к версии GCC (5.1). =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:19
Часовой пояс: UTC + 5