Релиз набора компиляторов GCC 12

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
06-Май-2022 16:31

После года разработки опубликован релиз свободного набора компиляторов GCC 12.1, первый значительный выпуск в новой ветке GCC 12.x. В соответствии с новой схемой нумерации выпусков, версия 12.0 использовалась в процессе разработки, а незадолго до выхода GCC 12.1 уже ответвилась ветка GCC 13.0, на базе которой будет сформирован следующий значительный релиз GCC 13.1. 23 мая проект будет отмечать 35 лет с момента формирования первого выпуска GCC.
Основные изменения:
  • Добавлена поддержка отладочного формата CTF (Compact Type Format), обеспечивающего компактное хранение сведений о Си-типах, связях между функциями и отладочных символах. При встраивании в ELF-объекты формат позволяет использовать таблицы символов EFL для избежания дублирования данных.
  • Объявлена устаревшей поддержка формата хранения отладочной информации "STABS", созданного в 1980-е годы.
  • Продолжена работа по расширению поддержки будущих стандартов C2X и C++23 для языков C и C++.
  • В стандартной библиотеке C++ улучшена поддержка экспериментальных разделов стандартов C++20 и C++23.
  • Во фронтэнде для языка фортран предоставлена полная поддержка спецификации TS 29113, описывающей возможности по обеспечению переносимости между кодом на языках Fortran и C.
  • Добавлена поддержка расширения __builtin_shufflevector(vec1, vec2, index1, index2, ...), ранее добавленного в Clang и предлагающего единый вызов для выполнения общих векторных операций перестановки и перетасовки.
  • При использовании уровня оптимизации "-O2" по умолчанию включено применение векторизации (включены режимы -ftree-vectorize и -fvect-cost-model=very-cheap). Модель "very-cheap" допускает векторизацию только если векторный код может полностью заменить векторизируемый скалярный код.
  • Добавлен режим "-ftrivial-auto-var-init" включающий явную инициализацию переменных в стеке для отслеживания проблем и блокирования уязвимостей, связанных с использованием неинициализированных переменных.
  • Для языков C и C++ добавлена встроенная функция
    __builtin_dynamic_object_size для определения размера объекта, совместимая с аналогичной функцией из Clang.
  • В бэкенд генерации кода для архитектуры x86 добавлена поддержка инструкций AVX512-FP16 для типа _Float16.
  • Для архитектуры x86 добавлена защита от уязвимостей в процессорах, вызванных спекулятивным выполнением инструкций после операций безусловного прямого перехода. Проблема возникает из-за упреждающей обработки инструкций, следующих в памяти сразу за командой перехода (SLS, Straight Line Speculation). Для включения защиты предложена опция "-mharden-sls".
  • В экспериментальный статический анализатор добавлено определение использования неинициализированных переменных.
  • В бэкенд для генерации байткода BPF добавлена поддержка механизма CO-RE (Compile Once - Run Everywhere), позволяющего собирать код eBPF-программ для ядра Linux только один раз и использовать специальный универсальный загрузчик, адаптирующий загружаемую программу к текущему ядру и типам BTF (BPF Type Format). CO-RE решает проблему с переносимостью скомпилированных eBPF-программ, которые ранее могли использоваться только в той версии ядра, для которой были собраны, так как позиция элементов в структурах данных меняется от версии к версии.
  • В бэкенде для архитектуры RISC-V добавлена поддержка новых расширений архитектуры набора команд zba, zbb, zbc и zbs, а также ISA-расширений для векторных и скалярных криптографических операций. По умолчанию обеспечена поддержка спецификации RISC-V ISA 20191213. Добавлен флаг -mtune=thead-c906, включающий оптимизации для ядер T-HEAD c906.
  • Добавлен новый режим проверки "-fsanitize=shadow-call-stack" (ShadowCallStack), который пока доступен только для архитектуры AArch64 и работает при сборке кода с опцией "-ffixed-r18". Режим обеспечивает защиту от перезаписи адреса возврата из функции в случае переполнения буфера в стеке. Суть защиты в сохранении после передачи управления функции адреса возврата в отдельном "теневом" стеке и извлечении данного адреса перед выходом из функции.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_gcc, #_compile
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 03-Май 15:35
Часовой пояс: UTC + 5