このセクションには、Elf32_Syminfo 型または Elf64_Syminfo 型の複数のエントリが存在します。関連付けられているシンボルテーブルの各エントリ (sh_link) の 「.SUNW_syminfo」セクションには、1 つのエントリが存在します。このセクションがオブジェクトに存在している場合、関連付けられているシンボルテーブルからシンボルインデックスを取り出し、このシンボルインデックスを使ってこのセクションに存在する対応する Elf32_Syminfo または Elf64_Syminfo エントリを見つけることで、追加シンボル情報を見つけます。関連付けられているシンボルテーブルと、Syminfo テーブルには、必ず同じ数のエントリが存在します。インデックス 0 は、Syminfo テーブルの現バージョン (SYMINFO_CURRENT) を格納するために使用されます。シンボルテーブルエントリ 0 は必ず UNDEF シンボルテーブルエントリに対して予約されるので、矛盾は発生しません。
Elf32_Symfino エントリの形式は、以下のとおりです。
typedef struct { Elf32_Half si_boundto; /* direct bindings - symbol bound to */ Elf32_Half si_flags; /* per symbol flags */ } Elf32_Syminfo; typedef struct { Elf64_Half si_boundto; /* direct bindings - symbol bound to */ Elf64_Half si_flags; /* per symbol flags */ } Elf64_Syminfo; |
これはビットフィールドであり、以下のフラグを設定できます。
表 7-24 Syminfo フラグ
名前 |
値 |
意味 |
---|---|---|
SYMINFO_FLG_DIRECT |
0x01 |
このシンボルは、オブジェクトに直接結び付けられる |
SYMINFO_FLG_COPY |
0x02 |
このシンボルは、コピー - 再配置を行った結果 |
sh_info フィールドで示される .dynamic セクションのエントリへのインデックス。このエントリは、DT_* (DT_NEEDED) エントリ (Syminfo エントリに関連付けられている動的オブジェクトを示す) を示します。次の 2 つのエントリは、si_boundto に対して予約されます。
表 7-25 si_boundto 予約値
名前 |
値 |
意味 |
---|---|---|
SYMINFO_BT_SELF |
0xffff |
自己に結び付けられるシンボル |
SYMINFO_BT_PARENT |
0xfffe |
親に結合されるシンボル。親は、この動的オブジェクトの読み込みを発生させる最初のオブジェクト |