Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Dec 2002 20:53:41 -0800
From:      "David O'Brien" <obrien@FreeBSD.ORG>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Juli Mallett <jmallett@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: WEIRD! div() broken on -CURRENT?
Message-ID:  <20021224045341.GB17618@dragon.nuxi.com>
In-Reply-To: <20021222103405.A7492-100000@gamplex.bde.org>
References:  <20021221162001.A17127@dilbert.robbins.dropbear.id.au> <20021222103405.A7492-100000@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021224045341.GB17618>