[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