Version Requirements

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.