This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: EABI
- From: "Anandkumar, CB IN BLR STS" <anand dot cb at siemens dot com>
- To: "Warlich, Christof" <christof dot warlich at siemens dot com>, "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Date: Thu, 17 Oct 2013 12:35:16 +0530
- Subject: RE: EABI
- Authentication-results: sourceware.org; auth=none
- References: <6D83E89737156549AEA25EF9ED712C5D04EA95 at DEFTHW99EK1MSX dot ww902 dot siemens dot net>
Hi Chris,
Find some information about EABI below I hope this helps you.
The EABI(Embedded Application Binary interface) specifies the standards conventions for file formats, datatypes , register usage, stack frame organization, and function parameter passing for embedded programs which is intended to afford interoperability between conforming software component.
The EABI is optimized for embedded applications.
The most common EABI are POWERPC, ARM and MIPS.
Embedded programs that conform to the EABI gain efficiency in space and time by using the following features:
* minimized stack usage
* relaxed alignment restrictions, optimizing memory usage
* small data areas for RAM data, read-only data, and data around address zero. These reduce code size and improve data access time.
With Regards,
Anand
-----Original Message-----
From: gcc-help-owner@gcc.gnu.org [mailto:gcc-help-owner@gcc.gnu.org] On Behalf Of Warlich, Christof
Sent: Thursday, October 17, 2013 12:01 PM
To: gcc-help (gcc-help@gcc.gnu.org)
Subject: EABI
Hi,
I'd really like to wrap my head around the concept of gcc toolchain generation w.r.t. different ABIs.
So far, I managed to build cross compilers for the various architectures I need to support using these target tuples:
i686-mytoolchain-linux-gnu
mipsel-mytoolchain-linux-gnu
mipseb-mytoolchain-linux-gnu
powerpc-mytoolchain-linux-gnu
but for ARM, I had to use linux-guneabi instead of linux-gnu to get the build done, i.e.
arm-mytoolchain-linux-gnueabi
To make all toolchains look as similar as possible, I then did use -gnueabi for the other architectures as well, which also worked fine, i.e.
i686-mytoolchain-linux-gnueabi
mipsel-mytoolchain-linux-gnueabi
mipseb-mytoolchain-linux-gnueabi
powerpc-mytoolchain-linux-gnueabi
arm-mytoolchain-linux-gnueabi
Now I really would like to understand what this eabi thing is all about in the context of GNU toolchain generation: Does it only make a difference for ARM? And what is the proper convention to be used for the other architecture's toolchains, _if_ it is only convention there? Should I go with or without -gnueabi for them?
Finally, a quick look at the config.sub and configure scripts of gcc seem to indicate that -gnueabi only makes a difference for arm-, while -eabi is special for powerpc- and arm- (and _different_ from -gnueabi for arm-!). And what about mips*- and i*86-? At least for MIPS, Wikipedia says that EABI is also supported for this architecture.
Thanks to anyone who could shed some light into the concept of different ABIs from the toolchain generation point of view.
Cheers,
Chris