This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [rfa] mips argument passing fixes for o32
- To: David B Anderson <davea at quasar dot engr dot sgi dot com>, drow at mvista dot com
- Subject: Re: [rfa] mips argument passing fixes for o32
- From: Andrew Cagney <ac131313 at cygnus dot com>
- Date: Sun, 15 Jul 2001 17:50:16 -0400
- Cc: gdb-patches at sources dot redhat dot com
- References: <200107130003.RAA57770@quasar.engr.sgi.com>
> Andrew Cagney:
> |(A+3, yes, sorry).
> |
> |The SGI compilers are big endian (correct?) so who knows what they would
> |do in the little endian case.
>
>
> Correct. Years ago it was possible to emit little-endian
> code, but on MIPS/IRIX that was irrelevant and is no longer
> supported.
> davea@sgi.com
You wouldn't have access to such a machine by any chance? :-)
I'm getting the feeling I'm wrong with this one - for some strange
historical reason LE o32 really does left/right shift small parameters
(I'm still mining the archives).
Assuming that is the case ...
> if (!MIPS_EABI
> && MIPS_SAVED_REGSIZE < 8
> - && TARGET_BYTE_ORDER == BIG_ENDIAN
> + && (TARGET_BYTE_ORDER == BIG_ENDIAN
> + || TYPE_LENGTH (arg_type) < MIPS_SAVED_REGSIZE)
> && partial_len < MIPS_SAVED_REGSIZE
> && (typecode == TYPE_CODE_STRUCT ||
> typecode == TYPE_CODE_UNION))
I don't know that line being added should be
|| TYPE_LENGTH (arg_type) < MIPS_SAVED_REGSIZE
it should at least be guarded by ``ABI == o32''. What does LE n32 do
for instance?
If GCC, for o32, always left shifts the structs dregs (PARTIAL_LEN <
MIPS_SAVED_REGSIZE) then is just the ABI test needed?
Andrew
PS: That function is the official example of how to _not_ multi-arch an ABI.