Неусилитель рифленый

Я хочу скомпилировать рифленый без усиления исходного кода (в частности, я хочу избежать функций * _chk).

Насколько я смог определить, gcc / g ++ делает это с помощью FORTIFY_SOURCE а также -fstack-протектор, и для того, чтобы отключить его, либо -U_FORTIFY_SOURCE или -D_FORTIFY_SOURCE = 0 а также -FNo стек-протектор должен быть использован.

Однако по некоторым причинам это не работает для меня с рифленым. Я изменил файл SConstruct так, чтобы вышеупомянутые определения и ключи были добавлены, и я вижу во время процесса сборки, что они фактически передаются компилятору и компоновщику. Тем не менее, когда я бегу readelf -sW rippled | egrep chkЯ получаю несколько строк, таких как:

     3: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __printf_chk@GLIBC_2.3.4 (2)
38: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __vfprintf_chk@GLIBC_2.3.4 (2)
96: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __sprintf_chk@GLIBC_2.3.4 (2)
100: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __snprintf_chk@GLIBC_2.3.4 (2)
107: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __fread_chk@GLIBC_2.7 (14)

Таким образом, я предполагаю, что проблема не с переключателями, а определяет. Но в таком случае чего мне не хватает? Почему эти символы все еще включены в ELF?

PS: я знаю, что скобки вызовы функций «_chk» являются альтернативой -U_FORTIFY_SOURCE и -fno-stack-protector, но я просто отбрасываю эту опцию, так как я не хочу изменять код рифленого кода (и, однако, это повлияет только на подмножество функций, насколько я могу судить).

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]