From The Linux Foundation
Jump to: navigation, search

ELF File Format Updates for LSB 3

Section Types

  • SHT_GROUP - defines a section group that is treated specially by the linker; may appear only in ET_REL objects
  • SHT_SYMTAB_SHNDX - required if any of the section header indexes referenced by that symbol table contain the escape value SHN_XINDEX.
  • SHT_LOOS through SHT_HIOS - OS specific semantics - omit

Section Arrtibute Flags

  • SHF_MERGE - data in section may be merged to eliminate duplication.
  • SHF_STRINGS - contains null terminated strings
  • SHF_INFO_LINK - sh_info contains SHT index
  • SHF_LINK_ORDER - preserve order after combining
  • SHF_OS_NONCONFORMING - section requires special OS-specific processing to avoid incorrect behavior
  • SHF_GROUP - section is a member of a group
  • SHF_TLS - thread local data
  • SHF_MASKOS - reserved for OS specific semantics - omit
  • SHF_MASKPROC - reserved for processor-specific semantics - omit

Segement Types

  • PT_GNU_RELRO - Read-only after relocation. Mandatory buffer-overflow protection stuff.

Special Sections

  • .plt.got
  • .data.rel.ro
  • .tbss, .tdata, tdata1
  • .gcc_except_table - in spec, needs more definition
  • .ctors, .dtors - in spec, need more definition
  • .jcr - in spec, ?need more definition?
  • .gnu_debuglink - separate debugging info, may be too early for this one?

Note Sections

Anything with type SHT_NOTE and program header elements of type PT_NOTE.

Dynamic Array Tags

  • DT_RUNPATH - null-terminated library search path string (intended to replace DT_RPATH)
  • DT_FLAGS - holds flag values specific to the object being loaded. (DF_ORIGIN, DF_SYMBOLIC, DF_TEXTREL, DF_BIND_NOW, DF_STATIC_TLS)
  • DT_ENCODING - undefined; is a marker for applying the odd-even rule to select the union member of Elf32_Dyn struct.
  • DT_PREINIT_ARRAY - holds the address of the array of pointers to pre-initialization functions. Works just like DT_INIT_ARRAY and DT_FINI_ARRAY
  • DT_PREINIT_ARRAYSZ – array size. Works just like DT_INIT_ARRAYSZ and DT_FINI_ARRAYSZ.

[[[ElfUpdate3]]/Comments User Comments] [[Include(ElfUpdate3/Comments)]]