1.1.4 Compliance with the ABI for the ARM Architecture (Base Standard)
The ABI for the ARM Architecture (Base Standard) is a collection of standards. Some of these standards are open. Some are specific to the ARM architecture.
The Application Binary Interface
(ABI) for the ARM Architecture (Base Standard) (BSABI) regulates the
inter-operation of binary code and development tools in ARM architecture-based execution
environments, ranging from bare metal to major operating systems such as ARM Linux.
By conforming to this standard, objects produced by the toolchain can work together with
object libraries from different producers.
The BSABI consists of a family of specifications including:
- DWARF for the ARM Architecture. This ABI uses the DWARF 3
standard to govern the exchange of debugging data between object producers and
- ELF for the ARM Architecture. Builds on the generic ELF
standard to govern the exchange of linkable and executable files between producers and
- Procedure Call Standard for the ARM Architecture. Governs
the exchange of control and data between functions at runtime. There is a variant of
the AAPCS for each of the major execution environment types supported by the
- Base Platform ABI for the ARM Architecture. Governs the
format and content of executable and shared object files generated by static linkers.
Supports platform-specific executable files using post linking. Provides a base
standard for deriving a platform ABI.
- C Library ABI for the ARM Architecture. Defines an ABI to
the C library.
- C++ ABI for the ARM Architecture. Builds on the generic C++
ABI (originally developed for IA-64) to govern interworking between independent C++
- Support for Debugging Overlaid Programs. Defines an extension
to the ABI for the ARM Architecture to support debugging overlaid
- Exception Handling ABI for the ARM Architecture. Defines
both the language-independent and C++-specific aspects of how exceptions are thrown
- Run-time ABI for the ARM Architecture. Governs what
independently produced objects can assume of their execution environments by way of
floating-point and compiler helper function support.
If you are upgrading from a previous toolchain release, ensure that you are using the most
recent versions of the ARM specifications.