On Sun, Dec 22, 2002 at 10:40:33AM +1100, Bruce Evans wrote:
> > that the pcc struct return convention had something to do with it.
> 
> Did we really mean to change this?  It is a relatively recent change.  From
> cvs history:
> 
> % RCS file: /home/ncvs/src/contrib/gcc/config/freebsd.h,v
> % Working file: freebsd.h
> % head: 1.37
> % ...
> % ----------------------------
> % revision 1.37
> % date: 2002/04/30 17:22:42;  author: obrien;  state: Exp;  lines: +34 -460
> % MI bits for Gcc 3.1.
> % ----------------------------
> 
> This contains mounds changes, one of which breaks 5-10 (?) years of binary
> compatibility within gcc-compiled objects:

Actually only a 4 years -- the a.out->ELF cut over broke the "5-10 years
of binary compatibility".  As mentioned at
http://gcc.gnu.org/ml/gcc-patches/2002-01/msg01783.html we really made a
mistake when we did the a.out->ELF cut over thus resulting in us breaking
the i386 ELF ABI.  I have wondered in the past how this affects is with
sharing XFree86 binary modules with Linux.

That said, the ABI change was not intentional.  It was a GCC bug.


> % RCS file: /home/ncvs/src/contrib/gcc/config/freebsd.h,v
...
> % -#undef  DEFAULT_PCC_STRUCT_RETURN
> % -#define DEFAULT_PCC_STRUCT_RETURN 0

I moved this setting from the MI file to the i386 MD file.
 
> I think gcc didn't override its default of DEFAULT_PCC_STRUCT_RETURN = 1
> on i386's meany years ago, since bcc uses this method of returning structs
> and ISTR copying the gcc behaviour.

AFAIK, stock GCC always used DEFAULT_PCC_STRUCT_RETURN=1 for i386 ELF.
DEFAULT_PCC_STRUCT_RETURN=0 was the a.out default, as there wasn't a
standard one had to adhear to.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to