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

Michael Snyder
2002-07-31T23:02:38Z

Kevin Buettner wrote:
>
> 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.

Kevin,

This change makes things worse for N32. I haven't tested
N64 yet. I think we're gonna have to look at these lines
from the perspective of all 3 (6) abis.

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