diff options
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r-- | gdb/testsuite/gdb.base/reggroups.exp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/gdb/testsuite/gdb.base/reggroups.exp b/gdb/testsuite/gdb.base/reggroups.exp index f96153b..56c00e5 100644 --- a/gdb/testsuite/gdb.base/reggroups.exp +++ b/gdb/testsuite/gdb.base/reggroups.exp @@ -27,7 +27,7 @@ if {![runto_main]} { return 0 } -set invalid_register_re "Invalid register .*" +set invalid_register_re "Invalid register \[^\r\n\]*" # Fetch all reggroups from 'maint print reggroups'. @@ -51,6 +51,7 @@ proc fetch_reggroups {test} { } } + verbose -log "found reggroups: $reggroups" return $reggroups } @@ -78,21 +79,34 @@ proc fetch_reggroup_regs {reggroup test} { # xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, ... }} # set regs {} - gdb_test_multiple "info reg $reggroup" $test { - -re "info reg $reggroup\r\n" { + set have_invalid_register_fail 0 + set re_regname "\[0-9a-zA-Z_-\]+" + set re_hws "\[ \t\]+" + set re_hs "\[^\n\r\]+" + set re_eol "\r\n" + set re_lookahead_eol "(?=$re_eol)" + gdb_test_multiple "info reg $reggroup" $test -lbl { + -re "^info reg $reggroup" { exp_continue } - -re "^(\[0-9a-zA-Z-\]+)\[ \t\]+(0x\[0-9a-f\]+)\[ \t\]+(\[^\n\r\]+)\r\n" { + -re "^${re_eol}($re_regname)$re_hws$::hex$re_hws${re_hs}$re_lookahead_eol" { lappend regs $expect_out(1,string) exp_continue } -re $invalid_register_re { - fail "$test (unexpected invalid register response)" + set have_invalid_register_fail 1 + exp_continue } - -re "$gdb_prompt $" { - pass $test + -re -wrap "" { + if { $have_invalid_register_fail } { + fail "$test (unexpected invalid register response)" + } else { + pass $test + } } } + + verbose -log "found regs in reggroup $reggroup: [join $regs]" return $regs } |