John Darrington <j...@darrington.wattle.id.au> writes: > On Thu, Jan 01, 2015 at 02:11:19AM -0500, Mark H Weaver wrote: > John Darrington <j...@darrington.wattle.id.au> writes: > > > * You patched gcc/config/arm/linux-eabi.h unnecessarily. > > > > Without that patch, GCC actually builds soft-float code, even though > > you may have passed the --with-float=hard flag. What bits of that > > patch do you think are not necessary? > > All of it seems to be unnecessary, by experiment. I've used the > resulting GCC to compile the following test program: > > 'foo' accepts the double arguments via registers and passes a double to > sinh via registers. I also checked a variant that simply returned a*b, > and it was clearly returning the result via register as well. > > I think it's quite clear that this is using the hard-float ABI, no? > > My results showed that simple binaries like that compiled (and ran) > ok. The problems arose when linking with bigger projects. I don't > recall the details. Have you tried building libc?
Yes, of course. I looked further into this, and discovered that the reason it all works is that the main 'gcc' driver arranges to pass "-mfloat-abi=hard" (and several others) to 'cc1' and 'as'. Mark