Re: [patch] mips-tdep: info registers

Aleksandar Ristovski
2009-02-23T17:36:37Z

[-- Attachment #1: Type: text/plain, Size: 663 bytes --]

Joel Brobecker wrote:
>> The problem is, this doesn't do what you want it to do. It looks up
>> GDB internal register number 1. That just happens, at the moment,
>> to match up with the raw register backing $at. But it might change
>> in the future. It's not "the register named $1", which is what a
>> MIPS user should expect.
>
> I agree, now, that we shouldn't have this feature. I can have a look
> at removing it...
>

Joel, the attached removes numeric value syntax, but allows
it for mips; mips will explicitly map regno to raw regno
(which is currently 1-1).

I will let you take it from here.

Thanks,

Aleksandar Ristovski
QNX Software Systems

[-- Attachment #2: mips-tdep.c-info-registers-20090223.diff --]
[-- Type: text/x-patch, Size: 1406 bytes --]

Index: gdb/infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.231
diff -r1.231 infcmd.c
1951,1965d1950
< /* A register number? (how portable is this one?). */
< {
< char *endptr;
< int regnum = strtol (start, &endptr, 0);
< if (endptr == end
< && regnum >= 0
< && regnum < gdbarch_num_regs (gdbarch)
< + gdbarch_num_pseudo_regs (gdbarch))
< {
< gdbarch_print_registers_info (gdbarch, gdb_stdout,
< frame, regnum, fpregs);
< continue;
< }
< }
<
Index: gdb/mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.490
diff -r1.490 mips-tdep.c
442a443,449
> static char *mips_gpr_numeric_names[] = {
> "0", "1", "2", "3", "4", "5", "6", "7",
> "8", "9", "10", "11", "12", "13", "14", "15",
> "16", "17", "18", "19", "20", "21", "22", "23",
> "24", "25", "26", "27", "28", "29", "30", "31"
> };
>
449c456,461
< return "";
---
> {
> if (regno >= 0)
> return mips_gpr_numeric_names [regno];
> else
> return "";
> }
4604c4616,4618
< gdb_assert (regnum >= gdbarch_num_regs (gdbarch));
---
> if (regnum < gdbarch_num_regs (gdbarch)
> && regnum >= 0)
> regnum += gdbarch_num_regs (gdbarch); /* Print pseudo register. */