arm-unknown-linux-gnueabi ABI selection

Michael Abbott
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


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" ;;

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_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?
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


For unsubscribe information see

More information about the crossgcc mailing list