/SECTION (セクションの属性の指定)

/SECTION:name,[[!]{D|E|K|P|R|S|W}][,ALIGN=number]

解説

/SECTION オプションを指定すると、セクションの属性が変更され、そのセクションの .obj ファイルがコンパイルされたときにその属性がオーバーライドされます。

実行可能 (PE) ファイルの "セクション" は、コードまたはデータのいずれかを含む、名前付きの連続したメモリのブロックです。 一部のセクションには、プログラムで宣言して直接使用するコードまたはデータが含まれています。 その他のデータ セクションは、リンカーおよびライブラリ マネージャー (LIB) によって自動的に作成され、オペレーティング システムにとって重要な情報が含まれています。 詳細については、PE 形式に関するページを参照してください。

コロン (:) とセクションの名前 name を指定します。 name では大文字と小文字が区別されます。

次の名前は標準名と競合するため、使用しないでください。 たとえば、.sdata は RISC プラットフォームで使用されます。

  • .arch

  • .bss

  • .data

  • .edata

  • .idata

  • .pdata

  • .rdata

  • .reloc

  • .rsrc

  • .sbss

  • .sdata

  • .srdata

  • .text

  • .xdata

セクションに 1 つ以上の属性を指定します。 以下に示す属性文字では、大文字と小文字は区別されません。 セクションに含めるすべての属性を指定する必要があります。 属性文字を省略すると、その属性ビットはオフになります。 RW、または E を指定しない場合、既存の読み取り、書き込み、実行可能状態は変更されません。

属性を否定するには、その文字の前に感嘆符 (!) を付けます。 属性文字の意味を次の表に示します。

文字 Attribute 意味
E 実行 セクションが実行可能である
R 読み込み データの読み取り操作を有効にする
W 書き込み データの書き込み操作を有効にする
S 共有済み イメージを読み込むすべてのプロセス間でセクションを共有する
D 破棄可能 セクションを破棄可能としてマークする
K キャッシュ可能 セクションをキャッシュ不可としてマークする
P ページング可能 セクションをページング不可としてマークする

KP は、それらに対応するセクション フラグが負の意味で使用されるという意味で通常とは異なります。 そのいずれか 1 つを /SECTION:.text,K オプションを使用して .text セクションに指定する場合、/HEADERS オプションを指定して DUMPBIN を実行するときとセクション フラグに差異はありません。そのセクションは既に暗黙的にキャッシュされています。 既定値を削除するには、代わりに /SECTION:.text,!K を指定します。 DUMPBIN を指定すると、"Not Cached" などのセクションの特性が明らかになります。

ERW が設定されていない PE ファイル内のセクションは、おそらく無効です。

ALIGN=number引数を使用すると、特定のセクションの配置値を指定できます。 number引数はバイト単位で、2 の累乗である必要があります。 詳細については、/ALIGNを参照してください。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。

  2. Configuration Properties>Linker>General プロパティ ページを選択します。

  3. Specify Section Attributes プロパティを変更します。 [OK] または [適用] を選択して、変更内容を保存します。

このリンカーをコードから設定するには

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション