Skip test 'watch -location nullptr->p->x' if null pointer can be dereferenced
authorYao Qi <yao@codesourcery.com>
Wed, 28 May 2014 04:38:52 +0000 (12:38 +0800)
committerYao Qi <yao@codesourcery.com>
Sun, 1 Jun 2014 03:46:39 +0000 (11:46 +0800)
gdb.base/watchpoint.exp has a test below which expects to see "Cannot
access memory at address 0x0" when a null pointer is dereferenced.

    gdb_test "watch -location nullptr->p->x" \
"Cannot access memory at address 0x0"

This assumption is not true when the target is no-mmu, so we get

watch -location nullptr->p->x
Hardware watchpoint 28: -location nullptr->p->x
(gdb) FAIL: gdb.base/watchpoint.exp: watch -location nullptr->p->x

This patch is to check whether null pointer can be dereferenced first
and then do the test.

gdb/testsuite:

2014-06-01  Yao Qi  <yao@codesourcery.com>

* gdb.base/watchpoint.exp (test_watch_location): Check null
pointer can be dereferenced.  If not, do the test, otherwise
skip it.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/watchpoint.exp

index a931862ad5695a507ba48a4d69fb7d133ce3030c..06818af9e8e0d410527af865b5067693fd5947aa 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-01  Yao Qi  <yao@codesourcery.com>
+
+       * gdb.base/watchpoint.exp (test_watch_location): Check null
+       pointer can be dereferenced.  If not, do the test, otherwise
+       skip it.
+
 2014-05-30  Andrew Burgess  <aburgess@broadcom.com>
 
        * gdb.arch/amd64-invalid-stack-middle.exp: Update expected
index 1123824e0e5d2ec7e4ccfe893632145475b8c717..c41b4fd91f7ff5a62559e8ee8bd62a1230e9d86d 100644 (file)
@@ -595,11 +595,21 @@ proc test_disable_enable_software_watchpoint {} {
 }
 
 proc test_watch_location {} {
+    global gdb_prompt
+
     gdb_breakpoint [gdb_get_line_number "func5 breakpoint here"]
     gdb_continue_to_breakpoint "func5 breakpoint here"
 
-    gdb_test "watch -location nullptr->p->x" \
-       "Cannot access memory at address 0x0"
+    # Check first if a null pointer can be dereferenced on the target.
+    gdb_test_multiple "p *nullptr" "" {
+       -re "Cannot access memory at address 0x0.*$gdb_prompt $" {
+           gdb_test "watch -location nullptr->p->x" \
+               "Cannot access memory at address 0x0"
+       }
+       -re ".*$gdb_prompt $" {
+           # Null pointer dereference is legitimate.
+       }
+    }
 
     gdb_test "watch -location *x" "atchpoint .*: .*" "watch -location .x"