NOTICE: The Processors Wiki will End-of-Life in December of 2020. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
EABI Support in C6000 Compiler
This page is the home for EABI information about the C6000 Compiler.
The term ABI stands for Application Binary Interface. The ABI specifies how a compiler and linker should handle various things like register assignment, calling convention, type sizes, and object file format. The conventions specified by an ABI make it possible for separately compiled object files and libraries to be linked together into a cohesive executable.
An ABI named EABI (ELF) was introduced in 2010. Prior to that, the compiler only supported a single ABI, and thus it had no name. It is now termed COFF ABI. The main (but not only) difference between COFF ABI and EABI is the object file format. COFF ABI uses COFF, and EABI uses ELF. For more background on those object file formats, please see the wiki article A Brief History of TI Object File Formats.
The Technical Detail
All Code Must Be EABI
It is impossible to mix COFF ABI code and EABI code. Thus all code in an EABI application, including each and every library, must be built for EABI. If you want to adopt EABI in your system, your first step is to insure that all the libraries you plan to use have EABI versions available.
The first version of the C6000 compiler to support EABI is version 7.2.0. The last version to support COFF ABI is version 7.4.24. 7 years elapsed between these releases. As of this writing, there are no plans for additional releases that support COFF ABI.
Other EABI Collateral
- C6000 EABI Migration describes how to port code from C6000 COFF ABI to C6000 EABI.
- C6000 Dynamic Linking describes how to link so you can add code to a running system.
- C6000 Dynamic Loader describes the loader which actually loads code to a running system.
- C6000 Linux Support - Under Construction describes how to use C6000 TI CGT in combination with C6000 GCC tools to build Linux dynamic applications and shared objects