gdb/riscv: Loop over all registers for 'info all-registers'
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 16 Jun 2020 16:00:33 +0000 (17:00 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Thu, 25 Jun 2020 17:07:33 +0000 (18:07 +0100)
Currently the 'info all-registers' command only loops over those
registers that are known to GDB.  Any registers that are unknown, that
is, are mentioned in the target description, but are not something GDB
otherwise knows, will not be displayed.

This feels wrong, so this commit fixes this mistake.  The output of
'info all-registers' now matches 'info registers all'.

gdb/ChangeLog:

* riscv-tdep.c (riscv_print_registers_info): Loop over all
registers, not just the known core set of registers.

gdb/testsuite/ChangeLog:

* gdb.arch/riscv-tdesc-regs.exp: New test cases.

gdb/ChangeLog
gdb/riscv-tdep.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/riscv-tdesc-regs.exp

index f3ede9463f3bfb3065a3412717ec7abe93ac60ce..0a36c6bc48c85df2e4a4311bcd0f124416e2e8ee 100644 (file)
@@ -1,3 +1,8 @@
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * riscv-tdep.c (riscv_print_registers_info): Loop over all
+       registers, not just the known core set of registers.
+
 2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * riscv-tdep.c (riscv_register_name): Return NULL for duplicate
index cfc45d1a7f5818c328bb122a89da87294e5cb991..b86ba6305402c84aaaf4665855125ae37e93d3c8 100644 (file)
@@ -1071,7 +1071,7 @@ riscv_print_registers_info (struct gdbarch *gdbarch,
       else
        reggroup = general_reggroup;
 
-      for (regnum = 0; regnum <= RISCV_LAST_REGNUM; ++regnum)
+      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); ++regnum)
        {
          /* Zero never changes, so might as well hide by default.  */
          if (regnum == RISCV_ZERO_REGNUM && !print_all)
index 00903273f1a77d9748dbdd36f8c79ae87e0ea7e4..8ad2448080aed42e6e8e4a69c4d6e5ee632a5e1b 100644 (file)
@@ -1,3 +1,7 @@
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * gdb.arch/riscv-tdesc-regs.exp: New test cases.
+
 2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * gdb.arch/riscv-tdesc-regs.exp: Extend test case.
index 9feddbad07491d7f24933ab9cc251ee8e7c0b1ac..1be32e0e8a1e86e5c2e02568a0bd8722351ffb54 100644 (file)
@@ -80,11 +80,15 @@ gdb_test "info registers \$csr0" "Invalid register `csr0'"
 gdb_test "info registers \$dscratch0" "dscratch0\[ \t\]+.*"
 gdb_test "info registers \$dscratch" "dscratch\[ \t\]+.*"
 
-foreach rgroup {all save restore} {
+foreach rgroup {x_all all save restore} {
     # Now use 'info registers all' to see how many times the floating
     # point status registers show up in the output.
     array set reg_counts {}
-    set test "info registers $rgroup"
+    if {$rgroup == "x_all"} {
+       set test "info all-registers"
+    } else {
+       set test "info registers $rgroup"
+    }
     gdb_test_multiple $test $test {
        -re ".*info registers all\r\n" {
            verbose -log "Skip to first register"
@@ -107,7 +111,7 @@ foreach rgroup {all save restore} {
            set count 0
        }
        if {($reg == "unknown_csr" || $reg == "dscratch") \
-               && $rgroup != "all"} {
+               && $rgroup != "all" && $rgroup != "x_all"} {
            gdb_assert {$count == 0} \
                "register $reg not seen in reggroup $rgroup"
        } else {