Appendix C: Revision History¶
First Draft (Published May 14, 1998)
Second Draft (Published May 3, 1999)
New values introduced for ELF header
e_machine
field.Revised language for
EI_OSABI
andEI_ABIVERSION
fields of the ELF headere_ident
array.New section flags
SHF_MERGE
andSHF_STRINGS
added.New values added to a symbol table entry’s
st_other
field to describe a symbol’s visibility.New dynamic section tags
DT_RUNPATH
andDT_FLAGS
added. Deprecated dynamic section tagDT_RPATH
.New semantics for shared object path searching, including new “Substitution Sequences”.
Third Draft (Published May 12, 1999)
A new symbol type,
STT_COMMON
, has been added.Added language restricting the types of objects that may contain symbols with the section index
SHN_COMMON
.Dynamic section entries
DT_SYMBOLIC
,DT_TEXTREL
andDT_BIND_NOW
have been deprecated. NewDT_FLAGS
valuesDF_SYMBOLIC
,DF_TEXTREL
andDF_BIND_NOW
have been added as replacements.New rules for interpreting dynamic section tag encodings have been added.
The OS and processor specific ranges for
DT_FLAGS
have been removed.The language motivating the use of
DF_ORIGIN
has been changed.
Fourth Draft (Published July 6, 1999)
New language has been added warning about the use of WEAK symbols in application programs.
New rules have been defined for composition of consecutive relocation entries that reference the same location.
Language has been added clarifying the order of execution for functions specified by initialization and termination arrays.
Fifth Draft (Published July 21, 1999)
New section types and section names added for init arrays, fini arrays, and pre-init arrays.
An object may now have both
DT_INIT
andDT_INIT_ARRAY
entries (and bothDT_FINI
andDT_FINI_ARRAY
entries). The relative execution order is specified.The language describing the order of execution for termination functions has been revised.
A new pre-initialization mechanism has been added.
It is now up to the psABI supplement for each processor to specify whether the dynamic linker must invoke the executable file’s init and fini routines.
Sixth Draft (Published September 14, 1999)
Changed the numbering of some new section types previously added to account for type numbers already in use in particular vendor implementations.
Increased the number of section flag bits available in the OS specific range.
Seventh Draft (Published October 4, 1999)
Changed the values used for some new section attribute flags to accommodate platforms already using previously assigned values.
Added new section attribute flags
SHF_INFO_LINK
,SHF_LINK_ORDER
, andSHF_OS_NONCONFORMING
Added rules for linkers when linking sections with unrecognized types or flags.
Eighth Draft (Published March 30, 2000)
Added the concept of section groups.
Removed the macros for
ELF32_ST_OTHER
andELF64_ST_OTHER
.
Ninth Draft (Published March 30, 2000)
Added language clarifying the semantics of symbols marked as
STV_PROTECTED
.Added language clarifying the contents of the initialization and termination arrays.
Tenth Draft (Published 22 June 2000)
Added a sentence spelling out the behavior when resolving a symbol to a
STV_PROTECTED
definition from a shared object.Added support for more than 65,000 sections in the ELF header, and with
SHT_SYMTAB_SHNDX
sections, and in symbol tables.
Eleventh Draft (Published 24 April 2001)
Updated table of EM_* entries.
Added
GRP_MASKOS
andGRP_MASKPROC
. Changed section group description in a few ways, clarifying some fuzzy points and rewriting the rules for symbols referencing into section groups.Changed the warning about using weak to be stronger.
Reworded the
EI_OSABI
byte description to make its use clearer.Added the table of now generic
EI_OSABI
values.Added
SHF_TLS
,PT_TLS
and its contents,DF_STATIC_TLS
,STT_TLS
, .tbss, and .tdata.Changed the rules for
SHT_SYMTAB_SHNDX
contents to require 0 when the correspondingst_shndx
field is notSHN_XINDEX
.
Twelfth Draft (Published 26 March 2007)
Updated table of EM_* entries.
Thirteenth Draft (Published 03 November 2009)
Updated table of EM_* entries.
Added
ELFOSABI_FENIXOS
to theEI_OSABI
values.Added
ELFOSABI_GNU
to theEI_OSABI
values; aliased toELFOSABI_LINUX
.
Fourteenth Draft (Published 10 June 2013)
Added
SHF_COMPRESSED
to the Section Attribute Flags.Updated table of EM_* entries.
Fifteenth Draft (Published 23 July 2015)
Clarified the description of
SHT_SYMTAB_SHNDX
; allow usage with any symbol table section.Added
DT_SYMTAB_SHNDX
to the Dynamic Array Tags.
Version 4.2 (Published 2025)
Converted to ReStructuredText.
ELF specification is now separate from the gABI document.
Removed empty placeholders for psABI sections.
Version 4.3 (DRAFT)
Added extra requirements for
SHF_LINKORDER
flag.Added relative relocation table (
Elf32_Relr
andElf64_Relr
).Changed the symbol visibility attribute to use the lower 3 bits of
st_other
(instead of 2 bits).Added
DT_SYMTABSZ
entry, and madeDT_HASH
optional ifDT_SYMTABSZ
is provided.Changed
SHF_COMPRESSED
to allow withSHF_ALLOC
sections inET_REL
objects.Added
ELFCOMPRESS_ZSTD
compression algorithm.