This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: EABI


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]