This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [rfa] mips argument passing fixes for o32


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]