Re: [PATCH 03/18] Set -msoft-float and assembler target options in the bootwrapper.
From: Segher Boessenkool <hidden>
Date: 2007-01-24 22:46:11
quoted
quoted
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).
quoted
quoted
AFLAGS += $(cpu-as-y) CFLAGS += $(cpu-as-y) +export cpu-as-yMaybe 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