[gdb/testsuite] Fix gdb.mi/gdb2549.exp with check-read1
authorTom de Vries <tdevries@suse.de>
Tue, 3 Mar 2020 10:34:53 +0000 (11:34 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 3 Mar 2020 10:34:53 +0000 (11:34 +0100)
When running gdb.mi/gdb2549.exp with check-read1, we get:
...
Running src/gdb/testsuite/gdb.mi/gdb2549.exp ...
FAIL: gdb.mi/gdb2549.exp: register values t (timeout)
...

The problem is that the command generates a lot of output, which is matched by
a single '.*':
...
mi_gdb_test "666-data-list-register-values t" \
  "666\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$binary\"\}.*\\\]" \
  "register values t"
...

Fix this by splitting up the matching and calling exp_continue after each
number/value pair.

Tested on x86_64-linux with make targets check and check-read1.

gdb/testsuite/ChangeLog:

2020-03-03  Tom de Vries  <tdevries@suse.de>

* gdb.mi/gdb2549.exp: Fix "register values t" check-read1 timeout.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/gdb2549.exp

index 73a05d31435009f2adb992c740f674c62a2fd82b..0563fec5326da5b9808b9505d9cc82a6538c0b7c 100644 (file)
@@ -1,3 +1,7 @@
+2020-03-03  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.mi/gdb2549.exp: Fix "register values t" check-read1 timeout.
+
 2020-03-03  Tom de Vries  <tdevries@suse.de>
 
        * gdb.mi/list-thread-groups-available.exp: Use -prompt syntax for
index 0b4cb6be387e94c3fe7519d5e8d2e881c731ddbe..cc6441c8ec0d4ff74c4b6c6a1930fc91cf273fd1 100644 (file)
@@ -51,6 +51,7 @@ proc register_tests_no_exec { } {
 proc register_tests { } {
     global hex
     global decimal
+    global mi_gdb_prompt
     set octal "\[0-7\]+"
     set binary "\[0-1\]+"
     set float "\\-?((\[0-9\]+(\\.\[0-9\]+)?(e\[-+\]\[0-9\]+)?)|(nan\\($hex\\)))"
@@ -71,9 +72,35 @@ proc register_tests { } {
            "555\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$octal\"\}.*\\\]" \
            "register values o"
 
-    mi_gdb_test "666-data-list-register-values t" \
-           "666\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$binary\"\}.*\\\]" \
-           "register values t"
+    set cmd "666-data-list-register-values t"
+    set test "register values t"
+    set state 0
+    gdb_test_multiple $cmd $test -prompt "$mi_gdb_prompt$" {
+       -re "666\\^done,register-values=\\\[" {
+           if { $state == 0 } {
+               set state 1
+               exp_continue
+           }
+           fail $gdb_test_name
+       }
+       -re "\{number=\"$decimal\",value=\"$binary\"\}" {
+           if { $state != 0 } {
+               set state 2
+               exp_continue
+           }
+           fail $gdb_test_name
+       }
+       -re "\{number=\"$decimal\",value=\"\[^\"\]*\"\}" {
+           exp_continue
+       }
+       -re "\]\r\n$mi_gdb_prompt$" {
+           if { $state == 2 } {
+               pass $gdb_test_name
+           } else {
+               fail $gdb_test_name
+           }
+       }
+    }
 }
 
 register_tests_no_exec