This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[commit] Patch for mips_o64_return_value to fix calling functions by hand (additional patch)
- From: Fred Fish <fnf at specifix dot com>
- To: Daniel Jacobowitz <drow at false dot org>
- Cc: gdb-patches at sourceware dot org
- Date: Fri, 5 May 2006 14:07:10 -0400
- Subject: [commit] Patch for mips_o64_return_value to fix calling functions by hand (additional patch)
- References: <200604271004.44938.fnf@specifix.com> <200605021630.15861.fnf@specifix.com> <20060505171050.GD31029@nevyn.them.org>
- Reply-to: fnf at specifix dot com
On Friday 05 May 2006 13:10, Daniel Jacobowitz wrote:
> Aside: The comment below the one you're deleting was written well
> before GCC 3.4, in particular http://gcc.gnu.org/gcc-3.4/mips-abi.html.
> So the FIXME is probably fixed for o32 now. And this is now an o64
> only function, so that comment could be deleted entirely.
OK, I added that to the change.
> > 2006-05-02 Fred Fish <fnf@specifix.com>
> >
> > * mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian
> > structs or unions independent of ABI register size.
>
> OK.
Checked in now.
-Fred
============================================================================
2006-05-06 Fred Fish <fnf@specifix.com>
* mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian
structs or unions independent of ABI register size.
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.390
diff -u -p -r1.390 mips-tdep.c
--- mips-tdep.c 5 May 2006 17:50:33 -0000 1.390
+++ mips-tdep.c 5 May 2006 18:02:59 -0000
@@ -3719,26 +3719,9 @@ mips_o64_push_dummy_call (struct gdbarch
big endian targets.
It does not seem to be necessary to do the
- same for integral types.
+ 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. */
-
- 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))