さまざまなセクションがプログラム情報と制御情報を保持します。以下の表に示すセクションはシステムで使用されますが、これらのセクションには指定された型と属性が存在します。
表 7–17 ELF 特殊セクション
名前 |
形式 |
属性 |
---|---|---|
.bss |
SHT_NOBITS |
SHF_ALLOC + SHF_WRITE |
.comment |
SHT_PROGBITS |
なし |
.data |
SHT_PROGBITS |
SHF_ALLOC + SHF_WRITE |
.data1 |
SHT_PROGBITS |
SHF_ALLOC + SHF_WRITE |
.dynamic |
SHT_DYNAMIC |
SHF_ALLOC + SHF_WRITE |
.dynstr |
SHT_STRTAB |
SHF_ALLOC |
.dynsym |
SHT_DYNSYM |
SHF_ALLOC |
.fini |
SHT_PROGBITS |
SHF_ALLOC + SHF_EXECINSTR |
.fini_array |
SHT_FINI_ARRAY |
SHF_ALLOC + SHF_WRITE |
.got |
SHT_PROGBITS | |
.hash |
SHT_HASH |
SHF_ALLOC |
.init |
SHT_PROGBITS |
SHF_ALLOC + SHF_EXECINSTR |
.init_array |
SHT_INIT_ARRAY |
SHF_ALLOC + SHF_WRITE |
.interp |
SHT_PROGBITS |
プログラムインタプリタを参照 |
.note |
SHT_NOTE |
なし |
.plt |
SHT_PROGBITS | |
.preinit_array |
SHT_PREINIT_ARRAY |
SHF_ALLOC + SHF_WRITE |
.rela |
SHT_RELA |
なし |
.relname |
SHT_REL |
再配置を参照 |
.relaname |
SHT_RELA |
再配置を参照 |
.rodata |
SHT_PROGBITS |
SHF_ALLOC |
.rodata1 |
SHT_PROGBITS |
SHF_ALLOC |
.shstrtab |
SHT_STRTAB |
なし |
.strtab |
SHT_STRTAB |
後続の .strtab 記述を参照 |
.symtab |
SHT_SYMTAB |
シンボルテーブルを参照 |
.symtab_shndx |
SHT_SYMTAB_SHNDX |
シンボルテーブルを参照 |
.tbss |
SHT_NOBITS |
SHF_ALLOC + SHF_WRITE + SHF_TLS |
.tdata |
SHT_PROGBITS |
SHF_ALLOC + SHF_WRITE + SHF_TLS |
.tdata1 |
SHT_PROGBITS |
SHF_ALLOC + SHF_WRITE + SHF_TLS |
.text |
SHT_PROGBITS |
SHF_ALLOC + SHF_EXECINSTR |
.SUNW_bss |
SHT_NOBITS |
SHF_ALLOC + SHF_WRITE |
.SUNW_heap |
SHT_PROGBITS |
SHF_ALLOC + SHF_WRITE |
.SUNW_move |
SHT_SUNW_move |
SHF_ALLOC |
.SUNW_reloc |
SHT_REL SHT_RELA |
SHF_ALLOC |
.SUNW_syminfo |
SHT_SUNW_syminfo |
SHF_ALLOC |
.SUNW_version |
SHT_SUNW_verdef SHT_SUNW_verneed SHT_SUNW_versym |
SHF_ALLOC |
プログラムのメモリーイメージで使用される初期化されてい ないデータ。システムは、プログラムが実行を開始すると 0 でデータを初期化することになっています。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。
コメント情報 (通常、コンパイルシステムのコンポーネントが使用)。このセクションは、mcs(1)により操作できます。
プログラムのメモリーイメージで使用される、初期化済みのデータ。
動的リンク情報。 詳細は、動的セクションを参照してください。
動的リンクに必要な文字列 (最も一般的には、シンボルテーブルエントリに関連付けられている名前を表す文字列)。
動的リンクシンボルテーブル。詳細は、シンボルテーブルを参照してください。
このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の終了関数で使用される実行可能命令。詳細は、初期設定および終了ルーチンを参照してください。
このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の終了配列で使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。
大域オフセットテーブル。詳細は、大域オフセットテーブル (プロセッサ固有)を参照してください。
シンボルハッシュテーブル。詳細は、ハッシュテーブルを参照してください。
このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の初期化関数で使用される実行可能命令。詳細は、初期設定および終了ルーチンを参照してください。
このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の初期化配列で使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。
プログラムインタプリタのパス名。詳細は、プログラムインタプリタを参照してください。
注釈セクションに記載された形式の情報。
プロシージャのリンクテーブル。プロシージャのリンクテーブル (プロセッサ固有)を参照してください。
このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の初期設定前の配列に使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。
特定のセクションに適用されない再配置情報。このセクションの用途の 1 つは、レジスタの再配置です。詳細は、レジスタシンボルを参照してください。
再配置情報 (詳細は、再配置を参照)。再配置が存在する読み込み可能セグメントがファイルに存在する場合、これらのセクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。慣例により、name は再配置が適用されるセクションの名前になります。したがって、.text の再配置セクションには、通常 .rel.text または .rela.text という名前が存在します。
読み取り専用データ (通常はプロセスイメージの書き込み不可セグメントに使用)。詳細は、プログラムヘッダーを参照してください。
セクション名。
文字列 (最も一般的には、シンボルテーブルエントリに関連付けられている名前を表す文字列)。シンボル文字列テーブルが存在する読み込み可能セグメントがファイルに存在する場合、セクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。
シンボルテーブル (詳細は、シンボルテーブルを参照)。シンボルテーブルが存在する読み込み可能セグメントがファイルに存在する場合、セクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。
このセクションには、.symtab による指定に従い、特別なシンボルテーブルセクションインデックス配列が保持されます。 関連付けられたシンボルテーブルセクションに SHF_ALLOC ビットが含まれる場合、このセクションの属性も SHF_ALLOC ビットを含みます。そうでない場合、このビットはオフになります。
このセクションは、プログラムのメモリーイメージで使用される、初期化されていないスレッド固有データを保持します。データが新しい実行フロー用に具体化されると、システムはデータを 0 で初期化します。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。詳細は、スレッド固有領域 を参照してください。
これらのセクションは、プログラムのメモリーイメージで使用される、初期化されたスレッド固有データを保持します。その内容のコピーは、それぞれ新しい実行フロー用にシステムによって具体化されます。詳細は、スレッド固有領域 を参照してください。
プログラムの「テキスト」すなわち実行可能命令。
プログラムのメモリーイメージで使用される、共有オブジェクトの部分的に初期化されたデータ。データは実行時に初期化されます。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。
dldump(3DL) により作成される動的実行可能ファイルのヒープ。
部分的に初期化されたデータに関する追加情報。詳細は、移動セクションを参照してください。
再配置情報 (詳細は、再配置を参照)。このセクションは再配置セクションが連結されたものであり、個々の再配置レコードに対するより良い参照のローカル性 (局所性) を与えます。再配置レコード自身のオフセットのみが意味があり、したがってセクション sh_info の値は 0 です。
シンボルテーブルの追加情報。詳細は、Syminfo テーブルを参照してください。
バージョン情報。詳細は、バージョン情報を参照してください。
ドット (.) 接頭辞付きのセクション名はシステムにおいて予約されています。これらのセクションの既存の意味が満足できるものであれば、アプリケーションはこれらのセクションを使用できます。アプリケーションは、ドット (.) 接頭辞なしの名前を使用して、システムで予約されたセクションとの競合を回避することができます。オブジェクトファイル形式では、上記リストに記載されていないセクションが定義できます。オブジェクトファイルには、同じ名前を持つ複数のセクションが存在できます。
プロセッサアーキテクチャに対して予約されるセクション名は、アーキテクチャ名の省略形をセクション名の前に入れることで作成されます。セクション名の前に、e_machine に対して使用されるアーキテクチャ名を入れる必要があります。たとえば、.Foo.psect は、FOO アーキテクチャで定義される psect セクションです。
既存の拡張セクションは、従来から使用されている名前をそのまま使用しています。