版本依赖性节由 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;
此成员标识该结构的版本,如下表中所列。
名称 |
值 |
含义 |
---|---|---|
VER_NEED_NONE |
0 |
无效版本。 |
VER_NEED_CURRENT |
>=1 |
当前版本。 |
值 1 表示原始节格式。扩展要求使用更大数字的新版本。VER_NEED_CURRENT 的值可根据需要进行更改,以反映当前版本号。
Elf32_Vernaux 数组中的元素数目。
以空字符结尾的字符串的字符串表偏移,用于提供版本依赖性的文件名。此名称与文件中找到的 .dynamic 依赖项之一匹配。 请参见动态节。
字节偏移,范围从此 Elf32_Verneed 项的开头到关联文件依赖项所需的版本定义的 Elf32_Vernaux 数组。必须存在至少一种版本依赖性。也可以存在其他版本依赖性,具体数目由 vn_cnt 值表示。
从此 Elf32_Verneed 项的开头到下一个 Elf32_Verneed 项的字节偏移。
版本依赖性名称的散列值。该值是通过使用散列表节中介绍的同一散列函数生成的。
版本依赖性特定信息,如下表中所列。
名称 |
值 |
含义 |
---|---|---|
VER_FLG_WEAK |
0x2 |
弱版本标识符。 |
弱版本依赖性表示与弱版本定义 (weak version definition) 的原始绑定。
目前未使用。
以空字符结尾的字符串的字符串表偏移,用于提供版本依赖性的名称。
从此 Elf32_Vernaux 项的开头到下一个 Elf32_Vernaux 项的字节偏移。