SCO Developer Network

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.