On Thu, Jan 01, 2015 at 01:22:53PM -0500, Mark H Weaver wrote: 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'. Ok. Right now, I don't remember exactly at what point I discovered the linux-eabi.h changes were necessary, but they were indeed necessary - I didn't do it for fun! I expect you will find out in due course.
J' -- PGP Public key ID: 1024D/2DE827B3 fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3 See http://sks-keyservers.net or any PGP keyserver for public key.
signature.asc
Description: Digital signature