The version dependency section is defined by the type SHT_SUNW_verneed. This section complements the dynamic dependency requirements of the file by indicating the version definitions required from these dependencies.A recording is made in this section only if a dependency contains version definitions. Elements of this section have the following structure:
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;
The elements of this structure are:
This member identifies the version of the structure itself, as listed in the following table.
Table 7-33 ELF Version Dependency Structure Versions
Name |
Value |
Meaning |
---|---|---|
VER_NEED_NONE |
0 |
Invalid version. |
VER_NEED_CURRENT |
>=1 |
Current version. |
The value 1 signifies the original section format. Extensions will create new versions with higher numbers. The value of VER_NEED_CURRENT changes as necessary to reflect the current version number.
The number of elements in the Elf32_Vernaux array.
The string table offset to a null-terminated string, that provides the file name having a version dependency. This name will match one of the .dynamic dependencies found in the file. See "Dynamic Section".
The byte offset, from the start of this Elf32_Verneed entry, to the Elf32_Vernaux array of version definitions required from the associated file dependency. There must exist at least one version dependency. Additional version dependencies can be present, the number being indicated by the vn_cnt value.
The byte offset, from the start of this Elf32_Verneed entry, to the next Elf32_Verneed entry.
The hash value of the version dependency name. This value is generated using the same hashing function described in "Hash Table".
Version dependency specific information, as listed in the following table.
Table 7-34 ELF Version Dependency Structure Flags
Name |
Value |
Meaning |
---|---|---|
VER_FLG_WEAK |
0x2 |
Weak version identifier. |
A weak version dependency indicates an original binding to a weak version definition.
Presently unused.
The string table offset to a null-terminated string, giving the name of the version dependency.
The byte offset from the start of this Elf32_Vernaux entry to the next Elf32_Vernaux entry.