В прошлом октябре был анонсирован проект по адаптации LLVM компилятора CLang к сборке ядра Linux. С тех пор прошло более полугода, и на днях разработчики опубликовали свой отчет о проделанной работе.
В целом:
- Удалось получить работающую сборку ядер 2.6.37 и 2.6.38 (для некоторых конфигураций)
- KVM и Xen использовать нельзя, причем последний пока даже не компилируется
- Компилируются примерно 90% драйверов ядра, многие работают
- Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично
- Можно использовать многопроцессорные конфигурации (правда, только на x86), однако в некоторых случаях они требуют дополнительных усилий по доработке компилируемого кода
Что не работает:
- Ассемблер для генерации кода реального режима (директивы code16gcc), поэтому, невозможно откомпилировать код начальной загрузки (для этой цели используется gas)
- GCC-расширения языка C (некоторые работают, некоторые нет)
- Опции генерации и оптимизации кода: -mregparm, -fcall-saved-reg, __arch_hweight*(), -pg, атрибут no_instrument_function, -fno-optimize-sibling-calls
Несмотря на возникающие трудности, разработчики полны энтузиазма. Свой проект они назвали LLL project, что расшифровывается как LLVM Linux project.
>>> Подробности