バージョン依存セクションは、SHT_SUNW_verneed 型で定義されます。 このセクションは、ファイルの動的依存性から要求されるバージョン定義を示すことで、ファイルの動的依存性要求を補足します。依存性にバージョン定義が存在する場合のみ、記録が このセクションにおいて行われます。 このセクションの要素の構造体は、次のとおりです。
typedef struct { Elf32_Half vn_version; Elf32_Half vn_cnt; Elf32_Word vn_file; Elf32_Word vn_aux; Elf32_Word vn_next; } Elf32_Verneed; typedef struct { Elf32_Word vna_hash; Elf32_Half vna_flags; Elf32_Half vna_other; Elf32_Word vna_name; Elf32_Word vna_next; } Elf32_Vernaux; typedef struct { Elf64_Half vn_version; Elf64_Half vn_cnt; Elf64_Word vn_file; Elf64_Word vn_aux; Elf64_Word vn_next; } Elf64_Verneed; typedef struct { Elf64_Word vna_hash; Elf64_Half vna_flags; Elf64_Half vna_other; Elf64_Word vna_name; Elf64_Word vna_next; } Elf64_Vernaux;
この構造体の要素を次に示します。
この構成要素は、構造体自身のバージョンを示します。次の表に、指定可能なバージョンを示します。
表 7-33 ELF バージョン依存構造体のバージョン
名前 |
値 |
意味 |
---|---|---|
VER_NEED_NONE |
0 |
無効バージョン |
VER_NEED_CURRENT |
>=1 |
現在のバージョン |
値 1 は最初のセクション形式を示し、拡張した場合は番号を大きくします。VER_NEED_CURRENT の値は、現在のバージョン番号を示すために必要に応じて変化します。
Elf32_Vernaux 配列の要素数。
ヌル文字で終わっている文字列への文字列テーブルオフセットで、バージョン依存性が存在するファイル名を指定します。この名前は、ファイル内に存在する .dynamic 依存性のどれかに一致します。詳細は、「動的セクション」を参照してください。
この Elf32_Verneed エントリの先頭から、関連付けられているファイル依存性から要求されるバージョン定義の Elf32_Vernaux 配列までのバイトオフセット。少なくとも 1 つのバージョン依存性が存在しなければなりません。追加バージョン依存性は存在することができ、また番号は vn_cnt 値で示されます。
この Elf32_Verneed エントリの先頭から次の Elf32_Verneed エントリまでのバイトオフセット。
バージョン依存性の名前のハッシュ値。この値は、「ハッシュテーブル」に記述されているハッシング機能により生成されます。
バージョン依存性に固有の情報 (次の表を参照)。
表 7-34 ELF バージョン依存構造のフラグ
名前 |
値 |
意味 |
---|---|---|
VER_FLG_WEAK |
0x2 |
ウィークバージョン識別子 |
ウィークバージョン依存性は、ウィークバージョン定義への最初の結び付きを示します。
現在、使用されていません。
ヌル文字で終わる文字列への文字列テーブルオフセット。バージョン依存性の名前を与えます。
この Elf32_Vernaux エントリの先頭から次の Elf32_Vernaux エントリまでのバイトオフセット。