arm gcc toolchain as arm-elf or arm-none-eabi, what is the difference?

Johan picture Johan · May 11, 2011 · Viewed 48.5k times · Source

When you build a gcc toolchain there is the possibility to build it as arm-elf or as arm-none-eabi, but what is the difference?

I use the eabi today, but that is just since everyone else seem to do that... but since that is a really bad argument, it would be really nice to understand the difference.

Note: This toolchain will crosscompile code for Cortex-M3 based mcu:s like the stm32.

Thanks


Some links:

EABI:

ELF:

Answer

paul picture paul · May 15, 2011

Each architecture or architecture/os couple has an ABI. The ABI (Application binary Interface) describes how functions should be called, syscalls numbers, arguments passed, which registers can be used ...

The abi describes how the compiler should generate the assembler.

If you use only assembler you don't need to care about the ABI.

arm-elf and arm-none-eabi just use two versions of the Arm ABI. The eabi toolchain uses a newer revision, but could also be called arm-elf-eabi, as it generates elf too.