arm-unknown-linux-gnueabi ABI selection
Michael Abbott
michael@araneidae.co.uk
Fri Aug 29 07:08:00 GMT 2008
On Fri, 29 Aug 2008, Martin Guy wrote:
> Yeah, I got this too.
>
> The trick is to check "EABI" and leave the ABI field blank - it
> correctly selects aapcs and aapcs-linux in the various contextx they
> are required.
I'm rebuilding now with something along these lines. I think this code in
arch/arm/functions is wrong:
> > case "${CT_ARCH_ABI},${CT_ARCH_ARM_EABI}" in
> > *,) ;;
> > aapcs,y)
> > CT_DoLog DEBUG "'--with-abi=aapcs' is in fact '-mabi=aapcs-linux' when used in CFLAGS."
> > CT_ARCH_ABI_CFLAGS="-mabi=aapcs-linux"
> > ;;
> > ,y)
> > CT_DoLog WARN "Forcing ABI to 'aapcs-linux' for use with EABI."
> > CT_ARCH_WITH_ABI="--with-abi=aapcs"
> > CT_ARCH_ABI_CFLAGS="-mabi=aapcs-linux"
> > ;;
> > *,y)
> > CT_DoLog ERROR "ABI='${CT_ARCH_ABI}' not supported for EABI."
> > CT_Abort "If you know you are right, please edit 'arch/arm/functions' in crosstool-NG sources."
> > ;;
> > esac
The simplest solution, I think, would be to add the line
CT_ARCH_WITH_ABI="--with-abi=aapcs"
to the "aapcs,y)" branch, but it would probably be cleaner to decide
whether CT_ARCH_ABI is allowed to be set at all. Eg:
if [ "$CT_ARCH_ARM_ABI" = y ]; then
case "$CT_ARCH_ABI" in
aapcs) ;;
) ;;
*) CT_Abort "oh dear" ;;
esac
CT_ARCH_WITH_ABI="--with-abi=aapcs"
CT_ARCH_ABI_CFLAGS="-mabi=aapcs-linux"
fi
I don't think CT_ARCH_ABI is effectively used anywhere else, in which case
it needs to go in the bin altogether, in which case this code becomes a
*lot* simpler. The only other place I can see CT_ARCH_ABI being used is
in CT_DoBuildTargetTuple (scripts/functions) in the following (elided
and reformatted for clarity):
unset ... CT_ARCH_ABI ...
...
[ "${CT_ARCH_ABI}" ] && {
CT_ARCH_ABI_CFLAG="-mabi=${CT_ARCH_ABI}";
CT_ARCH_WITH_ABI="--with-abi=${CT_ARCH_ABI}"; }
Very odd. The unset means the following block of code is never executed.
Am I missing something, or is there a whole block of code ready for the
bin here?
n
If I'm seeing things right it looks as if we can scrap CT_ARCH_ABI
altogether and replace the arch/arm/functions code above with
if [ "$CT_ARCH_ARM_ABI" = y ]; then
CT_ARCH_WITH_ABI="--with-abi=aapcs"
CT_ARCH_ABI_CFLAGS="-mabi=aapcs-linux"
fi
Hmm.
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list