Dynamic Section

If an object file participates in dynamic linking, its program header table will have an element of type PT_DYNAMIC. This segment contains the .dynamic section. A special symbol, _DYNAMIC, labels the section, which contains an array of the following structures. See sys/link.h.

typedef struct {
        Elf32_Sword d_tag;
        union {
                Elf32_Word      d_val;
                Elf32_Addr      d_ptr;
                Elf32_Off       d_off;
        } d_un;
} Elf32_Dyn;

typedef struct {
        Elf64_Xword d_tag;
        union {
                Elf64_Xword     d_val;
                Elf64_Addr      d_ptr;
        } d_un;
} Elf64_Dyn;

For each object with this type, d_tag controls the interpretation of d_un.

d_val

These objects represent integer values with various interpretations.

d_ptr

These objects represent program virtual addresses. A file's virtual addresses might not match the memory virtual addresses during execution. When interpreting addresses contained in the dynamic structure, the runtime linker computes actual addresses, based on the original file value and the memory base address. For consistency, files do not contain relocation entries to correct addresses in the dynamic structure.

In general, the value of each dynamic tag determines the interpretation of the d_un union. This convention provides for simpler interpretation of dynamic tags by third party tools. A tag whose value is an even number indicates a dynamic section entry that uses d_ptr. A tag whose value is an odd number indicates a dynamic section entry that uses d_val, or that the tag uses neither d_ptr nor d_val. Tags with values in the following special compatibility ranges do not follow these rules. Third party tools must handle these exception ranges explicitly on an item by item basis.

  • Tags whose values are less than the special value DT_ENCODING.

  • Tags with values that fall between DT_LOOS and DT_SUNW_ENCODING.

  • Tags with values that fall between DT_HIOS and DT_LOPROC.

The following table summarizes the tag requirements for dynamic objects. If a tag is marked mandatory, then the dynamic linking array must have an entry of that type. Likewise, optional means an entry for the tag can appear but is not required.

Table 15-8 ELF Dynamic Array Tags

Name Value d_un Executable Shared Object

DT_NULL

0

Ignored

Mandatory

Mandatory

DT_NEEDED

1

d_val

Optional

Optional

DT_PLTRELSZ

2

d_val

Optional

Optional

DT_PLTGOT

3

d_ptr

Optional

Optional

DT_HASH

4

d_ptr

Mandatory

Mandatory

DT_STRTAB

5

d_ptr

Mandatory

Mandatory

DT_SYMTAB

6

d_ptr

Mandatory

Mandatory

DT_RELA

7

d_ptr

Mandatory

Optional

DT_RELASZ

8

d_val

Mandatory

Optional

DT_RELAENT

9

d_val

Mandatory

Optional

DT_STRSZ

10

d_val

Mandatory

Mandatory

DT_SYMENT

11

d_val

Mandatory

Mandatory

DT_INIT

12

d_ptr

Optional

Optional

DT_FINI

13

d_ptr

Optional

Optional

DT_SONAME

14

d_val

Ignored

Optional

DT_RPATH

15

d_val

Optional

Optional

DT_SYMBOLIC

16

Ignored

Ignored

Optional

DT_REL

17

d_ptr

Mandatory

Optional

DT_RELSZ

18

d_val

Mandatory

Optional

DT_RELENT

19

d_val

Mandatory

Optional

DT_PLTREL

20

d_val

Optional

Optional

DT_DEBUG

21

d_ptr

Optional

Ignored

DT_TEXTREL

22

Ignored

Optional

Optional

DT_JMPREL

23

d_ptr

Optional

Optional

DT_BIND_NOW

24

Ignored

Optional

Optional

DT_INIT_ARRAY

25

d_ptr

Optional

Optional

DT_FINI_ARRAY

26

d_ptr

Optional

Optional

DT_INIT_ARRAYSZ

27

d_val

Optional

Optional

DT_FINI_ARRAYSZ

28

d_val

Optional

Optional

DT_RUNPATH

29

d_val

Optional

Optional

DT_FLAGS

30

d_val

Optional

Optional

DT_ENCODING

32

Unspecified

Unspecified

Unspecified

DT_PREINIT_ARRAY

32

d_ptr

Optional

Ignored

DT_PREINIT_ARRAYSZ

33

d_val

Optional

Ignored

DT_SYMTAB_SHNDX

34

d_ptr

Optional

Optional

DT_LOOS

0x6000000d

Unspecified

Unspecified

Unspecified

DT_SUNW_AUXILIARY

0x6000000d

d_val

Unspecified

Optional

DT_SUNW_RTLDINF

0x6000000e

d_ptr

Optional

Optional

DT_SUNW_FILTER

0x6000000f

d_val

Unspecified

Optional

DT_SUNW_CAP

0x60000010

d_ptr

Optional

Optional

DT_SUNW_SYMTAB

0x60000011

d_ptr

Optional

Optional

DT_SUNW_SYMSZ

0x60000012

d_val

Optional

Optional

DT_SUNW_ENCODING

0x60000013

Unspecified

Unspecified

Unspecified

DT_SUNW_SORTENT

0x60000013

d_val

Optional

Optional

DT_SUNW_SYMSORT

0x60000014

d_ptr

Optional

Optional

DT_SUNW_SYMSORTSZ

0x60000015

d_val

Optional

Optional

DT_SUNW_TLSSORT

0x60000016

d_ptr

Optional

Optional

DT_SUNW_TLSSORTSZ

0x60000017

d_val

Optional

Optional

DT_SUNW_CAPINFO

0x60000018

d_ptr

Optional

Optional

DT_SUNW_STRPAD

0x60000019

d_val

Optional

Optional

DT_SUNW_CAPCHAIN

0x6000001a

d_ptr

Optional

Optional

DT_SUNW_LDMACH

0x6000001b

d_val

Optional

Optional

DT_SUNW_SYMTAB_SHNDX

0x6000001c

d_ptr

Optional

Optional

DT_SUNW_CAPCHAINENT

0x6000001d

d_val

Optional

Optional

DT_SUNW_DEFERRED

0x6000001e

d_val

Optional

Optional

DT_SUNW_CAPCHAINSZ

0x6000001f

d_val

Optional

Optional

DT_SUNW_PHNAME

0x60000020

d_ptr

Optional

Optional

DT_SUNW_PARENT

0x60000021

d_val

Optional

Optional

DT_SUNW_SX_ASLR

0x60000023

d_val

Optional

Ignored

DT_SUNW_RELAX

0x60000025

d_val

Optional

Optional

DT_SUNW_KMOD

0x60000027

d_val

Ignored

Ignored

DT_SUNW_SX_NXHEAP

0x60000029

d_val

Optional

Ignored

DT_SUNW_SX_NXSTACK

0x6000002b

d_val

Optional

Ignored

DT_SUNW_SX_ADIHEAP

0x6000002d

d_val

Optional

Ignored

DT_SUNW_SX_ADISTACK

0x6000002f

d_val

Optional

Ignored

DT_SUNW_SX_SSBD

0x60000031

d_val

Optional

Ignored

DT_SUNW_SYMNSORT

0x60000032

d_ptr

Optional

Optional

DT_SUNW_SYMNSORTSZ

0x60000033

d_val

Optional

Optional

DT_HIOS

0x6ffff000

Unspecified

Unspecified

Unspecified

DT_VALRNGLO

0x6ffffd00

Unspecified

Unspecified

Unspecified

DT_CHECKSUM

0x6ffffdf8

d_val

Optional

Optional

DT_PLTPADSZ

0x6ffffdf9

d_val

Optional

Optional

DT_MOVEENT

0x6ffffdfa

d_val

Optional

Optional

DT_MOVESZ

0x6ffffdfb

d_val

Optional

Optional

DT_POSFLAG_1

0x6ffffdfd

d_val

Optional

Optional

DT_SYMINSZ

0x6ffffdfe

d_val

Optional

Optional

DT_SYMINENT

0x6ffffdff

d_val

Optional

Optional

DT_VALRNGHI

0x6ffffdff

Unspecified

Unspecified

Unspecified

DT_ADDRRNGLO

0x6ffffe00

Unspecified

Unspecified

Unspecified

DT_CONFIG

0x6ffffefa

d_val

Optional

Optional

DT_DEPAUDIT

0x6ffffefb

d_val

Optional

Optional

DT_AUDIT

0x6ffffefc

d_val

Optional

Optional

DT_PLTPAD

0x6ffffefd

d_ptr

Optional

Optional

DT_MOVETAB

0x6ffffefe

d_ptr

Optional

Optional

DT_SYMINFO

0x6ffffeff

d_ptr

Optional

Optional

DT_ADDRRNGHI

0x6ffffeff

Unspecified

Unspecified

Unspecified

DT_VERSYM

0x6ffffff0

d_ptr

Optional

Optional

DT_RELACOUNT

0x6ffffff9

d_val

Optional

Optional

DT_RELCOUNT

0x6ffffffa

d_val

Optional

Optional

DT_FLAGS_1

0x6ffffffb

d_val

Optional

Optional

DT_VERDEF

0x6ffffffc

d_ptr

Optional

Optional

DT_VERDEFNUM

0x6ffffffd

d_val

Optional

Optional

DT_VERNEED

0x6ffffffe

d_ptr

Optional

Optional

DT_VERNEEDNUM

0x6fffffff

d_val

Optional

Optional

DT_LOPROC

0x70000000

Unspecified

Unspecified

Unspecified

DT_SPARC_REGISTER

0x70000001

d_val

Optional

Optional

DT_AUXILIARY

0x7ffffffd

d_val

Unspecified

Optional

DT_USED

0x7ffffffe

d_val

Optional

Optional

DT_FILTER

0x7fffffff

d_val

Unspecified

Optional

DT_HIPROC

0x7fffffff

Unspecified

Unspecified

Unspecified

DT_NULL

Marks the end of the _DYNAMIC array.

DT_NEEDED

The DT_STRTAB string table offset of a null-terminated string, giving the name of a needed dependency. The dynamic array can contain multiple entries of this type. The relative order of these entries is significant, though their relation to entries of other types is not. See Shared Object Dependencies.

DT_PLTRELSZ

The total size, in bytes, of the relocation entries associated with the procedure linkage table. See Procedure Linkage Table (Processor-Specific).

DT_PLTGOT

An address associated with the procedure linkage table or the global offset table. See Procedure Linkage Table (Processor-Specific) and Global Offset Table (Processor-Specific).

DT_HASH

The address of the symbol hash table. This table refers to the symbol table indicated by the DT_SYMTAB element. See Hash Table Section.

DT_STRTAB

The address of the string table. Symbol names, dependency names, and other strings required by the runtime linker reside in this table. See String Table Section.

DT_SYMTAB

The address of the symbol table. See Symbol Table Section.

DT_RELA

The address of a relocation table. See Relocation Sections.

An object file can have multiple relocation sections. When creating the relocation table for a dynamic object, the link-editor concatenates those sections to form a single table. Although the sections can remain independent in the object file, the runtime linker sees a single table. When the runtime linker creates the process image for an executable file or adds a shared object to the process image, the runtime linker reads the relocation table and performs the associated actions.

This element requires the DT_RELASZ and DT_RELAENT elements also be present. When relocation is mandatory for a file, either DT_RELA or DT_REL can occur.

DT_RELASZ

The total size, in bytes, of the DT_RELA relocation table.

DT_RELAENT

The size, in bytes, of the DT_RELA relocation entry.

DT_STRSZ

The total size, in bytes, of the DT_STRTAB string table.

DT_SYMENT

The size, in bytes, of the DT_SYMTAB symbol entry.

DT_INIT

The address of an initialization function. See Initialization and Termination Sections.

DT_FINI

The address of a termination function. See Initialization and Termination Sections.

DT_SONAME

The DT_STRTAB string table offset of a null-terminated string, identifying the name of the shared object. See Recording a Shared Object Name.

DT_RPATH

The DT_STRTAB string table offset of a null-terminated library search path string. This element's use has been superseded by DT_RUNPATH. See Directories Searched by the Runtime Linker.

DT_SYMBOLIC

Indicates the object contains symbolic bindings that were applied during its link-edit. This elements use has been superseded by the DF_SYMBOLIC flag. See Using the -B symbolic Option.

DT_REL

Similar to DT_RELA, except its table has implicit addends. This element requires that the DT_RELSZ and DT_RELENT elements also be present.

DT_RELSZ

The total size, in bytes, of the DT_REL relocation table.

DT_RELENT

The size, in bytes, of the DT_REL relocation entry.

DT_PLTREL

Indicates the type of relocation entry to which the procedure linkage table refers, either DT_REL or DT_RELA. All relocations in a procedure linkage table must use the same relocation. See Procedure Linkage Table (Processor-Specific). This element requires a DT_JMPREL element also be present.

DT_DEBUG

Used for debugging.

DT_TEXTREL

Indicates that one or more relocation entries might request modifications to a non-writable segment. This element's use has been superseded by the DF_TEXTREL flag. See Position-Independent Code.

DT_JMPREL

The address of relocation entries that are associated solely with the procedure linkage table. See Procedure Linkage Table (Processor-Specific). The separation of these relocation entries enables the runtime linker to ignore these entries when the object is loaded with lazy binding enabled. This element requires the DT_PLTRELSZ and DT_PLTREL elements also be present.

DT_BIND_NOW

Indicates that all relocations for this object must be processed before returning control to the program. The presence of this entry takes precedence over a directive to use lazy binding when specified through the environment or by means of dlopen(3C). This element's use has been superseded by the DF_BIND_NOW flag. See When Relocations are Performed.

DT_INIT_ARRAY

The address of an array of pointers to initialization functions. This element requires that a DT_INIT_ARRAYSZ element also be present. See Initialization and Termination Sections.

DT_FINI_ARRAY

The address of an array of pointers to termination functions. This element requires that a DT_FINI_ARRAYSZ element also be present. See Initialization and Termination Sections.

DT_INIT_ARRAYSZ

The total size, in bytes, of the DT_INIT_ARRAY array.

DT_FINI_ARRAYSZ

The total size, in bytes, of the DT_FINI_ARRAY array.

DT_RUNPATH

The DT_STRTAB string table offset of a null-terminated library search path string. See Directories Searched by the Runtime Linker.

DT_FLAGS

Flag values specific to this object. See Table 15-9.

DT_ENCODING

Dynamic tag values that are greater than or equal to DT_ENCODING, and less than or equal to DT_LOOS, follow the rules for the interpretation of the d_un union.

DT_PREINIT_ARRAY

The address of an array of pointers to pre-initialization functions. This element requires that a DT_PREINIT_ARRAYSZ element also be present. This array is processed only in an executable. This array is ignored if contained in a shared object. See Initialization and Termination Sections.

DT_PREINIT_ARRAYSZ

The total size, in bytes, of the DT_PREINIT_ARRAY array.

DT_SYMTAB_SHNDX

The address of the SHT_SYMTAB_SHNDX section associated with the dynamic symbol table referenced by the DT_SYMTAB element. See Extended Section Header.

DT_LOOS - DT_HIOS

Values in this inclusive range are reserved for operating system-specific semantics. All such values follow the rules for the interpretation of the d_un union.

DT_SUNW_AUXILIARY

The DT_STRTAB string table offset of a null-terminated string that names one or more per-symbol, auxiliary filtees. See Generating Auxiliary Filters.

DT_SUNW_RTLDINF

Reserved for internal use by the runtime-linker.

DT_SUNW_FILTER

The DT_STRTAB string table offset of a null-terminated string that names one or more per-symbol, standard filtees. See Generating Standard Filters.

DT_SUNW_CAP

The address of the capabilities section. See Capabilities Section.

DT_SUNW_SYMTAB

The address of the symbol table containing local function symbols that augment the symbols provided by DT_SYMTAB. These symbols are always adjacent to, and immediately precede the symbols provided by DT_SYMTAB. See Symbol Table Section.

DT_SUNW_SYMSZ

The combined size of the symbol tables given by DT_SUNW_SYMTAB and DT_SYMTAB.

DT_SUNW_ENCODING

Dynamic tag values that are greater than or equal to DT_SUNW_ENCODING, and less than or equal to DT_HIOS, follow the rules for the interpretation of the d_un union.

DT_SUNW_SORTENT

The size, in bytes, of the DT_SUNW_SYMSORT, DT_SUNW_SYMNSORT, and DT_SUNW_TLSSORT symbol sort entries.

DT_SUNW_SYMSORT

The address of the array of symbol table indices that provide access to function and variable symbols in the symbol table referenced by DT_SUNW_SYMTAB, sorted by value. See Symbol Sort Sections.

DT_SUNW_SYMSORTSZ

The total size, in bytes, of the DT_SUNW_SYMSORT array.

DT_SUNW_TLSSORT

The address of the array of symbol table indices that provide access to thread local symbols in the symbol table referenced by DT_SUNW_SYMTAB, sprted by value. See Symbol Sort Sections.

DT_SUNW_TLSSORTSZ

The total size, in bytes, of the DT_SUNW_TLSSORT array.

DT_SUNW_CAPINFO

The address of the array of symbol table indices that provide the association of symbols to their capability requirements. See Capabilities Section.

DT_SUNW_STRPAD

The total size, in bytes, of the unused reserved space at the end of the dynamic string table. If DT_SUNW_STRPAD is not present in an object, no reserved space is available.

DT_SUNW_CAPCHAIN

The address of the array of capability family indices. Each family of indices is terminated with a 0 entry.

DT_SUNW_LDMACH

The machine architecture of the link-editor that produced the object. DT_SUNW_LDMACH uses the same EM_ integer values used for the e_machine field of the ELF header. See ELF Header. DT_SUNW_LDMACH is used to identify the class, 32-bit or 64-bit, and the platform of the link-editor that built the object. This information is not used by the runtime linker, but exists purely for documentation.

DT_SUNW_SYMTAB_SHNDX

The address of the SHT_SYMTAB_SHNDX section associated with the dynamic symbol table referenced by the DT_SUNW_SYMTAB element. See Extended Section Header.

DT_SUNW_CAPCHAINENT

The size, in bytes, of the DT_SUNW_CAPCHAIN entries.

DT_SUNW_DEFERRED

The DT_STRTAB string table offset of a null terminated deferred dependency name. This name is associated to per-symbol deferred references. See Deferred Symbol References.

DT_SUNW_CAPCHAINSZ

The total size, in bytes, or the DT_SUNW_CAPCHAIN chain.

DT_SUNW_PHNAME

Array of DT_STRTAB string table offsets, one per program header array element, providing program header names. See Program Header Name Section.

DT_SUNW_PARENT

The DT_STRTAB string table offset of a null terminated parent object name. The name provided is a basename, containing only a file name without any path component. See Parent Objects.

DT_SUNW_SX_ASLR

The Address Space Layout Randomization (ASLR) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_RELAX

The validity checking relaxation options, that were specified with the link-editor's -z relax option, when the object was built. See Table 15-13.

DT_SUNW_KMOD

Provides kernel module specific information.

DT_SUNW_SX_NXHEAP

The non-executable heap (NXHEAP) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_SX_NXSTACK

The non-executable stack (NXSTACK) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_SX_ADIHEAP

The ADI memory allocator (ADIHEAP) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_SX_ADISTACK

The ADI stack protection (ADISTACK) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_SX_SSBD

The speculative store bypass disable (SSBD) security extension (SX) values specific to this object. See Requesting Security Extensions, and Table 15-12.

DT_SUNW_SYMNSORT

The address of the array of symbol table indices that provide access to function and variable symbols in the symbol table referenced by DT_SUNW_SYMTAB, sorted by name. See Symbol Sort Sections.

DT_SUNW_SYMNSORTSZ

The total size, in bytes, of the DT_SUNW_SYMNSORT array.

DT_VALRNGLO - DT_VALRNGHI

Values in this inclusive range use the d_un.d_val field of the dynamic structure.

DT_CHECKSUM

A simple checksum of selected sections of the object. See gelf_checksum(3ELF).

DT_MOVEENT

The size, in bytes, of the DT_MOVETAB move entries.

DT_MOVESZ

The total size, in bytes, of the DT_MOVETAB table.

DT_POSFLAG_1

Various state flags which are applied to the DT_ element immediately following. See Table 15-11.

DT_SYMINSZ

The total size, in bytes, of the DT_SYMINFO table.

DT_SYMINENT

The size, in bytes, of the DT_SYMINFO information entry.

DT_ADDRRNGLO - DT_ADDRRNGHI

Values in this inclusive range use the d_un.d_ptr field of the dynamic structure. If any adjustment is made to the ELF object after the object has been built, these entries must be updated accordingly.

DT_CONFIG

The DT_STRTAB string table offset of a null-terminated string defining a configuration file. The configuration file is only meaningful in an executable, and is typically unique to this object. See Configuring the Default Search Paths.

DT_DEPAUDIT

The DT_STRTAB string table offset of a null-terminated string defining one or more audit libraries. See Runtime Linker Auditing Interface.

DT_AUDIT

The DT_STRTAB string table offset of a null-terminated string defining one or more audit libraries. See Runtime Linker Auditing Interface.

DT_MOVETAB

The address of a move table. This element requires that the DT_MOVEENT and DT_MOVESZ elements also be present. See Move Section.

DT_SYMINFO

The address of the symbol information table. This element requires that the DT_SYMINENT and DT_SYMINSZ elements also be present. See Syminfo Table Section.

DT_VERSYM

The address of the version symbol section table. See Version Symbol Section.

DT_RELACOUNT

Indicates the RELATIVE relocation count, which is produced from the concatenation of all Elf32_Rela, or Elf64_Rela relocations. See Combined Relocation Sections.

DT_RELCOUNT

Indicates the RELATIVE relocation count, which is produced from the concatenation of all Elf32_Rel relocations. See Combined Relocation Sections.

DT_FLAGS_1

Flag values specific to this object. See Table 15-10.

DT_VERDEF

The address of the version definition table. Elements within this table contain indexes into the string table DT_STRTAB. This element requires that the DT_VERDEFNUM element also be present. See Version Definition Section.

DT_VERDEFNUM

The number of entries in the DT_VERDEF table.

DT_VERNEED

The address of the version dependency table. Elements within this table contain indexes into the string table DT_STRTAB. This element requires that the DT_VERNEEDNUM element also be present. See Version Dependency Section.

DT_VERNEEDNUM

The number of entries in the DT_VERNEEDNUM table.

DT_LOPROC - DT_HIPROC

Values in this inclusive range are reserved for processor-specific semantics.

DT_SPARC_REGISTER

The index of an STT_SPARC_REGISTER symbol within the DT_SYMTAB symbol table. One dynamic entry exists for every STT_SPARC_REGISTER symbol in the symbol table. See Register Symbols.

DT_AUXILIARY

The DT_STRTAB string table offset of a null-terminated string that names one or more auxiliary filtees. See Generating Auxiliary Filters.

DT_FILTER

The DT_STRTAB string table offset of a null-terminated string that names one or more standard filtees. See Generating Standard Filters.

Except for the DT_NULL element at the end of the dynamic array and the relative order of DT_NEEDED and DT_POSFLAG_1 elements, entries can appear in any order. Tag values not appearing in the table are reserved.

Table 15-9 ELF Dynamic Flags, DT_FLAGS

Name Value Meaning

DF_ORIGIN

0x1

$ORIGIN processing required

DF_SYMBOLIC

0x2

Symbolic symbol resolution required

DF_TEXTREL

0x4

Text relocations exist

DF_BIND_NOW

0x8

Non-lazy binding required

DF_STATIC_TLS

0x10

Object uses static thread-local storage scheme

DF_ORIGIN

Indicates that the object requires $ORIGIN processing. See Locating Associated Dependencies.

DF_SYMBOLIC

Indicates that the object contains symbolic bindings that were applied during its link-edit. See Using the -B symbolic Option.

DF_TEXTREL

Indicates that one or more relocation entries might request modifications to a non-writable segment. See Position-Independent Code.

DF_BIND_NOW

Indicates that all relocations for this object must be processed before returning control to the program. The presence of this entry takes precedence over a directive to use lazy binding when specified through the environment or by means of dlopen(3C). See When Relocations are Performed.

DF_STATIC_TLS

Indicates that the object contains code using a static thread-local storage scheme. Static thread-local storage should not be used in objects that are dynamically loaded, either using dlopen(3C), or using lazy loading.

Table 15-10 ELF Dynamic Flags, DT_FLAGS_1

Name Value Meaning

DF_1_NOW

0x1

Perform complete relocation processing.

DF_1_GLOBAL

0x2

Unused.

DF_1_GROUP

0x4

Indicate object is a member of a group.

DF_1_NODELETE

0x8

Object cannot be deleted from a process.

DF_1_LOADFLTR

0x10

Ensure immediate loading of filtees.

DF_1_INITFIRST

0x20

Objects' initialization occurs first.

DF_1_NOOPEN

0x40

Object can not be used with dlopen(3C).

DF_1_ORIGIN

0x80

$ORIGIN processing required.

DF_1_DIRECT

0x100

Direct bindings enabled.

DF_1_INTERPOSE

0x400

Object is an interposer.

DF_1_NODEFLIB

0x800

Ignore the default library search path.

DF_1_NODUMP

0x1000

Unused.

DF_1_ENDFILTEE

0x4000

Filtee terminates filter's search.

DF_1_DISPRELDNE

0x8000

Displacement relocation has been carried out.

DF_1_DISPRELPND

0x10000

Displacement relocation pending.

DF_1_NODIRECT

0x20000

Object contains non-direct bindings.

DF_1_IGNMULDEF

0x40000

Internal use.

DF_1_NOKSYMS

0x80000

Internal use.

DF_1_NOHDR

0x100000

Internal use.

DF_1_EDITED

0x200000

Object has been modified since originally built.

DF_1_NORELOC

0x400000

Internal use.

DF_1_SYMINTPOSE

0x800000

Individual symbol interposers exist.

DF_1_GLOBAUDIT

0x1000000

Establish global auditing.

DF_1_SINGLETON

0x2000000

Singleton symbols exist.

DF_1_STUB

0x4000000

Object is a stub.

DF_1_PIE

0x8000000

Object is a position-independent executable.

DF_1_KMOD

0x10000000

Object is a kernel module.

DF_1_WEAKFILTER

0x20000000

Object is a weak standard filter.

DF_1_NOW

Indicates that all relocations for this object must be processed before returning control to the program. The presence of this flag takes precedence over a directive to use lazy binding when specified through the environment or by means of dlopen(3C). See When Relocations are Performed.

DF_1_GROUP

Indicates that the object is a member of a group. This flag is recorded in the object using the link-editor's -B group option. See Object Hierarchies.

DF_1_NODELETE

Indicates that the object cannot be deleted from a process. If the object is loaded in a process, either directly or as a dependency, with dlopen(3C), the object cannot be unloaded with dlclose(3C). This flag is recorded in the object using the link-editor -z nodelete option.

DF_1_LOADFLTR

Meaningful only for filters. Indicates that all associated filtees be processed immediately. This flag is recorded in the object using the link-editor's -z loadfltr option. See Filtee Processing.

DF_1_INITFIRST

Indicates that this object's initialization section be run before any other objects loaded. This flag is intended for specialized system libraries only, and is recorded in the object using the link-editor's -z initfirst option.

DF_1_NOOPEN

Indicates that the object cannot be added to a running process with dlopen(3C). This flag is recorded in the object using the link-editor's -z nodlopen option.

DF_1_ORIGIN

Indicates that the object requires $ORIGIN processing. See Locating Associated Dependencies.

DF_1_DIRECT

Indicates that the object should use direct binding information. See Direct Bindings.

DF_1_INTERPOSE

Indicates that the objects symbol table is to interpose before all symbols except the primary load object, which is typically the executable. This flag is recorded with the link-editor's -z interpose option. See Runtime Interposition.

DF_1_NODEFLIB

Indicates that the search for dependencies of this object ignores any default library search paths. This flag is recorded in the object using the link-editor's -z nodefaultlib option. See Directories Searched by the Runtime Linker.

DF_1_ENDFILTEE

Meaningful only for filtees. Terminates a filters search for any further filtees. This flag is recorded in the object using the link-editor's -z endfiltee option. See Reducing Capability Filtee Searches.

DF_1_DISPRELDNE

Indicates that this object has displacement relocations applied. The displacement relocation records no longer exist within the object as the records were discarded once the relocation was applied. See Displacement Relocations.

DF_1_DISPRELPND

Indicates that this object has displacement relocations pending. The displacement relocations exits within the object so the relocation can be completed at runtime. See Displacement Relocations.

DF_1_NODIRECT

Indicates that this object contains symbols that can not be directly bound to. See SYMBOL_SCOPE and SYMBOL_VERSION Directives.

DF_1_IGNMULDEF

Reserved for internal use by the kernel runtime-linker.

DF_1_NOKSYMS

Reserved for internal use by the kernel runtime-linker.

DF_1_NOHDR

Reserved for internal use by the kernel runtime-linker.

DF_1_EDITED

Indicates that this object has been edited or has been modified since the objects original construction by the link-editor. This flag serves as a warning to debuggers that an object might have had an arbitrary change made since the object was originally built.

DF_1_NORELOC

Reserved for internal use by the kernel runtime-linker.

DF_1_SYMINTPOSE

Indicates that the object contains individual symbols that should interpose before all symbols except the primary load object, which is typically the executable. This flag is recorded when the object is built using a mapfile and the INTERPOSE keyword. See SYMBOL_SCOPE and SYMBOL_VERSION Directives.

DF_1_GLOBAUDIT

Indicates that the executable requires global auditing. See Recording Global Auditors.

DF_1_SINGLETON

Indicates that the object defines, or makes reference to singleton symbols. See SYMBOL_SCOPE and SYMBOL_VERSION Directives.

DF_1_STUB

Indicates that the object is a stub. See Stub Objects.

DF_1_PIE

Indicates that the object is a position-independent executable, which is a special case of a shared object, that specifies an interpreter. See the link-editor's -z type option.

DF_1_KMOD

Indicates that the object is a kernel module, which is a special case of a relocatable object, that contains dynamic linking information. See the link-editor's -z type option.

DF_1_WEAKFILTER

Indicates that the object is a weak standard filter. At runtime, the behavior is identical to a normal standard filter. At link-edit time, if unused dependency processing is active, a weak filter symbol can be ignored in favor of the same symbol from the target filtee given by DT_FILTER. See Generating Weak Filters.

Table 15-11 ELF Dynamic Position Flags, DT_POSFLAG_1

Name Value Meaning

DF_P1_LAZYLOAD

0x1

Identify lazy loaded dependency.

DF_P1_GROUPPERM

0x2

Identify group dependency.

DF_P1_DEFERRED

0x4

Identify deferred dependency.

DF_P1_EXISTING

0x8

Resolve to existing dependency.

DF_P1_LAZYLOAD

Identifies the following DT_NEEDED entry as an object to be lazy loaded. This flag is recorded in the object as a consequence of using the link-editor's -z lazyload option. See Lazy Loading of Dynamic Dependencies.

DF_P1_GROUPPERM

Identifies the following DT_NEEDED entry as an object to be loaded as a group. This flag is recorded in the object as a consequence of using the link-editor's -z groupperm option. See Isolating a Group.

DF_P1_DEFERRED

Identifies the following DT_NEEDED entry as a deferred dependency. This flag is recorded in the object as a consequence of using the link-editor's -z deferred option. See Providing an Alternative to dlopen.

DF_P1_EXISTING

Identifies that the following DT_SUNW_FILTER entry can be satisfied from an existing process dependency. Internal use.

Table 15-12 ELF Security Extension (SX) Values, DT_SUNW_SX_xxx

Name Value Meaning

DV_SUNW_SX_DEFAULT

0

Follow system default

DV_SUNW_SX_DISABLE

1

Disable security extension

DV_SUNW_SX_ENABLE

2

Enable security extension

DV_SUNW_SX_DISABLE and DV_SUNW_SX_ENABLE are recorded in the security extension dynamic elements using the link-editor's -z sx option. The security extension dynamic elements are: DT_SUNW_SX_ASLR, DT_SUNW_SX_NXHEAP, DT_SUNW_SX_NXSTACK, DT_SUNW_SX_ADIHEAP, and DT_SUNW_SX_ADISTACK.

Table 15-13 ELF Dynamic Relaxation Flags, DT_SUNW_RELAX

DF_SUNW_RELAX_COMDAT

0x1

Relocation symbols substituted for discarded COMDAT

DF_SUNW_RELAX_SECADJ

0x2

Section adjacency verification disabled

DF_SUNW_RELAX_SYMBOUND

0x4

Symbol/section boundary verification disabled

DF_SUNW_RELAX_COMMON

0x8

Tentative (common) data with different size or different alignment enabled

DF_SUNW_RELAX_ flags are recorded in the object as a consequence of using the link-editor's -z relax option.