S>>Тут A>ну причитания Линуса про плохой гцц мы конечно прочитали, а где исходный код-то?
Ну там вобщемто все описано. Новый gcc игнорирует no-red-zone опцию. red-zone — это когда компилятор использует небольшой (128 байт) кусочек стека без перестройки вершины стека. Для ядра операционки это неюзабельно, потому что в любой момент времени выполнение кода может прерваться обработчиком прерывания, которое будет использовать текущий стек совершенно не имея понятия не является ли текущее значение rsp границей стека или же там в red zone перед ним данные важные лежат. И ничего с этим поделать нельзя, кроме как отучить компилятор от такого при помощи no-red-zone. А новый gcc ложит на эту опцию болт, вот Линус и негодуэ.
Как много веселых ребят, и все делают велосипед...
Re[3]: Кто там за новейшие версии компиляторов, а страрьё презирает 2
Здравствуйте, ononim, Вы писали:
S>>>Тут A>>ну причитания Линуса про плохой гцц мы конечно прочитали, а где исходный код-то? O>Ну там вобщемто все описано. Новый gcc игнорирует no-red-zone опцию. red-zone — это когда компилятор использует небольшой (128 байт) кусочек стека без перестройки вершины стека. Для ядра операционки это неюзабельно, потому что в любой момент времени выполнение кода может прерваться обработчиком прерывания, которое будет использовать текущий стек совершенно не имея понятия не является ли текущее значение rsp границей стека или же там в red zone перед ним данные важные лежат. И ничего с этим поделать нельзя, кроме как отучить компилятор от такого при помощи no-red-zone. А новый gcc ложит на эту опцию болт, вот Линус и негодуэ.
если у него в коде UB, компилятор может генерить что хочет.
вобщем-то мы такие истории уже проходили.
я к гцц конечно отношусь плохо, но я догадываюсь что у гцц есть тесты, где тестируется в т.ч. и все флаги компилятора. по этому фраза "компилятор игнорирует флаг" — несколько странна. если бы у них были провалившие тесты, они не зарелизили бы гцц. 4.9.0
хотя недавно вышел 4.9.1, возможно стоит посмотреть его примечания к релизу
In Zen We Trust
Re[4]: Кто там за новейшие версии компиляторов, а страрьё презирает 2
S>>>>Тут A>>>ну причитания Линуса про плохой гцц мы конечно прочитали, а где исходный код-то? O>>Ну там вобщемто все описано. Новый gcc игнорирует no-red-zone опцию. red-zone — это когда компилятор использует небольшой (128 байт) кусочек стека без перестройки вершины стека. Для ядра операционки это неюзабельно, потому что в любой момент времени выполнение кода может прерваться обработчиком прерывания, которое будет использовать текущий стек совершенно не имея понятия не является ли текущее значение rsp границей стека или же там в red zone перед ним данные важные лежат. И ничего с этим поделать нельзя, кроме как отучить компилятор от такого при помощи no-red-zone. А новый gcc ложит на эту опцию болт, вот Линус и негодуэ. A>если у него в коде UB, компилятор может генерить что хочет.
КМК ядерный код невозможно писать строго совместимым со стандартом С. Разве что если переписать MM, шедулер и работу с прерываниями на асме, дублируя этот асм на всех архитектурах...
A>вобщем-то мы такие истории уже проходили. A>я к гцц конечно отношусь плохо, но я догадываюсь что у гцц есть тесты, где тестируется в т.ч. и все флаги компилятора. по этому фраза "компилятор игнорирует флаг" — несколько странна. если бы у них были провалившие тесты, они не зарелизили бы гцц. 4.9.0 A>хотя недавно вышел 4.9.1, возможно стоит посмотреть его примечания к релизу
На сайте gcc.gnu.org какой то обман творится. Там действительно есть 4.9.1, но его Changes указывают на https://gcc.gnu.org/gcc-4.9/changes.html, то есть у 4.9 и 4.9.1 одинаковые changes. Муть какаято.
Как много веселых ребят, и все делают велосипед...
Re[5]: Кто там за новейшие версии компиляторов, а страрьё презирает 2
Здравствуйте, ononim, Вы писали:
A>>хотя недавно вышел 4.9.1, возможно стоит посмотреть его примечания к релизу O>На сайте gcc.gnu.org какой то обман творится. Там действительно есть 4.9.1, но его Changes указывают на https://gcc.gnu.org/gcc-4.9/changes.html, то есть у 4.9 и 4.9.1 одинаковые changes. Муть какаято.
Не одинаковые, а одна страница на весь 4.9 со всеми патчами. Просто поищи на ней 4.9.1 или просто прокрути вниз.
С другими версиями то же самое у них.