-fstack-protector (-qstackprotect)
カテゴリー
プラグマ同等物
なし。
目的
スタックを上書きまたは破壊する悪意のある入力データやプログラミング・エラーから保護する。
構文
.- -fno-stack-protector---------------------------. >>-+- -fstack-protector------------------------------+--------->< +- -fstack-protector-all--------------------------+ +- -fstack-protector-strong-----------------------+ '- -fstack-protector --parm ssp-buffer-size--=--N-'
.-nostackprotect----------------------. | .-proc-------. | >>- -q--+-stackprotect----=----+-all--------+-+---------------->< +-size--=--N-+ +-strong-----+ '-warn-------'
デフォルト
-fstack-protector (-qstackprotect) が指定されていない場合は -fno-stack-protector (-qnostackprotect)。
-fstack-protector (-qstackprotect) がサブオプションなしで指定されている場合は -fstack-protector (-qstackprotect=proc)。
パラメーター
- all
- これは、脆弱なオブジェクトが関数に 含まれているかどうかに関係なく、 すべての関数を保護します。
- proc (-qstackprotect のみ)
- バッファー・オーバーフローを防ぐためのコードを提供します。 これは -fstack-protector オプションと同等です。
- size=N (-qstackprotect のみ)、--parm ssp-buffer-size=N (-fstack-protector のみ)
- これは、N バイト以上のサイズを持つ自動配列を含む関数を保護します。-fstack-protector (-qstackprotect) オプションが有効になっているときのデフォルト・サイズは 8 バイトです。
- strong
- これは、ローカル配列定義を持つ、またはローカル・フレーム・アドレスに対する参照を持つ、追加関数を保護します。
- warn (-qstackprotect のみ)
- 関数に含まれる配列のサイズが N バイトより小さい場合に、警告を出します。 これは -Wstack-protector オプションと同等です。-Wstack-protector オプションは、-fstack-protector がアクティブの場合にのみアクティブになります。-Wstack-protector オプションについて詳しくは、GNU Compiler Collection のオンライン資料 (http://gcc.gnu.org/onlinedocs/) を参照してください。
使用法
-fstack-protector (-qstackprotect) は、 脆弱なオブジェクトを持つ関数を スタック破壊から保護するための追加コードを生成します。 実行時のパフォーマンスが低下する可能性があるため、-fstack-protector (-qstackprotect) オプションはデフォルトでは無効になっています。
すべての関数を 保護するためのコードを生成するには、次のコマンドを入力します。
xlc myprogram.c -fstack-protector=all
特定サイズのオブジェクトを持つ関数を保護するためのコードを 生成するには、size= パラメーターにそのオブジェクト・サイズをバイト単位で設定して、次のコマンドを入力します。
xlc myprogram.c -qstackprotect=size=8
事前定義マクロ
なし。
