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 =]
CBFalconer wrote:
Here is something I still have on my machine about this problem
As the subjects says, this seems to be only an ABI compatibility issue which would arise when linking files created with different GCC[-based GPC] versions.
Frank