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 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.
This commit is contained in:
Yao Qi 2014-05-28 12:38:52 +08:00
parent 11b28b91b2
commit c72b2e7b2f
2 changed files with 18 additions and 2 deletions

View 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

View 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"