Когда и как использовать функцию защиты стека GCC?

Я включил-Wstack-protector предупреждение при компиляции проекта I 'я работаю (коммерческий многоплатформенный игровой движок C ++, компилируемый на Mac OS X 10.6 с GCC 4.2). Этот флаг предупреждает о функциях, которые не будут защищены от разрушения стека, даже если-fstack-protector включен. GCC выдает некоторые предупреждения при сборке проекта:

не защищающая функция: нет буфера длиной не менее 8 байт

не защищает локальные переменные: буфер переменной длины

Для первого предупреждения я обнаружил, что можно настроить минимальный размер, который должен иметь буфер при использовании в функции, чтобы эта функция была защищена от разрушения стека:--param ssp-buffer-size=X может использоваться, где X по умолчанию 8 и может быть всего 1.

Для второго предупреждения я могуподавить его появление, если я не перестану использовать.-Wstack-protector

Когда следует-fstack-protector использоваться? (как, например, все время во время разработки или просто при обнаружении ошибок?)Когда следует-fstack-protector-all использоваться?Что такое-Wstack-protector рассказывая мне? Предлагает ли я уменьшить минимальный размер буфера?Если это так, есть ли недостатки в размере до 1?Похоже, что-Wstack-protector это не тот флаг, который вы хотите включить постоянно, если вы хотите сборку без предупреждений. Это правильно?

Ответы на вопрос(2)

Ваш ответ на вопрос