[Clfs-dev] Embedded clfs problems and workarounds

Andrew Bradford bradfa at gmail.com
Thu Feb 17 03:29:39 PST 2011


On Fri, Feb 11, 2011 at 8:34 AM, Joe Ciccone <jciccone at gmail.com> wrote:
> On Fri, 2011-02-11 at 06:38 -0500, Andrew Bradford wrote:
>> But for ARM (and maybe MIPS with --with-divide?), using
>> --disable-multilib without specifying hard/soft floating point or
>> arm/thumb instructions could be an issue.  I'm not sure what GCC would
>> do there.  Do you know?
> I do not, but I know where to look. In the gcc source tree take a look
> at gcc/config.gcc and gcc/config/{arch}/*. In there you will find the
> answer.

Joe, thanks for the pointers! :)

>From gcc-4.5.2/gcc/config, it looks like any target triplet of
arm*-*-linux* gets a default configuration from
gcc-4.5.2/gcc/config/arm/linux-elf.h and arm.h  that is: arm mode,
little (or big, if you have arm*b-*) endian, hard-float, apcs abi, and
does not allow thumb interworking.

If your target triplet is arm*-*-linux-*eabi, configuration from
gcc-4.5.2/gcc/config/arm/linux-eabi.h and bpabi.h will overwrite some
of this with: aapcs-linux abi, cpu of arm10tdmi (which is a member of
armv5t), vfp, and soft-float.

>> I'd like to add --with-float and --with-mode to ARM first, before
>> adding --disable-multilib, but I'm being conservative because I don't
>> know the full impacts.
> Once those are added then there wouldn't be anything to worry about. So
> no arguments from me.

I now get the impression that in order to safely use
--disable-multilib, the ARM book should specify: --with-float,
--with-mode, --with-abi, --with-fpu, and --with-cpu OR --with-arch
[1].  That way no one gets stuck with a toolchain that has selections
they didn't expect.  Doing all of this would make the toolchain very
not-multilib, but that's kind of the point.

[1] - --with-cpu will restrict GCC to outputting instructions that the
specific processor.  --with-arch may give a slightly larger number of
instructions that GCC can output (but I'm not sure).  I'd say using
--with-arch would be better as the book could then have the
--with-arch value be the start of the target triplet in most cases.
This would allow for better co-habitation of multiple sets of clfs
embedded toolchains.
ie: --with-arch=armv7-a would have a triplet of armv7a-unknown-linux-uclibceabi

-Andrew



More information about the Clfs-dev mailing list