URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 119062
[ Назад ]

Исходное сообщение
"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."

Отправлено opennews , 21-Ноя-19 11:29 
Кес Кук (Kees Cook), бывший главный сисадмин kernel.org и лидер Ubuntu Security Team, ныне работающий в компании Google над обеспечением защиты Android  и ChromeOS, подготовил экспериментальный репозиторий с патчами, позволяющими собрать ядро для архитектуры x86_64  с использованием компилятора Clang и активацией механизма защиты CFI (Control Flow Integrity). CFI обеспечивает выявление некоторых форм неопределённого поведения, которые потенциально могут привести к нарушению нормального потока управления (control flow) в результате выполнения эксплоитов...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=51909


Содержание

Сообщения в этом обсуждении
"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено netricks , 21-Ноя-19 11:40 
Любопытно, там же куча кода написана с расширениями gnu... Как он это обошел?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Medoed , 21-Ноя-19 11:48 
Clang умеет в большинство расширений GNU.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Ordu , 21-Ноя-19 11:50 
Там не особо-то и используется, в смысле далеко не все расширения используются. Шланг же поддерживает некоторые из этих расширений.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено кельвин , 21-Ноя-19 13:41 
вроде как написали врапер для каждого из ядровых GCCизмов, но это не точно.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 16:33 
> Любопытно, там же куча кода написана с расширениями gnu... Как он это обошел?

https://releases.llvm.org/6.0.0/tools/clang/docs/LanguageExt...
> In addition to the language extensions listed here, Clang aims to support a broad range of GCC extensions.


  -std=<standard>
              Specify the language standard to compile for.
...
                 gnu89
                 gnu90
                    ISO C 1990 with GNU extensions
...
                 gnu99
                    ISO C 1999 with GNU extensions

...
                 gnu11
                    ISO C 2011 with GNU extensions
...    
                 gnu17
                    ISO C 2017 with GNU extensions



"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 17:17 
А goto только на той неделе добавили...

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Ivan_83 , 21-Ноя-19 17:39 
Враки, я goto в clang юзал ещё в 3.3 чтоли, и фряха бы без goto не собралась.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 18:48 
> Враки, я goto в clang юзал ещё в 3.3 чтоли, и фряха
> бы без goto не собралась.

Как ты его юзал интересно, если только в 9 добавили? Ври да не завирайся.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 19:35 
> Как ты его юзал интересно, если только в 9 добавили? Ври да  не завирайся.

Наверное молча – добавленный "asm goto" != "C-goto" и сам по себе довольно специфичная штука.
https://bugs.llvm.org/show_bug.cgi?id=9295


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 19:44 
>> Как ты его юзал интересно, если только в 9 добавили? Ври да  не завирайся.
> Наверное молча – добавленный "asm goto" != "C-goto" и сам по себе
> довольно специфичная штука.
> https://bugs.llvm.org/show_bug.cgi?id=9295
>специфичная штука

Да вот только ядро без неё было не собрать. Об этом я и сказал изначально. Не такая уж и специфичная, просто не принято у нас писать на ассемблере (тем более на гнутом, логичнее сразу взять насм/фасм). Если бы больше программистов вручную оптимизировали свой высокоуровневый сишный код, эта фича могла бы быть более популярной.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 20:54 
>>> Как ты его юзал интересно, если только в 9 добавили? Ври да  не завирайся.
>> Наверное молча – добавленный "asm goto" != "C-goto" и сам по себе
>> довольно специфичная штука.
>> https://bugs.llvm.org/show_bug.cgi?id=9295
>>специфичная штука
> Да вот только ядро без неё было не собрать.

https://lwn.net/Articles/734071/ (2017)
https://lwn.net/Articles/655544/ (2015)
> There are currently five patches needed in order to build a kernel for the x86 architecture.

--
> Об этом я  и сказал изначально.

Все может быть -- но телепаты, увы, в отпуске.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 21:00 
Странные ссылки. Это старые мамонтовые ядра, нынешним она вроде как обязательно нужна.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Ivan_83 , 23-Ноя-19 01:47 
Не задумываясь, не было у меня проблем с этим, всё собиралось и работало.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено nc , 26-Ноя-19 08:06 
Расширения gnu давно пора принять в стандарт языка. Простые и полезные.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 11:59 
gcc капец? gcc-сец?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено пох. , 21-Ноя-19 12:15 
в анально-огороженной инфраструктуре гуглозондов - да, давно к этому шло.

Мэйнстримные линуксы как собирались gcc, так и будут, не плачьте.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 14:54 
Ага, X-капец, SysVinit-капец, GCC-капец, ... Только они всё живут и здравствуют.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено evkogan , 21-Ноя-19 17:33 
Еще совсем недавно производительность кода собранного шлангом сильно отставала.
Для ядра это особенно критично.
И я не верю что это уже победили.
Так что это шаг туда, но идти еще долго.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Ivan_83 , 21-Ноя-19 17:40 
Там очень не очевидно с производительностью, потому что какие то вещи получаются быстрее какие то медленее.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 19:06 
> Еще совсем недавно производительность кода собранного шлангом сильно отставала.
> Для ядра это особенно критично.

https://www.phoronix.com/scan.php?page=article&item=gcc9-cla...
Отставание, как оно есть.

Ну и как раз в ядре без бенчей  clang vs gcc как-то не очень верится в "критичную" разницу [работы ядра], ведь
такая "критичная" оптимизация (обычно) подразумевают значительную "трансформацию" изначального кода  -- что как раз в ядре (обычно таки) совсем нежелательно.
См. "теплые отзывы" на "вумничание" того же gcc:
http://lkml.iu.edu//hypermail/linux/kernel/1407.3/00650.html
> Re: Random panic in load_balance() with 3.16-rc
> From: Linus Torvalds
> Lookie here, your compiler does some absolutely insane things with the spilling, including spilling a *constant*.

https://lore.kernel.org/patchwork/patch/773330/
> gcc-7 has an "optimization" pass that completely screws up, and generates the code expansion for the (impossible) case

https://lkml.org/lkml/2018/6/7/980
> Mark notes that gcc optimization passes have the potential to elide necessary invocations of this instruction sequence, so mark the asm volatile.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Softwayer , 25-Ноя-19 03:28 
> Для ядра это особенно критично.

Это ещё почему?


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 12:38 
Так это что, я наконец могу перестать говорить, что я использую "ГАНУСЛЭШЛИНУКС"???

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 12:45 
да, когда сумеешь обойтись без mv, cp, cat, dd... и прочего гнутого шлака

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 13:01 
Их уже переписывают на Rust?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 13:05 
Их можно взять из BSD.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 13:11 
Только если не пользоваться.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 19:12 
> Только если не пользоваться.

Не стесняйтесь аргументировать более, хм,  подробно.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено имя , 21-Ноя-19 15:25 
> Их уже переписывают на Rust?

2014: https://www.opennet.dev/opennews/art.shtml?num=39989


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 13:14 
Есть бсд версии этих утилит

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 13:17 
Компилятор тут вообще ни при чём.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено fooser , 21-Ноя-19 14:26 
с каких это пор busybox стал гнутым софтом?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено fooser , 21-Ноя-19 14:29 
интересно, если я скомпиляю ведро линукса clang-ом, обвешу systemd, busybox, zsh и прочими негнутыми аналогами системного софта - я ж могу не называть Линукс гну/линуксом?

кстати инетересно подсчитать сколько в современных дистрах осталось гнутого софта.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 15:01 
Ну-ка расскажи нам, как ты ЛёнькоД заставишь работать с busybox и mucl?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 14:30 
Действительно.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 14:32 
А, я думал это ирония, а ты реально поехавший.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено ан , 21-Ноя-19 14:37 
А зачем? Что это в идеале даст? Больше вопрос в целом о настойчивом желании собрать ядро клангом, чем защите CFI.
С переводом лисы на кланг время компиляции уменьшилось примерно в полтора раза, лиса стала пошустрее на старом железе, но по началу вылетала на js менюшках, сейчас вроде вылечили. Но ядро то зачем?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 15:11 
"Мы шлангисты тоже так могём, мы крутые!"

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 15:24 
Хотят перестать зависить от GNU. Android – это Non-GNU Linux.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 18:05 
А зависимость теперь от Apple их не беспокоит? :-) Ворон ворону глаз не выклюет конечно, но по моему вряд ли в этом дело. Скорее верится в энергоэффективность и экономию на оплате электричества, для ДЦ это может быть заметно.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 18:51 
>А зависимость теперь от Apple их не беспокоит?

А нет никакой зависимости от Apple. У GCC рантаймовые компоненты либо под LGPLv3, либо используют хитрые условия про eligible compilation process, а у шланга все пермессивное.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним84701 , 21-Ноя-19 19:40 
> А зависимость теперь от Apple их не беспокоит? :-)

Ну, зависимость WebKit от Apple Гугла как-то не очень остановила ;)


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 24-Ноя-19 17:56 
Ну так сказали же, ворон ворону глаз не выклюет.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 15:46 
Ядро слишком долго компилируется. Они экономят электроэнергию. Корпорации очень беспокоят вопросы эффективности и сохранения природы (по этой же причине они используют угольные электростанции).

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 20:29 
Вот минусуете, а ведь это основной "аргумент" сторонников шланга. :D

И в корпоративных презенташках а ля "зачем нам нужен шланг" тоже видел регулярно.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 24-Ноя-19 17:58 
>сохранения природы
>угольные электростанции

Здесь какое-то противоречие.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 24-Ноя-19 18:02 
>>сохранения природы
>>угольные электростанции
> Здесь какое-то противоречие.

Слишком тонко? Любой бизнес думает в первую очередь о прибылях и пользе для себя. И он совершенно не гнушается использованием ложных посылов, если это нравится обывателю.


"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Ivan_83 , 21-Ноя-19 17:42 
Наверное линуксойдов заело что фряха собирается шлангом без патчей шланга, а линукс нет, вот и починили, как смогли :)

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 24-Ноя-19 18:00 
Мне, как пользователю Linux, пофиг. Главное, что и дальше GCC собиралось, им и буду собирать.

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Вуыкло , 21-Ноя-19 14:50 
Лучше б на Rust переписали

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Аноним , 21-Ноя-19 15:14 
Что на Rust переписать, всё ядро? Лет за сколько тогда?

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено НяшМяш , 21-Ноя-19 16:15 
Для них уже написали идеальную систему, но им всё равно мало... https://www.redox-os.org/

"Экспериментальная поддержка пересборки ядра Linux в Clang с ..."
Отправлено Вуыкло , 21-Ноя-19 17:27 
Это был вовсе не сарказм, тебе не стоит переживать о своем IQ