LINUX.ORG.RU

Статус готовности CLang к сборке ядра Linux

 , , license bsd, lll, , , ,


0

1

В прошлом октябре был анонсирован проект по адаптации 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.

>>> Подробности

★★★★★

Проверено: mono ()
Последнее исправление: mono (всего исправлений: 2)

> работающую сборку ядер (для некоторых конфигураций)

KVM и Xen использовать нельзя, причем последний пока даже не компилируется

90% драйверов ... многие работают


Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично


(правда, только на x86), однако в некоторых случаях они требуют дополнительных усилий по доработке компилируемого кода


В целом пусто.

tn1
()
Ответ на: комментарий от pekmop1024

Отладка clang/llvm - это само собой. Но тот факт, что ядро возможно собрать только одним-единственным компилятором, говорит отнюдь не в пользу ядра.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

> Но тот факт, что ядро возможно собрать только одним-единственным компилятором, говорит отнюдь не в пользу ядра.
или о корявости остальных.

tn1
()
Ответ на: комментарий от tn1

> или о корявости остальных.

Корявость или не-корявость определяется соответствием стандарту, а не способностью скомпилячить тот или иной кусок быдлокода.

Manhunt ★★★★★
()
Ответ на: комментарий от tn1

>или о корявости остальных.

таки о банальном vendor lock-in на gcc из-за использования GNU C extensions.

devl547 ★★★★★
()

посмотрим, что получится в итоге.

uju ★★
()

Вот интересно, они адаптируют clang до совместимости с GCC-костылями или пишут патчи для ядра, чтобы лучше соответствовало стандартам?

mono ★★★★★
()

Мне почему-то кажеться, что когда они наконец скомпилируют все ядро, то с удивлением обнаружат, что сделали второй GCC.

spoilt ★★★
()
Ответ на: комментарий от pylin

>интересно а бсд то компилится?)

Похоже оно на столько не нужно, что даже упомянуть забыли

ttnl ★★★★★
() автор топика

и да, больше вело^Wкомпиляторов, хороших и разных
пользуюсь gcc как основным, clang в vim, несколько пакетов собрано icc

fads ★★
()

Метки: license bdsm

только на x86

Скорее бы запилили для других архитектур.

X10Dead ★★★★★
()

>Статус готовности CLang

Статус готовности Clang: не нужно

Quasar ★★★★★
()
Ответ на: комментарий от spoilt

spoilt> когда они наконец скомпилируют все ядро, то с удивлением обнаружат, что сделали второй GCC.

Причём гораздо более тормознутый и тяжёлый.

Quasar ★★★★★
()
Ответ на: комментарий от pylin

Clang может собрать базовую систему BSD. Благодаря изменениям кода BSD со стороны идиотов-фанатиков. Всё остальное - фиг. Так что без GCC бздуны не могут жить даже сейчас. Просто зоопарк компиляторов развели, насрав себе же.

Quasar ★★★★★
()
Ответ на: комментарий от madcore

madcore> Зачем нужен clang?

GCC существует давно и проверен временем. Он соответствует стандартам, поддерживает кучу платформ, слывёт как надёжное решение для разработки и активно развивается. Но у него есть недостаток - его написала не Apple (с точки зрения Apple) и его использовать некошерно в BSD, ибо GNU (с точки зрения отморозков-бздунов) *ухмыляющаяся морда*

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

> Но у него есть недостаток - его написала не Apple

вы сейчас как раз выглядите как фанатик - clang не нужен потому-что не GNU :) на самом деле clang + llvm имеют свои плюшки, а лишний опенсорсный компилятор под тот же линукс никому не помешает, тем более если llvm сумеют прикрутить к какой-нибудь IDE, как это сделала Apple

aho
()
Ответ на: комментарий от anarquista

присоединяюсь к реквесту, тоже очень хочется узнать, каким это стандартам внезапно соответствует GCC?

mono ★★★★★
()

готовность - хорошо.
а зачем оно?

anonymous
()

Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично

показатель того что их программисты умеют писать хороший си код а не костыльное г**вно заточеное под гцц, которое не собирается удргими компиляторами

guyvernk
()
Ответ на: комментарий от mono

> Открой свою ссылку и узри, что поддержка C99 в GCC неполная.

И? Ты спрашивал, какие стандарты - там написано, какие, и написано, насколько. Что еще тебе надо?

tailgunner ★★★★★
()
Ответ на: комментарий от guyvernk

> показатель того что их программисты умеют писать хороший си код а не костыльное г**вно заточеное под гцц, которое не собирается удргими компиляторами

И откуда берутся такие знатоки компиляторов...

tailgunner ★★★★★
()
Ответ на: комментарий от mono

>или пишут патчи для ядра, чтобы лучше соответствовало стандартам?

Пусть оставят их себе, регрессий и так хватает.

Lighting ★★★★★
()
Ответ на: комментарий от aho

>на самом деле clang + llvm имеют свои плюшки

Почему ни один фанатик до сих пор не сказал, что же за мифически плюшки оно имеет?

Lighting ★★★★★
()
Ответ на: комментарий от tailgunner

Да, я так думаю, что смысла продолжать разговор нет.

mono ★★★★★
()
Ответ на: комментарий от Lighting

Потому что стоит пойти по ссылке и почитать, там все доходчиво и даже с картинками.

mono ★★★★★
()
Ответ на: комментарий от Ubuntu1104

> Можно для Ъ,зачем это делаеться?неужели больше нечем ядра собирать?

Ну, хотя бы, для static code analysis и для link-time optimisations. У gcc плохо и с тем и с другим.

anonymous
()
Ответ на: комментарий от madcore

> llvm-бакенд для gcc покрыл бы все потребности без велосипедизма.

Не все. Static code analysis на уровне clang делается, а не в llvm.

anonymous
()
Ответ на: комментарий от Lighting

> Почему ни один фанатик до сих пор не сказал, что же за мифически плюшки оно имеет?

я хоть и не фанатик, но:

- статический анализ кода;
- скорость компиляции быстрее раза в два;
- вменяемые сообщения об ошибках;
- JIT;

и пр.

aho
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.