Here is something I still have on my machine about this problem -------- Original Message -------- Subject: Re: gcc 3.x breaks ABI compatibility? [Was: Re: Bug 00314 -- div() still broken] Date: Tue, 29 Apr 2003 08:44:45 +0100 From: Richard Dawe <rich@phekda.freeserve.co.uk> Reply-To: djgpp-workers@delorie.com To: Andris Pavenis <pavenis@latnet.lv> CC: djgpp-workers@delorie.com, Ben Peddell <killer.lightspeed@bigpond.com>,rudd@cyberoptics.com References: <3e9c6920$0$21928$afc38c87@> <lzLqa.23283$1s1.356122@newsfeeds.bigpond.com> <3EABA5AA.99B8EDE3@phekda.freeserve.co.uk> <200304280954.02899.pavenis@latnet.lv> Hello. Andris Pavenis wrote:
On Sunday 27 April 2003 12:40, Richard Dawe wrote:
[snip]
I've just looked at the gcc 2.95.2 sources and it looks like -fpcc-struct-return (i.e.: use memory) is the default there.
The gcc 3.2.2 source seems to default to using registers. See the end gcc/config/i386/djgpp.h:
/* Don't default to pcc-struct-return, because gcc is the only compiler, and we want to retain compatibility with older gcc versions. */ #define DEFAULT_PCC_STRUCT_RETURN 0
Why is this defined? I couldn't see a ChangeLog entry for djgpp.h. AFAICT this breaks backwards compatibility, i.e.: the opposite of what the comment says. Is there something I'm missing?
I copied it from other i386 targets. GCC-3.2.2 didn't compile without defining DEFAULT_PCC_STRUCT_RETURN, as there is no default
Not all i386 targets define DEFAULT_PCC_STRUCT_RETURN to be 0. Linux and NetBSD ELF don't. I think we need to use the same as the default for 2.95.x, i.e.: #define DEFAULT_PCC_STRUCT_RETURN 1 This is a pretty critical bug. Do you have any plans to rebuild gcc 3.2.2 (or 3.2.3) with this fix? Thanks, bye, Rich =] -- Richard Dawe [ http://www.phekda.freeserve.co.uk/richdawe/ ]