Keil™, An ARM® Company

RealView Libraries and Floating Point Support Guide

ABI for the ARM Architecture compliance

1.1.1. ABI for the ARM Architecture compliance

The Application Binary Interface for the ARM Architecture (ABI) is a family of specifications that describe 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. In order 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 ARM, Thumb, and Thumb‑2 objects and libraries from different producers that support the ABI for the ARM Architecture. RVCT fully supports the BSABI, including support for DWARF 3 debug tables (DWARF Debugging Standard Version 3).

For full information about the base standard, other ARM Embedded ABIs (AEABIs), software interfaces, and other standards supported by ARM, see the ARM website.

See http://www.arm.com for more information on the latest published versions.

The ARM C and C++ libraries conform to the standards described in the BSABI and in the following AEABIs:

  • C Library ABI for the ARM Architecture

  • C++ ABI for the ARM Architecture (CPPABI).

Testing conformance

To request full CLIBABI portability, specify #define _AEABI_PORTABILITY_LEVEL 1 before #including any library headers, for example, <stdlib.h>. You can also do this by using ‑D_AEABI_PORTABILITY_LEVEL=1 on the command line. This increases the portability of your object files to other implementations of the CLIBABI, but reduces the performance of some library operations.

For more information see the CLIBABI specification, clibabi.pdf, on the ARM website.

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0378A