This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[rfa:ppc] Fix PPC/NBSD struct return; Was: userdef.exp regression for ppc?
- From: "Kevin B. Hendricks" <kevin dot hendricks at sympatico dot ca>
- To: gcc at gcc dot gnu dot org
- Cc: dev at porting dot openoffice dot org
- Date: Sun, 2 Jun 2002 20:43:16 -0400
- Subject: [rfa:ppc] Fix PPC/NBSD struct return; Was: userdef.exp regression for ppc?
Hi,
Will you please clarify the final decision you made regarding this issue?
The OpenOffice.org project has very special bridge code that allows calls
from C++ to UNO and back with exceptions and things properly handled. The
basic idea is alot like the libffi interface used in gcj java interpreter
code in gcc. Just a bit more elaborate due to structure alignment issues
and etc.
It seems the NetBSD OpenOffice.org guys have been using the x86 Linux
bridge for NetBSD x86 and the ppc Linux bridge code for NetBSD ppc.
So based on what I have read this code may have to be modified for NetBSD
ppc.
To prevent confusion, please specifiy whether or not you are (or will be)
using small structure returns in registers for any of
gcc 2.95.X
gcc 3.0.X
gcc 3.1
for NetBSD ppc.
BTW: PPC Linux has *never* followed the SYS V abi on this issue (never
returned structures 8 bytes or smaller in registers). I believe PPC Linux
maintainers at GCC were aware of this deviation but did not want to break
backwards compatibility until some future time when it seemed more
appropriate (Geoff Keating would remember). PPC Linux also deviates
from the abi by storing floating single values on the outgoing parameter
stack aligned to 4 instead of storing them always as double values aligned
to 8 as the abi states it should.
Is there any value in keeping NetBSD PPC in sync with PPC Linux for these
issues? Does you decision here impact NetBSD's ppc ability to run PPC
Linux binaries like the Blackdown JDK, etc under Linux emulation?
Either way I would appreciate knowing your plans so that I can fix the
bridge code in NetBSD for ppc (for both gcc 3.X and gcc 2.95.X).
Thanks,
Kevin