From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cagney To: David B Anderson , drow@mvista.com Cc: gdb-patches@sources.redhat.com Subject: Re: [rfa] mips argument passing fixes for o32 Date: Sun, 15 Jul 2001 14:50:00 -0000 Message-id: <3B521018.5080706@cygnus.com> References: <200107130003.RAA57770@quasar.engr.sgi.com> X-SW-Source: 2001-07/msg00360.html > 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.