This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


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: arm-unknown-linux-gnueabi ABI selection


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


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