C6000 EABI:Introduction to EABI

From Texas Instruments Embedded Processors Wiki

Jump to: navigation, search
Translate this page to   

Contents

Introduction

This page is for those who have never heard of EABI before.

EABI Limitations

If you are not already familiar with the limitations of EABI support in the C6000 compiler, please see EABI Support in C6000 Compiler.

ABI Defined

ABI stands for Application Binary Interface. An ABI is a set of rules a compiler follows so that separately compiled object modules and libraries can be linked together into a cohesive executable. These rules encompass many details. For example:

An ABI specification all printed out typically comes to 100 pages, or more. There is a lot to it.

COFF ABI and EABI

C6000 compilers earlier than version 7.2.x only support only one ABI, called COFF ABI. Starting with compiler release v7.2.x, the C6000 compiler continues to support COFF ABI, but also supports a new ABI named EABI via the build option --abi=eabi. COFF ABI is the default except when -mv6600 is used. When -mv6600 is used, EABI is the default.

EABI Defined

EABI stands for Embedded ABI. Where does it come from?

The Itanium 64 (IA64) is a CPU architecture from Intel. As far as I know, it is not in wide use today. But an informal group of companies did establish this C++ ABI for that architecture. The IA64 ABI has gone on to become a de facto standard for C/C++ compilers throughout the GPP community. Many of the compelling modern compiler features available in GPP toolsets rely on infrastructure within this ABI. Bringing those features to TI compilers thus requires adoption of an ABI much like the IA64 ABI.

Some years later, ARM Ltd. formed a group of companies to establish a common ABI for the ARM CPU architecture named AEABI. The purpose of AEABI is to allow code from different compiler vendors to link together and execute on ARM systems. The TI ARM compiler v4.4.0 introduces support for this ABI with the build switch --abi=eabi. AEABI took the IA64 ABI as its starting point.

The EABI discussed in this article builds on AEABI.

ELF vs EABI

ELF is an object file format. EABI is an ABI. While the ELF object file format is easily the biggest change introduced by EABI, there is quite a bit more to it. Thus, it is better to refer to this whole thing as EABI. That said, many still use the term ELF to refer to what is really EABI.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox