Further robustify gdb.base/bp-permanent.exp.
authorSandra Loosemore <sandra@codesourcery.com>
Mon, 3 Aug 2015 18:09:32 +0000 (11:09 -0700)
committerSandra Loosemore <sandra@codesourcery.com>
Mon, 3 Aug 2015 18:09:32 +0000 (11:09 -0700)
2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>

gdb/testsuite/
* gdb.base/bp-permanent.exp: Report test as unsupported if
the target cannot stop at the permanent breakpoint.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/bp-permanent.exp

index d943900f401362b786d73da9847d319b922758c2..f633c115a54caf6fd90cc7b0905b7f348051ab98 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * gdb.base/bp-permanent.exp: Report test as unsupported if
+       the target cannot stop at the permanent breakpoint.
+
 2015-08-03  Doug Evans  <dje@google.com>
 
        * gdb.perf/single-step.exp (SINGLE_STEP_COUNT): Change to 1000 from
index cbdbc7577afcfa4c18413a9f8322287caf480c41..2bcf14739045c27d6bf128e1646769a4d9317152 100644 (file)
@@ -123,8 +123,21 @@ proc test {always_inserted sw_watchpoint} {
     with_test_prefix "basics" {
        # Run to the permanent breakpoint, just to make sure we've inserted it
        # correctly.
-       gdb_test "continue" "Program received signal SIGTRAP.*" \
-           "permanent breakpoint causes random signal"
+       # If the target fails to stop, the remainder of the test will not work
+       # so just return.  This can happen on some simulator targets where
+       # the running program doesn't see breakpoints that are visible to
+       # the execution engine, or where writes to the .text section are
+       # quietly ignored.
+       set test "permanent breakpoint causes random signal"
+       gdb_test_multiple "continue" $test {
+           -re "exited normally.*$gdb_prompt $" {
+               unsupported "failed to stop at permanent breakpoint"
+               return
+           }
+           -re "Program received signal SIGTRAP.*$gdb_prompt $" {
+               pass $test
+           }
+       }
 
        # Now set a breakpoint on top, thus creating a permanent breakpoint.
        gdb_breakpoint "$line_bp"