diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3cc7d2a4c5..c373022c14 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2004-08-08 Daniel Jacobowitz + + PR gdb/1736 + * gdb.base/sigaltstack.exp (finish_test): New procedure. KFAIL + for i?86-*-linux*. + 2004-08-08 Daniel Jacobowitz * gdb.arch/i386-prologue.exp: Compile without debug information. diff --git a/gdb/testsuite/gdb.base/sigaltstack.exp b/gdb/testsuite/gdb.base/sigaltstack.exp index 8f09ccf572..3b32d08d75 100644 --- a/gdb/testsuite/gdb.base/sigaltstack.exp +++ b/gdb/testsuite/gdb.base/sigaltstack.exp @@ -78,11 +78,26 @@ gdb_expect_list "backtrace" ".*$gdb_prompt $" { "\[\r\n\]+.7 \[^\r\n\]* main .*" } +proc finish_test { pattern msg } { + gdb_test_multiple "finish" $msg { + -re "Cannot insert breakpoint 0" { + # Some platforms use a special read-only page for signal + # trampolines. We can't set a breakpoint there, and we + # don't gracefully fall back to single-stepping. + setup_kfail "i?86-*-linux*" gdb/1736 + fail "$msg (could not set breakpoint)" + } + -re "$pattern" { + pass $msg + } + } +} + # Finish? -gdb_test "finish" "signal handler called." "finish from catch LEAF" -gdb_test "finish" "thrower .next_level=INNER, .*" "finish to throw INNER" -gdb_test "finish" "catcher .*" "finish to catch INNER" -gdb_test "finish" "signal handler called.*" "finish from catch INNER" -gdb_test "finish" "thrower .next_level=OUTER, .*" "finish to OUTER" -gdb_test "finish" "catcher .*" "finish to catch MAIN" -gdb_test "finish" "main .*" "finish to MAIN" +finish_test "signal handler called." "finish from catch LEAF" +finish_test "thrower .next_level=INNER, .*" "finish to throw INNER" +finish_test "catcher .*" "finish to catch INNER" +finish_test "signal handler called.*" "finish from catch INNER" +finish_test "thrower .next_level=OUTER, .*" "finish to OUTER" +finish_test "catcher .*" "finish to catch MAIN" +finish_test "main .*" "finish to MAIN"