# 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` and `EI_ABIVERSION` fields of the ELF header `e_ident` array.
- New section flags `SHF_MERGE` and `SHF_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` and `DT_FLAGS` added. Dynamic section tag `DT_RPATH` moved to level 2.
- 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` and `DT_BIND_NOW` have been moved to level 2. New `DT_FLAGS` values `DF_SYMBOLIC`, `DF_TEXTREL` and `DF_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` and `DT_INIT_ARRAY` entries (and both `DT_FINI` and `DT_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 processor 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` and `SHF_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` and `ELF64_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` and `GRP_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 is 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 corresponding `st_shndx` field is not `SHN_XINDEX`.

© 1997, 1998, 1999, 2000, 2001 The Santa Cruz Operation, Inc. All rights reserved.