Продолжается процесс внесения патчей LLVMLinux в ядро ванили (2013-2014 гг.).
Проект LLVMLinux от Linux Foundation: http://llvm.linuxfoundation.org/, чтобы ядро Vanilla создавалось с LLVM. Много патчей подготовлено Беханом Вебстером, который возглавляет проект LLVMLinux.
Существует LWN статья о проекте с мая 2013 https://lwn.net/Articles/549203/ «СЛС: Проект LLVMLinux»
Текущий статус проекта LLVMLinux отслеживается на странице http://llvm.linuxfoundation.org/index.php/Bugs#Linux_Kernel_Issues
вещи (в основном GCC-измы) уже устранены из ядра: * Переменные переменных регистров (не C99) * VLAIS (не относящаяся к C99 недокументированная функция GCC «Переменные массивы длины в структурах»), например struct S { int array[N];}
или даже struct S { int array[N]; int array_usb_gadget[M]; }
, где N и M являются аргументом постоянной функции * Вложенные функции (функция Ada портирована на C разработчиками GCC/Gnat; не допускается в C99) * Некоторые ССАГПЗ/газ магии, такие как специальные сегменты, или макро
вещи сделать: * Использование __builtin_constant_p
встроенной команды для реализации страшно магию как BUILD_BUG_ON(!__builtin_constant_p(offset));
Хорошие новости о LLVMLinux том, что после его исправления ядро не только становится готовым к использованию с LLVM + clang, но и легче создавать другими компиляторами, отличными от GCC, потому что проект убивает не такой код C99, как VLAIS, созданный автором гаджета usb, хакерами netfilter и криптоподсистемой хакеры; также вложенные функции убиты.
Duplicate: http://stackoverflow.com/questions/689327/is-it-possible-to-compile-linux-kernel-with-something-other-than-gcc – dmckee
Мой первый вопрос будет ..«Почему gcc не вариант?» Я не говорю, что вы не должны пытаться делать то, что делаете, на самом деле это здорово видеть, как любопытство потворствует. Но вы погружаетесь в пул акул, вооруженных лазерами, поэтому большинство из нас, возможно, захочет узнать, почему. –
@Tim Post, я хочу узнать, какие проблемы возникают при компиляции ядра linux с не-gcc-компиляторами. Я работаю с одним экспериментальным компилятором, и я должен улучшить его поддержку расширений gnu, необходимых для компиляции ядра Linux. Патчи от intel (linuxdna) очень интересны для меня. – osgx