Application Binary Interface
The System V Application Binary Interface (or ABI)
defines a system interface for compiled application programs.
The ABI defines a binary interface for application programs
that are compiled for System V implementations
on many different hardware architectures.
Since a binary specification must include information specific
to the computer processor architecture for which it is intended,
it is not possible for a single document to specify the interface
for all possible System V implementations.
Therefore, the System V ABI is a family of specifications,
rather than a single one.
The System V ABI is composed of two basic parts:
A generic part of the specification describes
those parts of the interface that remain constant
across all hardware implementations of System V,
and a processor-specific part of the specification
describes the parts of the specification that are
specific to a particular processor architecture.
Together, the generic ABI (or gABI)
and the processor specific supplement (or psABI)
provide a complete interface specification
for compiled application programs on systems
that share a common hardware architecture.
What is presented here is two chapters of the System V gABI:
Chapter 4, Object Files and
Chapter 5, Program Loading and Dynamic Linking.
These two System V gABI chapters form the definition
of the ELF (Executable and Linking Format) file format.
Some complete, but older System V gABIs as well as some psABIs
are available on
the developer specifications page.
Besides on System V implementations,
ELF is very commonly used as the object file,
shared library, and execution file format.
Separating these two chapters of the System V gABI
also makes it easier for these implementations
to reference an ELF specification.
The contents of these chapters is being actively maintained
(in part) through an industry committee chaired by Intel.
This group's efforts are greatly reduced from when they
first were extending ELF to support 64-bit architectures,
but there is still some active development.
There is more than one instance of these chapters to permit
references to older instances to remain valid.
All modifications to these chapters are forward-compatible,
so that correct use of an older specification
will not be invalidated by a newer instance.
Approximately on a yearly basis,
a new instance will be saved,
as it reaches what appears to be a stable state.
Also included here is a copy of the most recent version
of these chapters.
Note that this instance is in flux and can change without notice.