Sun Microsystems, Inc.
spacerspacer
spacer www.sun.com docs.sun.com |
spacer
black dot
 
 
7.  Object File Format File Format Versioning Information Version Definition Section  Previous   Contents   Next 
   
 

The elements of this structure are:

vd_version

This member identifies the version of the structure itself, as listed in the following table.

Table 7-30 ELF Version Definition Structure Versions

Name

Value

Meaning

VER_DEF_NONE

0

Invalid version.

VER_DEF_CURRENT

>=1

Current version.

The value 1 signifies the original section format. Extensions will create new versions with higher numbers. The value of VER_DEF_CURRENT changes as necessary to reflect the current version number.

vd_flags

This member holds version definition-specific information, as listed in the following table.

Table 7-31 ELF Version Definition Section Flags

Name

Value

Meaning

VER_FLG_BASE

0x1

Version definition of the file itself.

VER_FLG_WEAK

0x2

Weak version identifier.

The base version definition is always present when version definitions, or symbol auto-reduction, have been applied to the file. The base version provides a default version for the files reserved symbols. A weak version definition has no symbols associated with it. See "Creating a Weak Version Definition".

vd_ndx

The version index. Each version definition has a unique index that is used to associate SHT_SUNW_versym entries to the appropriate version definition.

vd_cnt

The number of elements in the Elf32_Verdaux array.

vd_hash

The hash value of the version definition name. This value is generated using the same hashing function described in "Hash Table".

vd_aux

The byte offset from the start of this Elf32_Verdef entry to the Elf32_Verdaux array of version definition names. The first element of the array must exist. It points to the version definition string this structure defines. Additional elements can be present. The number of elements is indicated by the vd_cnt value. These elements represent the dependencies of this version definition. Each of these dependencies will have its own version definition structure.

vd_next

The byte offset from the start of this Elf32_Verdef structure to the next Elf32_Verdef entry.

vda_name

The string table offset to a null-terminated string, giving the name of the version definition.

vda_next

The byte offset from the start of this Elf32_Verdaux entry to the next Elf32_Verdaux entry.

Version Symbol Section

The version symbol section is defined by the type SHT_SUNW_versym, and consists of an array of elements having the following structure:

typedef Elf32_Half      Elf32_Versym;
typedef Elf64_Half      Elf64_Versym;

The number of elements of the array must equal the number of symbol table entries contained in the associated symbol table. This number is determined by the section's sh_link value. Each element of the array contains a single index that can have the values shown in the following table.

Table 7-32 ELF Version Dependency Indexes

Name

Value

Meaning

VER_NDX_LOCAL

0

Symbol has local scope.

VER_NDX_GLOBAL

1

Symbol has global scope (assigned to base version definition).

 

>1

Symbol has global scope (assigned to user-defined version definition).

Any index values greater than VER_NDX_GLOBAL must correspond to the vd_ndx value of an entry in the SHT_SUNW_verdef section. If no index values greater than VER_NDX_GLOBAL exist, then no SHT_SUNW_verdef section need be present.

Version Dependency Section

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:

vn_version

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.

vn_cnt

The number of elements in the Elf32_Vernaux array.

vn_file

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".

vn_aux

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.

vn_next

The byte offset, from the start of this Elf32_Verneed entry, to the next Elf32_Verneed entry.

vna_hash

The hash value of the version dependency name. This value is generated using the same hashing function described in "Hash Table".

vna_flags

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.

vna_other

Presently unused.

vna_name

The string table offset to a null-terminated string, giving the name of the version dependency.

vna_next

The byte offset from the start of this Elf32_Vernaux entry to the next Elf32_Vernaux entry.

 
 
 
  Previous   Contents   Next