STACK 指令はプロセススタックの属性を指定します。
STACK {
FLAGS = segment_flags....;
FLAGS += segment_flags....;
FLAGS -= segment_flags....;
};
FLAGS 属性は、Table 8–3 に記載されている任意の値で構成される空白区切りのリストで、セグメントのアクセス権を指定します。
3 つの形式を使用できます。シンプルな「=」代入演算子は現在のフラグを新しいセットで置き換え、「+=」形式は既存のセットに新規フラグを追加し、「-=」形式は指定されたフラグを既存のセットから削除します。
デフォルトのスタックアクセス権はプラットフォーム ABI によって定義され、プラットフォームによって異なります。ターゲットプラットフォームの値はセグメントフラグ名 STACK を使用して指定します。
一部のプラットフォームでは、デフォルトのアクセス権に EXECUTE を含めることが ABI によって要求されます。EXECUTE が必要とされることはほとんどなく、一般的には潜在的なセキュリティーリスクと見なされます。EXECUTE アクセス権をスタックから削除することをお勧めします。
STACK {
FLAGS -= EXECUTE;
};STACK 指令は出力 ELF オブジェクト内の PT_SUNWSTACK プログラムヘッダーエントリに反映されます。