104 (2024-09-27) Обновлены binutils до 2.41 и glibc до 2.40.
100 (2024-09-20) Добавлена новая опция
--print-safe-options=<level>
, которая распечатывает набор опций безопасного компилятора, эквивалентный опции-Safe<level>
. (*)Эта опция помогает оценить сложность перехода на использование полноценного безопасного компилятора класса
level
. Также она позволяет минимизировать комбинацию опций при отладке проблем.(*): Получаемый набор опций имеет следующие отличия от
-Safe<level>
.-
Не используется механизм, запрещающий отключение отдельных опций.
Благодаря этому можно оценить общее число проблем, выявляемых безопасным компилятором заданного класса на кодовой базе. При использовании самих
-Safe
-опций остановка трансляции или выполнения не позволяет увидеть все проблемные места сразу. -
Допускается понижение классов предупреждений (например, error до warning) для отдельного файла или функции через прагмы
pragma GCC diagnostic
. -
В него не входят флаги, передаваемые компоновщику.
В этой версии распечатка не включает флаги, передаваемые компоновщику. Поэтому для эмуляции поведения
-Safe1
нужно передать дополнительные опции либо выполнить фазы компиляции и линковки отдельными командами:gcc -c -O2 $(gcc -print-safe-options=1) foo.c bar.c && gcc -O2 -Safe1 foo.o bar.o
-
96 (2024-06-04) Исправлена ошибка в работе опции
--dump-sbom
в C++. В этом сценарии в выходном JSON содержимое поляdependencies
было пустым вне зависимости от наличия подключаемых заголовочных файлов.95 (2024-05-31) Исправлено ложное срабатывание
-fsanitize=function
(входит в-Safe1
), встретившееся на QEMU.94 (2024-04-16) Исправлена работа опции
--dump-sbom
при использовании режима препроцессирования без компиляции. В этом сценарии выходной JSON не содержал поляdependencies
.93 (2024-04-09) В скрипт
comp_db_parser
добавлена опция--format {all, infiles}
, благодаря которой можно настроить выходные данные: распечатать информацию обо всех исходных файлах, вошедших в программу (all
), или только о файлах, непосредственно переданных как аргументы командной строки компилятора (infiles
).91 (2024-04-03) Предупреждения, контролируемые опцией
-Warray-bounds
в прошлых версиях безопасного компилятора, разбиты на две группы. Часть предупреждений вынесена под опцию-Wextra-array-bounds
.Первая группа теперь включает только срабатывания
-Warray-bounds
компилятора GCC соответствующей версии. Поведение, контролируемое опцией-Warray-bounds
безопасного компилятора, приведено в соответствие с одноимённой опцией GCC.Во вторую группу вынесены дополнительные срабатывания, реализованные ранее в безопасном компиляторе. Для управления предупреждениями второй группы добавлена опция
-Wextra-array-bounds
.Предупреждения, контролируемые новой опцией, по-прежнему включены в набор предупреждений
-Safe3
и более высоких классов защищённости. Однако теперь они не приводят к остановке трансляции, если опция-Werror=extra-array-bounds
не указана явно.90 (2024-02-19) Добавлена возможность генерации детального SBoM (Software Bill of Materials) с помощью опции
--dump-sbom
. SBoM содержит информацию о компонентах компиляции, зависимостях, конфигурациях и результирующих выходных файлах.