On the ARM architecture, there are two major ABI types to choose from: EABI and OABI. There is also a Thumb ABI and an Intel IWMMX specific ABI.
The EABI (Embedded ABI) is newer and supports additional features, faster software floating point operations, and Thumb interworking, but is only compatible with ARMv4t and newer cores. The EABI has sub-ABIs of: aapcs-linux and aapcs. aapcs-linux has standard Linux 4 byte enums while aapcs has variable length enums.
The OABI (old ABI) is called apcs-gnu and supports ARMv4 and older cores.
Setup for a Particular ABI:
export CLFS_ABI="[From Chart]"
echo export CLFS_ABI=\""${CLFS_ABI}\"" >> ~/.bashrc
The following table gives the entires for the different ABI's that CLFS Embedded supports. Make sure you select one for your build, this will ensure capatibilty of your build with your target architecture.
Table 6.1. List of Build Variables
| ABI | CLFS_ABI=Value | Note |
|---|---|---|
| apcs-gnu | apcs-gnu | OABI |
| atpcs | atpcs | Thumb ABI |
| aapcs | aapcs | EABI w/ variable size enums |
| aapcs-linux | aapcs-linux | EABI w/ standard Linux 32 bit (int) enums |
| iwmmxt | iwmmxt | Supports Intel XScale MMX extensions |