SPRU514Z July 2001 – October 2023 SM320F28335-EP
An Application Binary Interface (ABI) defines how functions that are compiled or assembled separately (possibly by compilers from different vendors) can work together. This involves standardizing the data type representation, register conventions, and function structure and calling conventions. An ABI defines linkname generation from C symbol names. It defines the object file format and the debug format. It defines how the system is initialized. In the case of C++, it defines C++ name mangling and exception handling support.
The TI C28x Code Generation Tools support both the COFF ABI and the EABI ABI. The default is to generate object files using COFF. Selecting the ABI is controlled by the --abi command-line option and is discussed in Section 2.13. The __TI_EABI__ predefined symbol is defined and set to 1 if the code is compiled for EABI.
To generate object files compatible with EABI, you must use the C28x compiler version 18.8.0.STS or greater. The COFF ABI is the only ABI supported by older compilers.
The EABI ABI requires the ELF object file format. This format supports modern language features like early template instantiation and exporting inline functions. For low-level details about the C28x EABI, see the C28x Embedded Application Binary Interface Application Report (SPRAC71).
All of the object files linked to create an application must use the same ABI. That is, they must all use the COFF ABI or all use EABI; these ABIs are not compatible with each other.