This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Skip test 'watch -location nullptr->p->x' if null pointer can be dereferenced


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 the then do the test.

gdb/testsuite:

2014-05-28  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/gdb.base/watchpoint.exp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index 1123824..c41b4fd 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -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"
 
-- 
1.9.0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]