Анонсирован проект LLVMLinux, нацеленный на обеспечение сборки ядра Linux при помощи Clang

В списке рассылки разработчиков LLVM публично анонсирован проект LLVMLinux, созданный под эгидой организации Linux Foundation для обеспечения сборки ядра Linux с использованием компилятора Clang. Проект LLVMLinux сформирован на основе ряда разрозненных инициатив, в рамках которых осуществлялись попытки решения проблем при сборки ядра при помощи Clang. В частности, учтены наработки проекта lll-project, команды разработчиков PAX и консорциума Linaro.

Создатели LLVMLinux надеются, что консолидация смежных разработок в единый проект позволит избавиться от дублирования работы и даст возможность сконцентрироваться на решении важных задач, что в итоге ускорит появление полноценной поддержки Clang, как сборочного инструментария, альтернативного GCC. В частности, использование компилятора Clang, распространяемого под лицензией BSD, позволяет задействовать дополнительные техники оптимизации и диагностики проблем, например, автоматизировать выявление фактов разыменования указателей и других ошибок, связанных с некорректной работой с памятью.

Отправной точкой LLVMLinux послужила работа по задействованию Clang для сборки ядра Linux для платформы ARM, выполненная в рамках инициативы консорциума Linaro по улучшению поддержки архитектуры ARM в Linux. На основе порта для ARM были подготовлены аналогичные порты для архитектур i586 и x86_64. В дальнейшем спектр поддерживаемых архитектур планируется расширить (например, добавить поддержку MIPS, PowerPC), если найдутся заинтересованные в подобной работе лица.

Проект LLVMLinux охватывает два направления - решение проблем в ядре Linux при сборке с использованием Clang и адаптация Clang для особенностей ядра (добавление GNU-расширений, специфичных для GCC). Созданные разработчиками LLVMLinux патчи активно продвигаются в upstream-проекты - ядро Linux и LLVM/Clang. В конечном итоге, планируется из коробки обеспечить формирование полностью работоспособных Clang-сборок ядра Linux.

Для упрощения формирования сборочного окружения и кросс-компиляции ядра с использованием Clang подготовлен специальный сборочный инструментарий. Сборки ядра для архитектур ARM, i586 и x86_64 за редким исключением полностью работоспособны и позволяют получить рабочие системы, но ещё требуют большой работы по тестированию и выявлению неявных проблем, поэтому подобные сборки пока не рекомендуются для применения в конечных продуктах.

Их наблюдаемых при сборке ядра с использованием Clang проблем, которые пытается решить проект LLVMLinux, отмечаются:

  • Использование массивов переменной длины в некоторых структурах ядра (SELinux, Posix ACL, IPSec, eCrypt);
  • Kbuild, который завязан на особенностях GCC;
  • Использование явных регистровых переменных;
  • Использование расширенных аннотаций __refdata;
  • Применение EXPORT_SYMBOL в inline-функциях;
  • Вывод сообщений об ошибках из-за переопределение POSIX-функций в ядре;
  • Использование неподдерживаемых в Clang флагов компиляции: "-fdelete-null-pointer-checks", "--fno-inline-functions-called-once", "--Wno-unused-but-set-variable" и "--mabi=aapcs-linux";


Источник:
http://www.opennet.ru/opennews/art.shtml?num=34811

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>