summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.reverse/insn-reverse.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.reverse/insn-reverse.exp')
-rw-r--r--gdb/testsuite/gdb.reverse/insn-reverse.exp15
1 files changed, 13 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.reverse/insn-reverse.exp b/gdb/testsuite/gdb.reverse/insn-reverse.exp
index 174b7957517..d60f873e0d0 100644
--- a/gdb/testsuite/gdb.reverse/insn-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/insn-reverse.exp
@@ -50,11 +50,14 @@ proc read_testcase { n } {
# the contents of registers are saved, and test compares them. If
# there is any differences, a FAIL is emitted.
-proc test { func } {
+proc test { func testcase_nr } {
global hex decimal
global gdb_prompt
with_test_prefix "$func" {
+ gdb_start_cmd $testcase_nr
+ gdb_test "" "" "wait for prompt"
+
gdb_breakpoint $func
gdb_test "continue"
@@ -74,15 +77,23 @@ proc test { func } {
# Registers contents before each forward single step.
set count 0
+ set insn_addr ""
for {} {$count < 500} {incr count} {
gdb_test_multiple "x/i \$pc" "" {
-re ".* ($hex) <.*>:\[ \t\]*(.*)\r\n$gdb_prompt $" {
+ set prev_insn_addr $insn_addr
set insn_addr $expect_out(1,string)
if [expr {$last_insn == $insn_addr}] {
break
}
+ if { $prev_insn_addr == $insn_addr } {
+ # Failed to make progress, might have run into SIGILL.
+ unsupported "no progress at: $expect_out(2,string)"
+ break
+ }
+
set insn_array($count) $expect_out(2,string)
}
}
@@ -125,5 +136,5 @@ if { ${n_testcases} == 0 } {
for { set i 0 } { ${i} < ${n_testcases} } { incr i } {
set testcase [read_testcase $i]
- test $testcase
+ test $testcase $i
}