Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

版本依赖性节

版本依赖性节由 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

此成员标识该结构的版本,如下表中所列。

名称
含义
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 数组。必须存在至少一种版本依赖性。也可以存在其他版本依赖性,具体数目由 vn_cnt 值表示。

vn_next

从此 Elf32_Verneed 项的开头到下一个 Elf32_Verneed 项的字节偏移。

vna_hash

版本依赖性名称的散列值。该值是通过使用散列表节中介绍的同一散列函数生成的。

vna_flags

版本依赖性特定信息,如下表中所列。

名称
含义
VER_FLG_WEAK
0x2
弱版本标识符。
VER_FLG_INFO
0x4
SHT_SUNW_versym 引用用于提供信息,在运行时无需进行验证。

弱版本依赖性表示与弱版本定义 (weak version definition) 的原始绑定。

vna_other

如果为非零,则会向此依赖项版本指定版本索引。此索引用于在 SHT_SUNW_versym 内向此版本指定全局符号引用。

在 Oracle Solaris 10 发行版及更低 Solaris 版本中,不向依赖项版本指定版本符号索引。在这些目标文件中,vna_other 的值为 0

vna_name

以空字符结尾的字符串的字符串表偏移,用于提供版本依赖性的名称。

vna_next

从此 Elf32_Vernaux 项的开头到下一个 Elf32_Vernaux 项的字节偏移。