ABI convention for structs <=8 bytes?

Andreas Tobler toa at pop.agri.ch
Wed Jun 15 20:57:56 GMT 2005


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.
>  

So, for the non native English speaker: FreeBSD/PowerPC will use the 
final SYSV ABI (SYSTEM V APPLICATION BINARY INTERFACE PowerPC Processor 
Supplement) Dated: Part No: 802-3334-10 Revision A, September 1995 ?

I was not speaking about ELF, only the ABI. I do not care about which 
one, the broken one would have been a bit more easy. The final one needs 
some more coding.

Side note, Darwin uses a different ABI and I just mentioned it as a 
sample passing structs in mem and not in $R. OpenSolaris/PPC is 
completely new to me and I wonder what it target is.
And my question based on the uncertainty what other *BSD targets are doing.

Thanks for clarification,
Regards,
Andreas


More information about the freebsd-ppc mailing list