ABI convention for structs <=8 bytes?
John Baldwin
jhb at FreeBSD.org
Thu Jun 16 13:42:49 GMT 2005
On Wednesday 15 June 2005 01:21 pm, David O'Brien wrote:
> On Tue, Jun 14, 2005 at 10:28:39PM +0200, Andreas Tobler wrote:
> > My situation is the following, there are two implementation of the SYSv4
> > abi for PPC around in gcc. The first one, a draft, passes structs
> > smaller or equal to 8 bytes in memory. The second one, the final one,
> > passes them in registers.
> > So far the fbsd ppc uses the final one. Fine. Except that it is a
> > nightmare to build the resulting struct out of registers with alignment
> > rules...
> >
> > OpenBSD, NetBSD and Linux PPC which rely on SYSV4 pass them in memory.
> > AIX and Darwin do pass them also in memory but they have a different ABI.
> >
> > NetBSD passed it until 1.5 also in registers, according to the comments
> > in gdb ppcnbsd-tdep.c. Now they use the 'broken' convention. I do not
> > know more about why and how long this will be...
> >
> > My simple question is, will the fbsd-ppc ABI convention stay with the
> > final SYSV4 ABI from Sun, or will there be a switch to the broken one?
>
> My plans are to stick to the official ELF (we do do the full SVR4 ABI). I
> think sticking to Darwin and OpenSolaris/PPC (in-progress) has merit.
I don't think you really read his e-mail. Linux, OpenBSD, NetBSD, Linux, AIX
_and_ Darwin all use an ABI that passes these structs in memory rather than
registers. The first three happen to use a specific draft ABI whereas Darwin
and AIX use some other ABI that also passes them in memory. No one but
FreeBSD uses the "final" ABI that tries to pass them in registers except
perhaps for the OpenSolaris/PPC that you just mentioned. It would seem that
even if Solaris goes the "final" route, we would still be in the vast
majority for ppc ABIs.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-ppc
mailing list