From: Fred Fish Date: Fri, 5 May 2006 18:04:04 +0000 (+0000) Subject: Approved by Daniel Jacobowitz X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=401835eb9ca4a19ca83d6fe120e14f3d3354437e;p=binutils-gdb.git Approved by Daniel Jacobowitz 2006-05-06 Fred Fish * mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian structs or unions independent of ABI register size. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8ede9c90578..7b146dfc215 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-05-06 Fred Fish + + * mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian + structs or unions independent of ABI register size. + 2006-05-06 Fred Fish * mips-tdep.c (mips_o64_return_value): Replace stub that always diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 48e926f4b87..43782062ebe 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -3719,26 +3719,9 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, big endian targets. It does not seem to be necessary to do the - same for integral types. - - Also don't do this adjustment on O64 binaries. - - cagney/2001-07-23: gdb/179: Also, GCC, when - outputting LE O32 with sizeof (struct) < - mips_abi_regsize(), generates a left shift as - part of storing the argument in a register a - register (the left shift isn't generated when - sizeof (struct) >= mips_abi_regsize()). Since - it is quite possible that this is GCC - contradicting the LE/O32 ABI, GDB has not been - adjusted to accommodate this. Either someone - needs to demonstrate that the LE/O32 ABI - specifies such a left shift OR this new ABI gets - identified as such and GDB gets tweaked - accordingly. */ + same for integral types. */ - if (mips_abi_regsize (gdbarch) < 8 - && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG + if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG && partial_len < mips_abi_regsize (gdbarch) && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION))