[RFA] mips_push_arguments(): Make O64 ABI test explicit

Kevin Buettner
2002-07-31T21:04:59Z

Now that mips-tdep.c defines another ABI such that

mips_default_saved_regsize == 8,

it becomes necessary to revise one of the conditions in
mips_push_arguments().

The comment above the test in question says:

...
Also don't do this adjustment on EABI and O64
binaries.
...

I believe that the expression ``MIPS_SAVED_REGSIZE < 8'' was being used
to test to see if the O64 ABI was being used. I've changed the test
so that it explicitly checks the tdep struct for the O64 ABI instead.

This patch fixes the following failures for the N64 ABI:

FAIL: gdb.base/call-ar-st.exp: print print_small_structs, pattern 4
FAIL: gdb.base/call-ar-st.exp: print print_small_structs from print_long_arg_list, pattern 4

Okay to commit?

* mips-tdep.c (mips_push_arguments): Don't assume that
``MIPS_SAVED_REGSIZE < 8'' means that the o64 abi is in use.
Instead, test for it explicitly.

Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.85
diff -u -p -r1.85 mips-tdep.c
--- mips-tdep.c 31 Jul 2002 20:26:49 -0000 1.85
+++ mips-tdep.c 31 Jul 2002 20:48:49 -0000
@@ -2615,7 +2615,7 @@ mips_push_arguments (int nargs,
such and GDB gets tweaked accordingly. */

if (!MIPS_EABI
- && MIPS_SAVED_REGSIZE < 8
+ && tdep->mips_abi != MIPS_ABI_O64
&& TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
&& partial_len < MIPS_SAVED_REGSIZE
&& (typecode == TYPE_CODE_STRUCT ||