-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

事前定義マクロ

なし。