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

Kevin Buettner
2002-08-01T01:11:02Z

On Jul 31, 4:21pm, Michael Snyder wrote:

> Kevin Buettner wrote:
> >
> > On Jul 31, 3:44pm, Michael Snyder wrote:
> >
> > > > * 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.
> >
> > Okay, this patch is withdrawn while I retest...
> >
> > To save some time, can you tell me which N32 regressions you see?
>
> Buncha failures in structs.exp.
> If you have a look at the tweak that I sent, it might be the thing.

Hmm. It looks to me like SGI's cc and gcc disagree on the meaning of
the N32 ABI.

When I use the original test (or the tweak that you sent me), I see
the following failures when testing with cc, but not gcc:

FAIL: gdb.base/structs.exp: p L1
FAIL: gdb.base/structs.exp: p L2
FAIL: gdb.base/structs.exp: p L3
FAIL: gdb.base/structs.exp: p L4
FAIL: gdb.base/structs.exp: p L5
FAIL: gdb.base/structs.exp: p L6
FAIL: gdb.base/structs.exp: p L7
FAIL: gdb.base/structs.exp: p L9
FAIL: gdb.base/structs.exp: p L10
FAIL: gdb.base/structs.exp: p L11
FAIL: gdb.base/structs.exp: p L12

OTOH, when I use my posted change, I don't see the above failures in cc,
but I do in gcc.

So, it seems that cc wants small structs shifted, but that gcc does not.

Time for me to dig into the ABI documents to find out which compiler's
right...