此节由 SHT_SUNW_verdef 类型定义。如果此节存在,则必须同时存在 SHT_SUNW_versym 节。这两种结构在文件中提供符号与版本定义之间的关联。 请参见创建版本定义。此节中的元素具有以下结构:
typedef struct { Elf32_Half vd_version; Elf32_Half vd_flags; Elf32_Half vd_ndx; Elf32_Half vd_cnt; Elf32_Word vd_hash; Elf32_Word vd_aux; Elf32_Word vd_next; } Elf32_Verdef; typedef struct { Elf32_Word vda_name; Elf32_Word vda_next; } Elf32_Verdaux; typedef struct { Elf64_Half vd_version; Elf64_Half vd_flags; Elf64_Half vd_ndx; Elf64_Half vd_cnt; Elf64_Word vd_hash; Elf64_Word vd_aux; Elf64_Word vd_next; } Elf64_Verdef; typedef struct { Elf64_Word vda_name; Elf64_Word vda_next; } Elf64_Verdaux;
此成员标识该结构的版本,如下表中所列。
名称 |
值 |
含义 |
---|---|---|
VER_DEF_NONE |
0 |
无效版本。 |
VER_DEF_CURRENT |
>=1 |
当前版本。 |
值 1 表示原始节格式。扩展要求使用更大数字的新版本。VER_DEF_CURRENT 的值可根据需要进行更改,以反映当前版本号。
此成员包含特定于版本定义的信息,如下表中所列。
名称 |
值 |
含义 |
---|---|---|
VER_FLG_BASE |
0x1 |
文件的版本定义。 |
VER_FLG_WEAK |
0x2 |
弱版本标识符。 |
对文件应用版本定义或符号自动缩减后,基版本定义将始终存在。基版本可为文件保留的符号提供缺省版本。弱版本定义 (weak version definition) 没有与版本关联的符号。 请参见创建弱版本定义 (weak version definition)。
Elf32_Verdaux 数组中的元素数目。
版本定义名称的散列值。该值是通过使用散列表节中介绍的同一散列函数生成的。
从此 Elf32_Verdef 项的开头到版本定义名称的 Elf32_Verdaux 数组的字节偏移。该数组中的第一个元素必须存在。此元素指向该结构定义的版本定义字符串。也可以存在其他元素。元素数目由 vd_cnt 值表示。这些元素表示此版本定义的依赖项。每种依赖项都会具有各自的版本定义结构。
从此 Elf32_Verdef 结构的开头到下一个 Elf32_Verdef 项的字节偏移。
以空字符结尾的字符串的字符串表偏移,用于提供版本定义的名称。
从此 Elf32_Verdaux 项的开头到下一个 Elf32_Verdaux 项的字节偏移。