gdb/testsuite: Filter out some registers for riscv
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 1 Apr 2018 21:02:33 +0000 (22:02 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Thu, 3 May 2018 21:31:48 +0000 (22:31 +0100)
On riscv the cycle counter, and instructions retired counter CSRs are
read only, this causes problems in the gdb.base/callfuncs.exp test, as
the values in these CSRs change after an inferior call, the check that
no target registers have been modified then fails.

Luckily the test already has a mechanism in place for filtering out
registers that are modified (and can't be restored) by an inferior call,
so this commit adds the problem registers into this list for riscv.

In the future we may end up needing to filter out more CSRs, but right
now, for the targets I have access too, these are the only ones causing
problems.

gdb/testsuite/ChangeLog:

* gdb.base/callfuncs.exp (fetch_all_registers): Add riscv register
filter pattern.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/callfuncs.exp

index b4771be3731f0034a0954f11e4b45fcdfba9aee5..188e6b135880a266cbfc73bd144dc4d441981ed5 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * gdb.base/callfuncs.exp (fetch_all_registers): Add riscv register
+       filter pattern.
+
 2018-05-02  Pedro Alves  <palves@redhat.com>
 
        * gdb.base/breakpoint-in-ro-region.exp: Adjust to to_resume and
index 946369387527c7dcf8773b66181c4ed26ad4f36a..c5e39918c2ace881d60c78c98cd87a6a7ea63a7c 100644 (file)
@@ -285,6 +285,16 @@ proc fetch_all_registers {test} {
            }
            exp_continue
        }
+       -re "^\(?:cycle\|instret\)\[ \t\]+\[^\r\n\]+\r\n" {
+           if [istarget "riscv*-*-*"] {
+               # Filter out the cycle counter and instructions
+               # retired counter CSRs which are read-only, giving
+               # spurious differences.
+           } else {
+               lappend all_registers_lines $expect_out(0,string)
+           }
+           exp_continue
+       }
        -re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\r\n" {
            lappend all_registers_lines $expect_out(0,string)
            exp_continue