Compliance with the Application Binary Interface (ABI) for the Arm® architecture
The ABI for the Arm® Architecture is a family of specifications that describes the processor-specific aspects of the translation of a source program into object files.
Object files produced by any toolchain that conforms to the relevant aspects of the ABI can be linked together to produce a final executable image or library.
Each document in the specification covers a specific area of compatibility. For example, the C Library ABI for the Arm® Architecture (CLIBABI) describes the parts of the C library that are expected to be common to all conforming implementations.
The ABI documents contain several areas that are marked as platform specific. To define a complete execution environment these platform-specific details have to be provided. This gives rise to a number of supplemental specifications, for example the Arm® GNU/Linux ABI supplement.
The Base Standard ABI for the Arm® Architecture (BSABI) enables you to use A32 and T32 objects and libraries from different producers that support the ABI for the Arm Architecture. The Arm compilation tools fully support the BSABI, including support for Debug With Arbitrary Record Format (DWARF) 3 debug tables (DWARF Debugging Standard Version 3).
The Arm C and C++ libraries conform to the standards described in the BSABI and the CLIBABI. The libc++ library conforms to the C++ ABI for the Arm architecture (CPPABI), with the exception of Array Construction and Delete helper functions.