On Tue, Jan 31, 2006, Johannes Stezenbach wrote:
> On Tue, Jan 31, 2006, Thiemo Seufer wrote:
> > On Tue, Jan 31, 2006 at 07:14:14PM +0100, Johannes Stezenbach wrote:
> > [snip]
> > > Yes, that's why I said I'm confused about mips_isa_regsize() vs.
> > > mips_abi_regsize().
> > >
> > > mips_abi_regsize() correctly says the register size is 32bit for o32,
> > > but mips_register_type() calls mips_isa_regsize(), not
> > > mips_abi_regsize(). That's why I chose to "fix" mips_isa_regsize().
> > >
> > > Or should mips_register_type() simply call mips_abi_regsize()?
> >
> > Without having had a look at the code I think that's the right fix.
>
> OK, I'll test if that works for me, and post results here
OK, after some testing, the patch below seems to work.
Johannes
--- gdb-6.3/gdb/mips-tdep.c.orig 2004-10-15 09:25:03.000000000 +0200
+++ gdb-6.3/gdb/mips-tdep.c 2006-01-31 20:27:54.000000000 +0100
@@ -716,16 +716,16 @@ mips_register_type (struct gdbarch *gdba
&& (regnum % NUM_REGS) < mips_regnum (current_gdbarch)->fp0 + 32)
{
/* The floating-point registers raw, or cooked, always match
- mips_isa_regsize(), and also map 1:1, byte for byte. */
+ mips_abi_regsize(), and also map 1:1, byte for byte. */
switch (gdbarch_byte_order (gdbarch))
{
case BFD_ENDIAN_BIG:
- if (mips_isa_regsize (gdbarch) == 4)
+ if (mips_abi_regsize (gdbarch) == 4)
return builtin_type_ieee_single_big;
else
return builtin_type_ieee_double_big;
case BFD_ENDIAN_LITTLE:
- if (mips_isa_regsize (gdbarch) == 4)
+ if (mips_abi_regsize (gdbarch) == 4)
return builtin_type_ieee_single_little;
else
return builtin_type_ieee_double_little;
@@ -738,7 +738,7 @@ mips_register_type (struct gdbarch *gdba
{
/* The raw or ISA registers. These are all sized according to
the ISA regsize. */
- if (mips_isa_regsize (gdbarch) == 4)
+ if (mips_abi_regsize (gdbarch) == 4)
return builtin_type_int32;
else
return builtin_type_int64;
|