LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Ядро Linux на Си и UB в нём нет.

Linux разваливается в хлам если не останавливать clang в попытках оптимизировать код.

Именно поэтому Linux собирается с

-fno-strict-aliasing
-fno-delete-null-pointer-checks
-fno-allow-store-data-races
-fno-strict-overflow

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L560

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L809

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L824

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L993z

Как минимум эти 4 флага, это оптимизации, которые отключены, потому что Linux разваливается если их включить и разрабы Linux знают об этом и просто не способны избавиться от UB в их коде.

А с этими флагами и примеры UB из этой ветки работают ожидаемо :)

Исправление fsb4000, :

Ядро Linux на Си и UB в нём нет.

Linux разваливается в хлам если не останавливать clang в попытках оптимизировать код.

Именно поэтому Linux собирается с

-fno-strict-aliasing
-fno-delete-null-pointer-checks
-fno-allow-store-data-races
-fno-strict-overflow

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L560

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L809

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L824

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L993z

Как минимум эти 4 флага, это оптимизации, которые отключены, потому что Linux разваливается если их включить и разрабы Linux знают об этом и просто не способны избавиться от UB в их коде.

Исходная версия fsb4000, :

Ядро Linux на Си и UB в нём нет.

Linux разваливается в хлам если не останавливать clang.

Именно поэтому Linux собирается с

-fno-strict-aliasing
-fno-delete-null-pointer-checks
-fno-allow-store-data-races
-fno-strict-overflow

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L560

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L809

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L824

https://github.com/torvalds/linux/blob/6098d87eaf31f48153c984e2adadf14762520a87/Makefile#L993z

Как минимум эти 4 флага, это оптимизации, которые отключены, потому что Linux разваливается если их включить и разрабы Linux знают об этом и просто не способны избавиться от UB в их коде.