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]
Other format: [Raw text]

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


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. 

OK, with you so far...

> I've changed the test
> so that it explicitly checks the tdep struct for the O64 ABI instead.

Ah, but both N32 and N64 use 8-byte registers, and 
at least N32 does NOT want to have this adjustment.
I'm guessing N64 doesn't either (haven't tried it yet).

Your patch makes N32 fail, but we could add to it thusly:

> 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 each ABI which might not want this shift.
> 
> 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
  +                     && tdep->mips_abi != MIPS_ABI_N32
  +                     && tdep->mips_abi != MIPS_ABI_N64
>                       && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
>                       && partial_len < MIPS_SAVED_REGSIZE
>                       && (typecode == TYPE_CODE_STRUCT ||


Of course, at this point, we might as well test for all the abis
that DO want the shift, instead of those that don't...

Michael


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