Я пытаюсь настроить CI-тесты на технологию потока управления, чтобы гарантировать, что наш встроенный ASM работает как ожидается с теневыми стеками. Эта функция называется Control-flow Enforcement Technology (CET) на процессорах Intel, и GCC предлагает варианты ее включения через -fcf-protection=full
, -mcet
и friends.
Я выполнил быстрый тест с использованием Fedora 26/GCC 7.2 на 7-м поколении Core i5. Это привело к провалу, что не было удивительно:
$ CXXFLAGS="-DNDEBUG -g2 -O3 -fcf-protection=full -mcet" make
g++: error: unrecognized command line option ‘-fcf-protection=full’; did you mean ‘-fstack-protector-all’?
g++: error: unrecognized command line option ‘-mcet’; did you mean ‘-maes’?
make: *** [GNUmakefile:1057: cryptlib.o] Error 1
Я посетил Что означают флаги в /proc /cpuinfo? в Unix и Linux Stack Exchange я не видел флагов cet
или ibt
.
Мой первый вопрос: какие процессоры Intel поддерживают CET?
Мой второй вопрос: требует ли CET поддержки ядра? Если так, то какие ядра Linux поддерживают это?