[PATCH 03/18] Set -msoft-float and assembler target options in the bootwrapper.

Segher Boessenkool segher at kernel.crashing.org
Thu Jan 25 09:45:46 EST 2007


>>> Without -msoft-float, floating point state saving code can be  
>>> executed
>>> (at least with certain buggy versions of GCC, which don't clear  
>>> bit  6 of
>>> CR before calling a varargs function with no varargs parameters).
>> I have a hard time understanding what this means.  Can you
>> elaborate please?
>
> The PowerPC ABI uses bit 6 of CR to indicate to a varargs function  
> whether one (or more) of the varargs parameters is floating point.   
> This is used (among other things) by the varargs function to  
> determine whether to save a floating point context.  Normally, GCC  
> will clear the bit when calling a vararg function with integer-only  
> parameters, but at least some versions (I saw it on 3.4.3) will not  
> touch the bit at all when the varargs list is empty.

Gotcha.  Now, should a varargs function that doesn't get passed
any actual varargs use that bit at all?  If not, the Linux printf()
(or some support function) is broken; if so, is this fixed in later
GCC versions?  If not, please report it (http://gcc.gnu.org/bugzilla).

>>>  AFLAGS += $(cpu-as-y)
>>>  CFLAGS += $(cpu-as-y)
>>> +export cpu-as-y
>> Maybe it would be better to export CFLAGS instead (on the
>> other hand, you might have to cut out some options from it
>> for 32-bit compiles, dunno).
>
> That'd also bring in the normal Linux headers, which the  
> bootwrapper appears to be trying to avoid.

Right.  cpu-as-y is an ugly name to export though, let's use a
better name (that explains what it's for -- PLATFORM-AFLAGS or
something like that).


Segher




More information about the Linuxppc-dev mailing list