Go to main content
Oracle® Solaris 11.3 リンカーとライブラリガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 

特殊セクション

さまざまなセクションがプログラム情報と制御情報を保持します。次の表に示すセクションはシステムで使用されますが、これらのセクションには指定された型と属性が存在します。

表 24  ELF 特殊セクション
名前
タイプ
属性
.bss
SHT_NOBITS
SHF_ALLOC + SHF_WRITE
.comment
SHT_PROGBITS
なし
.data.data1
SHT_PROGBITS
SHF_ALLOC + SHF_WRITE
.dynamic
SHT_DYNAMIC
SHF_ALLOC + SHF_WRITE
.dynstr
SHT_STRTAB
SHF_ALLOC
.dynsym
SHT_DYNSYM
SHF_ALLOC
.eh_frame_hdr
SHT_AMD64_UNWIND
SHF_ALLOC
.eh_frame
SHT_AMD64_UNWIND
SHF_ALLOC + SHF_WRITE
.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
なし
.lbss
SHT_NOBITS
SHF_ALLOC + SHF_WRITE + SHF_AMD64_LARGE
.ldata.ldata1
SHT_PROGBITS
SHF_ALLOC + SHF_WRITE + SHF_AMD64_LARGE
.lrodata.lrodata1
SHT_PROGBITS
SHF_ALLOC + SHF_AMD64_LARGE
.plt
SHT_PROGBITS
.preinit_array
SHT_PREINIT_ARRAY
SHF_ALLOC + SHF_WRITE
.rela
SHT_RELA
なし
.relname
SHT_REL
再配置セクションを参照してください
.relaname
SHT_RELA
再配置セクションを参照してください
.rodata.rodata1
SHT_PROGBITS
SHF_ALLOC
.shstrtab
SHT_STRTAB
なし
.strtab
SHT_STRTAB
この表のあとの説明を参照してください。
.symtab
SHT_SYMTAB
シンボルテーブルセクションを参照してください
.symtab_shndx
SHT_SYMTAB_SHNDX
シンボルテーブルセクションを参照してください
.tbss
SHT_NOBITS
SHF_ALLOC + SHF_WRITE + SHF_TLS
.tdata.tdata1
SHT_PROGBITS
SHF_ALLOC + SHF_WRITE + SHF_TLS
.text
SHT_PROGBITS
SHF_ALLOC + SHF_EXECINSTR
.SUNW_ancillary
SHT_SUNW_ancillary
なし
.SUNW_bss
SHT_NOBITS
SHF_ALLOC + SHF_WRITE
.SUNW_cap
SHT_SUNW_cap
SHF_ALLOC
.SUNW_capchain
SHT_SUNW_capchain
SHF_ALLOC
.SUNW_capinfo
SHT_SUNW_capinfo
SHF_ALLOC
.SUNW_heap
SHT_PROGBITS
SHF_ALLOC + SHF_WRITE
.SUNW_ldynsym
SHT_SUNW_LDYNSYM
SHF_ALLOC
.SUNW_dynsymsort
SHT_SUNW_symsort
SHF_ALLOC
.SUNW_dymtlssort
SHT_SUNW_tlssort
SHF_ALLOC
.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
.bss

プログラムのメモリーイメージで使用される、初期化されていないデータ。システムは、プログラムが実行を開始すると 0 でデータを初期化することになっています。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。

.comment

コメント情報 (通常、コンパイルシステムのコンポーネントが使用)。このセクションは、mcs(1)により操作できます。

.data.data1

プログラムのメモリーイメージで使用される、初期化済みのデータ。

.dynamic

動的リンク情報。詳細は、動的セクションを参照してください。

.dynstr

動的リンクに必要な文字列 (もっとも一般的には、シンボルテーブルエントリに関連付けられている名前を表す文字列)。

.dynsym

動的リンクシンボルテーブル。詳細は、シンボルテーブルセクションを参照してください。

.eh_frame_hdr.eh_frame

スタックを戻すために使用する呼び出しフレーム情報。

.fini

このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の終了関数で使用される実行可能命令。詳細は、初期設定および終了ルーチンを参照してください。

.fini_array

このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の終了配列に使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。

.got

グローバルオフセットテーブル。詳細は、大域オフセットテーブル (プロセッサ固有)を参照してください。

.hash

シンボルハッシュテーブル。詳細は、ハッシュテーブルセクションを参照してください。

.init

このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の初期化関数で使用される実行可能命令。詳細は、初期設定および終了ルーチンを参照してください。

.init_array

このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の初期化配列に使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。

.interp

プログラムインタプリタのパス名。詳細は、プログラムインタプリタを参照してください。

.lbss

x64 固有の 初期化されていないデータ。このデータは .bss に似ていますが、2G バイトを超えるセクションをサポートする点が異なります。

.ldata.ldata1

x64 固有の初期化済みデータ。このデータは .data に似ていますが、2G バイトを超えるセクションをサポートする点が異なります。

.lrodata.lrodata1

x64 固有の読み取り専用データ。このデータは .rodata に似ていますが、2G バイトを超えるセクションをサポートする点が異なります。

.note

注釈セクションに記載された形式の情報。

.plt

プロシージャーのリンクテーブル。詳細は、プロシージャーのリンクテーブル (プロセッサ固有)を参照してください。

.preinit_array

このセクションを含む実行可能ファイルまたは共有オブジェクトの単一の「初期設定前」の配列に使用される関数ポインタの配列。詳細は、初期設定および終了ルーチンを参照してください。

.rela

特定のセクションに適用されない再配置情報。このセクションの用途の 1 つは、レジスタの再配置です。詳細は、レジスタシンボルを参照してください。

.relname.relaname

再配置情報 (詳細は、再配置セクションを参照)。再配置が存在する読み込み可能セグメントがファイルに存在する場合、これらのセクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。慣例により、name は再配置が適用されるセクションの名前になります。したがって、.text の再配置セクションには、通常 .rel.text または .rela.text という名前が存在します。

.rodata.rodata1

読み取り専用データ (通常はプロセスイメージの書き込み不可セグメントに使用)。詳細は、プログラムヘッダーを参照してください。

.shstrtab

セクション名。

.strtab

文字列。通常は、シンボルテーブルエントリに関連付けられた名前を表す文字列です。シンボル文字列テーブルが存在する読み込み可能セグメントがファイルに存在する場合、セクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。

.symtab

シンボルテーブル (詳細は、シンボルテーブルセクションを参照)。シンボルテーブルが存在する読み込み可能セグメントがファイルに存在する場合、セクションの属性として SHF_ALLOC ビットがオンになります。そうでない場合、このビットはオフになります。

.symtab_shndx

このセクションには、.symtab による指定に従い、特別なシンボルテーブルセクションインデックス配列が保持されます。関連付けられたシンボルテーブルセクションに SHF_ALLOC ビットが含まれる場合、このセクションの属性も SHF_ALLOC ビットを含みます。そうでない場合、このビットはオフになります。

.tbss

このセクションには、プログラムのメモリーイメージで使用される、初期化されていないスレッド固有データが格納されます。データが新しい実行フロー用に具体化されると、システムはデータを 0 で初期化します。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。詳細は、Chapter 15, スレッド固有ストレージ (TLS)を参照してください。

.tdata.tdata1

これらのセクションは、プログラムのメモリーイメージで使用される、初期化されたスレッド固有データを保持します。その内容のコピーは、それぞれ新しい実行フロー用にシステムによって具体化されます。詳細は、Chapter 15, スレッド固有ストレージ (TLS)を参照してください。

.text

プログラムの「テキスト」すなわち実行可能命令。

.SUNW_ancillary

補助グループの情報。詳細は、補助セクションを参照してください。

.SUNW_bss

プログラムのメモリーイメージで使用される、共有オブジェクト用の一部初期化されたデータ。データは実行時に初期化されます。このセクションは、セクション型 SHT_NOBITS で示しているとおり、ファイル領域を占めません。

.SUNW_cap

機能要件。詳細については、機能セクションを参照してください。

.SUNW_capchain

機能連鎖テーブル。詳細については、機能セクションを参照してください。

.SUNW_capinfo

機能シンボル情報。詳細については、機能セクションを参照してください。

.SUNW_heap

dldump(3C)により作成される動的実行可能ファイルのヒープ

.SUNW_dynsymsort

.SUNW_ldynsym.dynsym の結合シンボルテーブル内のシンボルへのインデックスの配列。インデックスは、アドレスの昇順にシンボルを参照するようにソートされます。変数を表現しないシンボルまたは関数を表現しないシンボルは取り込まれません。大域シンボルとウィークシンボルが冗長な場合には、ウィークシンボルのみが残ります。詳細は、シンボルソートセクションを参照してください。

.SUNW_dyntlssort

.SUNW_ldynsym.dynsym の結合シンボルテーブル内のスレッド固有ストレージシンボルへのインデックスの配列。インデックスは、オフセットの昇順にシンボルを参照するようにソートされます。TLS 変数を表現しないシンボルは取り込まれません。大域シンボルとウィークシンボルが冗長な場合には、ウィークシンボルのみが残ります。詳細は、シンボルソートセクションを参照してください。

.SUNW_ldynsym

.dynsym セクションを拡張します。このセクションには、完全な .symtab セクションを使用できない状況で使用される局所関数シンボルが含まれます。リンカーは常に、.SUNW_ldynsym セクションのデータを .dynsym セクションの直前に並べて配置します。両方のセクションは常に同じ .dynstr 文字列テーブルセクションを使用します。この配置と構成により、両方のシンボルテーブルを 1 つの大きなシンボルテーブルとして処理することができます。シンボルテーブルセクションを参照してください。

.SUNW_move

部分的に初期化されたデータに関する追加情報。詳細は、移動セクションを参照してください。

.SUNW_reloc

再配置情報 (詳細は、再配置セクションを参照)。このセクションは再配置セクションが連結されたものであり、個々の再配置レコードに対するより良い参照のローカル性 (局所性) を与えます。再配置レコードのオフセットのみが意味があり、したがってセクション sh_info の値は 0 です。

.SUNW_syminfo

シンボルテーブルの追加情報。詳細は、Syminfo テーブルセクションを参照してください。

.SUNW_version

バージョン情報。詳細は、バージョン管理セクションを参照してください。

ドット (.) 接頭辞付きのセクション名は、システムで予約されています。これらのセクションの既存の意味が満足できるものであれば、アプリケーションはこれらのセクションを使用できます。アプリケーションは、ドット (.) 接頭辞なしの名前を使用して、システムで予約されたセクションとの競合を回避することができます。オブジェクトファイル形式では、予約されていないセクションを定義できます。オブジェクトファイルには、同じ名前を持つ複数のセクションが存在できます。

プロセッサアーキテクチャー用に予約されるセクション名は、アーキテクチャー名の省略形をセクション名の前に入れることで作成されます。セクション名の前に、e_machine に対して使用されるアーキテクチャー名を入れる必要があります。たとえば、.Foo.psect は、FOO アーキテクチャーで定義される psect セクションです。

既存の拡張セクションは、従来から使用されている名前をそのまま使用しています。