gdb: rs6000_dwarf2_reg_to_regnum return -1 for unknown register number
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 30 Oct 2020 19:01:13 +0000 (15:01 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Fri, 30 Oct 2020 19:01:13 +0000 (15:01 -0400)
With the current implementation of rs6000_dwarf2_reg_to_regnum, if an
unknown DWARF register number is passed, the same number is returned as
the internal GDB number.  This assumes that the internal GDB register
numbers match the DWARF register numbers, which is not the case.

Change it to return -1, as documented in gdbarch.sh for the
dwarf2_reg_to_regnum method.

This fixes a failure in gdb.dwarf2/bad-regnum.exp:

     (gdb) info addr foo1
    -Symbol "foo1" is a variable in $.
    -(gdb) FAIL: gdb.dwarf2/bad-regnum.exp: info addr foo1
    +Symbol "foo1" is a variable in $bad_register_number.
    +(gdb) PASS: gdb.dwarf2/bad-regnum.exp: info addr foo1

I ran the entire testsuite on powerpc64 (gcc203 on the compile farm) and
didn't see any regression.

gdb/ChangeLog:

* rs6000-tdep.c (rs6000_dwarf2_reg_to_regnum): Return -1 for
  unknown register numbers.

Change-Id: I585aa07a08f845a46c36bfdb6d3118ea94f8f54d

gdb/ChangeLog
gdb/rs6000-tdep.c

index 6ebc9bedb63862e2cdfc062de8ceca3e1c2aca7b..185d4a37e04847410190fa95cfbd54ab39b0892a 100644 (file)
@@ -1,3 +1,7 @@
+2020-10-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * rs6000-tdep.c (rs6000_dwarf2_reg_to_regnum): Return -1 for
+
 2020-10-30  Tom Tromey  <tromey@adacore.com>
 
        * Makefile.in (stamp-init): Depend on config.status.
index 264d4e03e7fc205a141f83b77f4a88d194e1a548..4b8c3ed99cacda0c2b4621e9633eb7894c0c3950 100644 (file)
@@ -3240,9 +3240,10 @@ rs6000_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int num)
         return tdep->ppc_vrsave_regnum;
       case 612:
         return tdep->ppc_spefscr_regnum;
-      default:
-        return num;
       }
+
+  /* Unknown DWARF register number.  */
+  return -1;
 }
 
 /* Translate a .eh_frame register to DWARF register, or adjust a