The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Обеспечена возможность сборки ядер Linux 4.4 и 4.9 при помощи Clang

19.09.2017 22:01

Инженеры из компании Google выступили на конференции Linux Plumbers Conference с докладом, в котором рассказали об инициативе переноса в основное ядро оставшихся патчей от заброшенного последние несколько лет проекта LLVMLinux. В результате проведённой работы предоставлена возможность сборки LTS-ядер Linux 4.4 и 4.9 с использованием компилятора Clang. Поддерживается сборка для архитектур x86_64 и ARM64. Перед сборкой требуется наложение одного патча (4.4, 4.9). Работа проведена в рамках инициативы по переводу сборочного инструментария Android и Chrome OS на использование Clang/LLVM.

Также можно отметить поддерживаемый одним из сотрудников Google репозиторий clang-kernel-build и ветку в репозитории проекта Chromium с инструкциями и патчами для сборки ядра Linux 4.13 с использованием Clang.

  1. Главная ссылка к новости (https://www.linuxplumbersconf....)
  2. OpenNews: На базе Sparse создан LLVM-бэкенд, нацеленный на пересборку ядра Linux
  3. OpenNews: В Clang доведена до готовности поддержка стандарта C++11 и приняты патчи для пересборки ядра Linux
  4. OpenNews: Анонсирован проект LLVMLinux, нацеленный на обеспечение сборки ядра Linux при помощи Clang
  5. OpenNews: Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang
  6. OpenNews: В Clang обеспечена возможность сборки Linux-ядра 2.6.36
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/47232-clang
Ключевые слова: clang, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:29, 19/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Хорошая новость, по опыту разработки могу сказать, что clang имеет хороший статический анализатор (по сравнению с gcc). Например, в версии 3.9 он научился находить случаи использования variadic arguments с некорректными аргументами, которые были автоматически promoted до другого типа.
    https://www.securecoding.cert.org/confluence/display/cplusplus/EXP58-CPP.+Pass+an+object+of+the+correct+type+to+va_start
     
     
  • 2.12, kleem_head (?), 09:20, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >  clang имеет хороший статический анализатор (по сравнению с gcc)

    то есть качество кода ядра такое хорошее, что этот компилятор теперь его может собрать? Улыбнуло. :)

     
  • 2.21, Аноним (-), 12:55, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > clang имеет хороший статический анализатор (по сравнению с gcc)

    Ну зачем же так, он не просто лучше чем никакой, он вообще довольно хороший.

     
     
  • 3.26, Аноним (-), 17:37, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    То, что в GCC нет встроенного анализатора не отменяет того факта, что они существуют отдельно. Просто GCC не комбайн.
     
     
  • 4.28, Аноним (-), 18:43, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибаетесь, есть.
    -Wall -Werror
    Можно ещё много чего включить:
    https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/Warning-Options.html

    Помимо статического анализа он поддерживает динамический через ASAN, MSAN (не проверял), UBSAN и TSAN (этот не проверял).

    Включается, соответственно, так:
    -fsanitize=address
    -fsanitize=memory
    -fsanitize=undefined
    -fsanitize=thread
    Опция указывается и при компиляции в объектные файлы, и при линковке.

    GCC не так уж сильно отстаёт от clang в этом плане.

     
     
  • 5.31, Аноним (-), 21:15, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это батенька не статический анализатор у вас там в gcc, а так, уровень дотошности.
    Вы бы тихонько там посмотрели что умеет Clang LLVM, а потом бы уже писали.
     
     
  • 6.42, Crazy Alex (ok), 00:51, 23/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это вы, батенька, горячитесь.

    Я тут уже несколько лет вожусь с одним монструозным легаси сишным проектом, причём сборка по ряду причин идёт и свежим GCC и свежим Clang. Выглядит так, что они выровнялись где-то с год назад - во всяком случае, предсказать, кто следующий выдаст осмысленную ругань, я примерно с тех пор не могу - то один с новой версией что-то находит, то другой.

     
     
  • 7.44, pavlinux (ok), 02:50, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    gcc 2.7.2 рулез форева!  Ядро в три раза тоще и в 10 раз быстрее.
     

  • 1.2, Аноним (-), 22:48, 19/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Разве gcc и clang не должны поддерживать стандартный C11 к которому и должен быть приведён код ядра линукс? Что ж там такое то в ядре и компиляторах твориться что ядро надо патчить чтобы оно собралось на другом компиляторе?!
     
     
  • 2.4, Ordu (ok), 23:02, 19/09/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Ну там же ссылка есть в новости, где можно посмотреть грядку патчей, которые нужны. Лень потыкать?

    Там разные причины, где-то clang глубже оптимизирует, из-за чего UB вылезает; где-то дело в багах clang'а; где-то грязные хаки ядра надо сделать менее грязными, чтобы clang их проглатывал бы молча, так же как и gcc; где-то разница во взаимодействии компилятора с внешними программами, скажем, то какие опции компилятор по умолчанию передаёт или не передаёт в gas;... Это то, что я высмотрел, рандомно тыкая по патчам. Ты можешь тоже потыкать и дополнить список.

     
  • 2.5, anonymous (??), 23:03, 19/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я тебя удивлю, но ядро написано не только на С...
     
     
  • 3.10, нэту (?), 07:02, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а на чём ещё? asm - не в счет - шланг в него нормально умеет
     
     
  • 4.24, iZEN (ok), 15:47, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Частично на perl, xml, mk, m4 и башизмах в sh-скриптах?
     
     
  • 5.25, Аноним (-), 16:26, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И? Причем  здесь perl, xml, mk, m4 и баш к Clang?
     
     
  • 6.30, номия (?), 20:54, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    это скорее про сборочное окружение.. от него тоже куча проблем для сборки клангом
     
  • 3.16, Аноним (-), 09:57, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не удивил. Точнее удивил но по другой причине. Меня удивляет само существование людей думающих что они в состоянии судить об информированности собеседника по одному комментарию.
    Уже не первый раз сталкиваюсь с подобным и каждый раз удивляюсь.
     
  • 2.11, nobody (??), 09:19, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > стандартный C11 к которому и должен быть приведён код ядра линукс

    Торвальдс с Вами категорически не согласен и срать хотел на C11 и другие стардарты

     
     
  • 3.13, Владимир (??), 09:22, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Там до сих пор C89, по той причине, что Торвальдс не хочет, чтобы кто-то случайно закоммитил код, смешивающий код и объявления.
     
     
  • 4.14, nobody (??), 09:30, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там не только C89. Там много компиляторной магии от gcc. Собственно "поддержка компиляции с помощью clang" главным образом сводится к добавлению всех этих gcc'измов в шланг.

    Вот, допустим, начало мега-треда, где, кроме прочего, Торвальдса спрашивают, почему он не использует C11 атомики в ядре: https://gcc.gnu.org/ml/gcc/2014-02/msg00052.html

     
  • 4.18, Аноним (-), 11:03, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Так было давно уже, что они начали принимать патчи на C99.
     
  • 2.22, Аноним (-), 13:18, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    На чистом C ядро написать невозможно.
     
     
  • 3.33, Аноним (-), 07:03, 21/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На чистом C ядро написать невозможно.

    Смотря что иметь ввиду под чистым С. Если отсутствие std библиотек - сложно, но возможно. Если же использование C++ - Там его нет.

     
     
  • 4.35, Аноним (-), 11:46, 21/09/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Имелось ввиду, без использование Asm'а.
     
     
  • 5.36, Аноним (-), 12:13, 21/09/2017 [^] [^^] [^^^] [ответить]  
  • –5 +/
    ${любой_драйвер} невозможно написать с помощью чистого C.
     
  • 3.46, pavlinux (ok), 02:52, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > На чистом C ядро написать невозможно.

    Не удобно, но возможно.

     
  • 2.45, pavlinux (ok), 02:51, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > к которому и должен быть приведён код ядра линукс?

    С какого уя?  Ядро - STD C90 максимум.

     

  • 1.3, Andrey Mitrofanov (?), 22:59, 19/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > в котором рассказали об инициативе переноса в основное ядро оставшихся патчей
    > от заброшенного последние несколько лет проекта LLVMLinux
    >llvm.linuxfoundation.org).

    Да! Хотелось бы услышать начальника транспортного цеха по ворпосу проблемы GPLinBase в этих самых --

    >по переводу сборочного инструментария Android и
    > Chrome OS на использование Clang/LLVM.

    Что там эти Гугле, Линукс-фондейшен, Эппле и пр. микрософты думают себе об этой назревшей и опухшей Проблеме?1  Когда уже, в конце-то концов!, переход на ядро FreeBSD и яблочный ld? А то ж многовато в одичавшей природе linux-ов стало.

     
     
  • 2.6, Ordu (ok), 23:06, 19/09/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >>по переводу сборочного инструментария Android и
    >> Chrome OS на использование Clang/LLVM.
    > Что там эти Гугле, Линукс-фондейшен, Эппле и пр. микрософты думают себе об
    > этой назревшей и опухшей Проблеме?1  Когда уже, в конце-то концов!,
    > переход на ядро FreeBSD и яблочный ld? А то ж многовато
    > в одичавшей природе linux-ов стало.

    Гугл пилит Fuchsia, чтобы избавиться от легаси-ядра в Android'е: https://en.wikipedia.org/wiki/Google_Fuchsia

     
     
  • 3.7, Andrey Mitrofanov (?), 23:19, 19/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>>по переводу сборочного инструментария Android и
    >>> Chrome OS на использование Clang/LLVM.
    >> Что там эти Гугле, Линукс-фондейшен, Эппле и пр. микрософты думают себе об
    >> этой назревшей и опухшей Проблеме?1  Когда уже, в конце-то концов!,
    >> переход на ядро FreeBSD и яблочный ld? А то ж многовато
    >> в одичавшей природе linux-ов стало.
    > Гугл пилит Fuchsia, чтобы избавиться от легаси-ядра в Android'е: https://en.wikipedia.org/wiki/Google_Fuchsia

    Там написано, что это предположения, а рыба молчит об лёд с головы...

    Впрочем, позитивно: у Гугле [возможно-вероятно] будет ядро под пермиссивной лицензией с эппловым компилятором к своим ос с пермиссивными лицензиями. Это жжж здорово:  станет _меньше_ смартфонов, микрософт снова станет делать телефоны...  Можно ж будет даже исходники совсем-обратно позакрывать.

    Эх, старые _добрые_ времена!!  %-)

     
  • 3.23, ввввв (?), 15:13, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>>по переводу сборочного инструментария Android и
    >>> Chrome OS на использование Clang/LLVM.
    >> Что там эти Гугле, Линукс-фондейшен, Эппле и пр. микрософты думают себе об
    >> этой назревшей и опухшей Проблеме?1  Когда уже, в конце-то концов!,
    >> переход на ядро FreeBSD и яблочный ld? А то ж многовато
    >> в одичавшей природе linux-ов стало.
    > Гугл пилит Fuchsia, чтобы избавиться от легаси-ядра в Android'е: https://en.wikipedia.org/wiki/Google_Fuchsia

    Удачи им, как там, кстати модульный телефон?

    Linux ядро - лучшая часть андроида, без него очередной симбиан ос будет с понятной судьбой.

     
     
  • 4.32, Ordu (ok), 23:08, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Linux ядро - лучшая часть андроида

    Не знаю даже, чем вызвано такое заявление. Я пользуюсь Android'ом, и я конечно знаю, что там внутре неонка^W линукс, но это никак не сказывается на моём опыте общения с андроидом как пользователя. То есть, мне как пользователю совершенно фиолетово, какое там ядро, хоть ntoskrnl.exe. А как программисту мне опять же фиолетово, потому что насколько я знаю, программирование под андроид -- это общение с джавовыми API, вне зависимости от выбранного мною языка программирования. Какая разница, какое там ядро прячется в глубине?

     
     
  • 5.38, qwerty123 (??), 11:52, 22/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Какая разница, какое там ядро прячется в глубине?

    Стоимость.

     
     
  • 6.41, Ordu (ok), 19:02, 22/09/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>Какая разница, какое там ядро прячется в глубине?
    > Стоимость.

    Да ладно. Стоимость давно зависит не от стоимости компонентов, а от готовности потребителя платить.

     
  • 5.43, Crazy Alex (ok), 00:55, 23/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Большая. Потому что "глубина" сказывается на качестве работы.
     
  • 5.47, pavlinux (ok), 03:00, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А как программисту мне опять же фиолетово, потому что насколько я знаю,
    > программирование под андроид -- это общение с джавовыми API, вне зависимости
    > от выбранного мною языка программирования. Какая разница, какое там ядро прячется
    > в глубине?

    Открой для себя Android NDK и прелести писанины на C/Asm под ARM/Linux

    https://github.com/googlesamples/android-ndk/blob/master/native-codec/app/src/

     
     
  • 6.50, Ordu (ok), 07:57, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> А как программисту мне опять же фиолетово, потому что насколько я знаю,
    >> программирование под андроид -- это общение с джавовыми API, вне зависимости
    >> от выбранного мною языка программирования. Какая разница, какое там ядро прячется
    >> в глубине?
    > Открой для себя Android NDK и прелести писанины на C/Asm под ARM/Linux
    > https://github.com/googlesamples/android-ndk/blob/master/native-codec/app/src/

    Это бинды к жаба-коду, то есть способ запуска жабы из "нативного" кода. Вот уж удовольствие, писать на asm'е, чтобы вызывая любую апишную функцию, заниматься конвертацией каждого int'а в аргументах в жабовский формат, а потом дёргать jvm.

     
     
  • 7.51, pavlinux (ok), 05:11, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>> А как программисту мне опять же фиолетово
    >> Открой для себя Android NDK
    > Это бинды

    Это примеры. Под андроед-ядро можно прекрасно писать на Ц/Ц++ и грузить свой бинарь/либу

     
     
  • 8.52, Ordu (ok), 11:02, 26/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и Допустим, что в андроеде сменилось ядро, как это отразится на написании эт... текст свёрнут, показать
     

  • 1.15, Пох (?), 09:57, 20/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Дайте угадаю, будет как с ZFS. Cначала кpасноглазыe шипели и хвалились бтрфс, а потом дружненько перешли на ненавистную им ZFS. Да еще и зрадник красношапка положил болт на их любовь.

    В ближайшее время ждем новостей в стиле "линукс только выиграл от перехода на clang. gcc не нужен."

     
     
  • 2.17, Антон Семенович Шпак (?), 10:17, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Дайте угадаю, будет как с ZFS. Cначала кpасноглазыe шипели и хвалились бтрфс,
    > а потом дружненько перешли на ненавистную им ZFS.

    Вы говорите с голосами в своей голове

     
  • 2.20, нах (?), 11:08, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Дайте угадаю, будет как с ZFS.

    но смисел?

    > Дайте угадаю, будет как с ZFS. Cначала кpасноглазыe шипели и хвалились бтрфс,
    > а потом дружненько перешли на ненавистную им ZFS.

    хто, хто все ети льюди? Куда и когда они перешли?
    редхат покупает пилильщиков тру олдскульных линуксных решений - и именно их пихает в свои рекомендации. Вечно жить с lvm, xfs и ext4 (которую редхат, кстати, почему-то не очень любит - видимо, потому что ее любит гугль),приделывая к ним дедап, сжатие и т д (а шифрование уже есть).

     
  • 2.27, Аноним (-), 17:47, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > будет как с ZFS

    А что с ним?

    > а потом дружненько перешли на ненавистную им ZFS

    Кто там перешёл? 1% серверов, хостерами которых являются энтузиасты? Ну да, ну да.

    > Да еще и зрадник красношапка положил болт на их любовь.

    Красношапка компашка похуже M$.

    > линукс только выиграл от перехода на clang

    Линус покажет известный жест шлангу и всё останется по старому.

     
  • 2.29, Аноним (-), 19:48, 20/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    от бтрфс отказались только красношляпники, да и те только из-за NIH. Причем в пользу не ZFS, а какой-то своей хипстерской приблуды на Rust. Основные разработчики бтра (сусе, фейсбук и т.д.) продолжают его пилить.
     
  • 2.34, Andrey Mitrofanov (?), 09:37, 21/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > В ближайшее время ждем новостей в стиле "линукс только выиграл от перехода
    > на clang. gcc не нужен."

    тогда уж "торвальдс-ФоКо перешёл на цланг -- РХЕЛ переходит на Hurd"?

    --нужно больше голосов в голове!

     

  • 1.19, Аноним (-), 11:07, 20/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    >рассказали об инициативе переноса в основное ядро оставшихся патчей от заброшенного последние несколько лет проекта LLVMLinux

    Как там поживает средний палец Торвальдса? ;)

     
  • 1.48, pavlinux (ok), 05:03, 25/09/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > git clone https://chromium.googlesource.com/chromium/src/tools/clang

    Шо, гугла свои трояны теперь прям в шланг пихает?

     
     
  • 2.49, pavlinux (ok), 05:35, 25/09/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    .

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру