[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