リンカーとライブラリ

バージョン依存セクション

このセクションは、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;
vn_version

この構成要素は、構造体自身のバージョンを示します。

表 7-34 バージョン依存構造体のバージョン

名前 

値 

意味 

VER_NEED_NONE

0

無効バージョン 

VER_NEED_CURRENT

>=1

現在のバージョン 

値 1 は最初のセクション形式を示し、拡張した場合は番号を大きくします。VER_NEED_CURRENT の値は、現在のバージョン番号を示すために必要に応じて変化します。

vn_cnt

この構成要素は、Elf32_Vernaux 配列の要素数を示します。

vn_file

この構成要素は、空文字で終わっている文字列への文字列テーブルオフセットを保持し、バージョン依存性が存在するファイル名を与えます。この名前は、ファイルに存在する .dynamic 依存性 (「動的セクション」を参照) のどれかに一致します。

vn_aux

この構成要素は、この Elf32_Verneed エントリの先頭から、関連付けられているファイル依存性から要求されるバージョン定義の Elf32_Vernaux 配列までのバイトオフセットを保持します。少なくとも 1 つのバージョン依存性が存在しなければなりません。追加バージョン依存性は存在することができ、また番号は vn_cnt 値で示されます。

vn_next

この構成要素は、この Elf32_Verneed エントリの先頭から次の Elf32_Verneed エントリまでのバイトオフセットを保持します。

vna_hash

この構成要素は、バージョン依存性の名前のハッシュ値を保持します (この値は、「ハッシュテーブル」に記述されているハッシュ関数で生成されます)。

vna_flags

この構成要素は、バージョン依存性に固有の情報を保持します。

表 7-35 バージョン依存構造のフラグ

名前 

値 

意味 

VER_FLG_WEAK

0x2

ウィークバージョン識別子 

ウィークバージョン依存性は、ウィークバージョン定義への最初の結び付きを示します。詳細は、「バージョン定義の作成」を参照してください。

vna_other

この構成要素は現在、使用されていません。

vna_name

この構成要素は、空文字で終わっている文字列への文字列テーブルオフセットを保持し、バージョン依存性の名前を与えます。

vna_next

この構成要素は、この Elf32_Vernaux エントリの先頭から次の Elf32_Vernaux エントリまでのバイトオフセットを保持します。