[committed,gdb/testsuite] Fix gdb.mi/gdb2549.exp with check-read1
Commit Message
Hi,
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.
Committed to trunk.
Thanks,
- Tom
[gdb/testsuite] Fix gdb.mi/gdb2549.exp with 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/gdb.mi/gdb2549.exp | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)
@@ -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