LINUX.ORG.RU

Linux перейдёт на использование стандарта C11 в версии 5.18 или одной из следующих

 , ,


1

1

Во время обсуждения набора патчей, связанных с исправлением уязвимостей класса Spectre в коде для работы со связанными списками, стало ясно, что проблему удалось бы решить более изящно, если бы в ядро допускался код, использующий стандарт старше C89. Сейчас код в ядре должен соответствовать С89 (с GNU расширениями) на основе спецификации, сформированной ещё в 1989 году. Связанная со Spectre проблема была в том, что для перебора элементов списка используется макрос. Так как переменная цикла передаётся в этот макрос, то она определяется вне самого цикла и остаётся доступна после цикла. Использование более новых стандартов языка C позволит определять переменные для цикла прямо в блоке for.

В связи с этим, Линус Торвальдс предложил попробовать перейти в ядре 5.18 на стандарт C99, который был опубликован в 1999 году, на что получил встречное предложение перейти сразу на C11. При проверке сборки в GCC и Clang с новым стандартом проблем пока не возникло и, если при более тщательном тестировании ситуация не изменится, в сборочных скриптах ядра 5.18 опция --std=gnu89 будет заменена на --std=gnu11 -Wno-shift-negative-value.

В случае неудачи, переход будет отложен на один из следующих выпусков.

>>> Подробности



Проверено: xaizek ()
Последнее исправление: maxcom (всего исправлений: 5)
Ответ на: комментарий от byko3y

Оно UB только с -O2/-O3 без -fno-strict-overflow.

Ну да ладно, можешь с unsigned типами то же самое сделать, оно никогда не UB.

unsigned char, (100+200)/2

unsigned int, (2000000000+3000000000)/2

firkax ★★★★★
()
Ответ на: комментарий от firkax

Оно UB только с -O2/-O3 без -fno-strict-overflow

О, сишник из палаты мер и весов. Что такое UB - за все годы так и не понял. Си никогда не видел, пишет на языке gcc.

anonymous
()
Ответ на: комментарий от firkax

Оно UB только с -O2/-O3 без -fno-strict-overflow.

Типа int не обязан быть 32бит поэтому и UB

Psilocybe ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.