Symbol definitions are contained in the special section .gnu.version_r which has a section type of SHT_GNU_verneed. The number of entries in this section is contained in the DT_VERNEEDNUM entry of the Dynamic Section. The sh_link member of the section header points to the section that contains the strings referenced by this section.
Figure 6-3. Version Needed Entries
typedef struct { Elfxx_Half vn_version; Elfxx_Half vn_cnt; Elfxx_Word vn_file; Elfxx_Word vn_aux; Elfxx_Word vn_next; } Elfxx_Verneed; |
Version of structure. This value is currently set to 1, and will be reset if the versioning implementation is incompatibly altered.
Number of associated verneed array entries.
Offset to the file name string in the section header, in bytes.
Offset to a corresponding entry in the vernaux array, in bytes.
Offset to the next verneed entry, in bytes.
Figure 6-4. Version Needed Auxiliary Entries
typedef struct { Elfxx_Word vna_hash; Elfxx_Half vna_flags; Elfxx_Half vna_other; Elfxx_Word vna_name; Elfxx_Word vna_next; } Elfxx_Vernaux; |
Dependency name hash value (ELF hash function).
Dependency information flag bitmask.
Object file version identifier used in the .gnu.version symbol version array. Bit number 15 controls whether or not the object is hidden; if this bit is set, the object cannot be used and the static linker will ignore the symbol's presence in the object.
Offset to the dependency name string in the section header, in bytes.
Offset to the next vernaux entry, in bytes.