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

12 сентября 2012 года

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

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

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

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

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

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

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

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Анонсирован проект LLVMLinux, нацеленный на обеспечение сборки ядра Linux при помощи Clang», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.