gdb.base/watch-bitfields.exp: Improve test

Make test messages unique and a couple other tweaks.

gdb/testsuite/
2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
	    Pedro Alves  <palves@redhat.com>

	* gdb.base/watch-bitfields.exp: Pass string other than test file
	name to prepare_for_testing.
	(watch): New procedure.
	(expect_watchpoint): Use with_test_prefix.
	(top level): Factor out tests to ...
	(test_watch_location, test_regular_watch): ... these new
	procedures, and use with_test_prefix and gdb_continue_to_end.
This commit is contained in:
Sergio Durigan Junior 2014-09-16 17:55:20 +01:00 committed by Pedro Alves
parent bb9d5f81c3
commit 91c190590a
2 changed files with 61 additions and 25 deletions

View File

@ -1,3 +1,14 @@
2014-09-16 Sergio Durigan Junior <sergiodj@redhat.com>
Pedro Alves <palves@redhat.com>
* gdb.base/watch-bitfields.exp: Pass string other than test file
name to prepare_for_testing.
(watch): New procedure.
(expect_watchpoint): Use with_test_prefix.
(top level): Factor out tests to ...
(test_watch_location, test_regular_watch): ... these new
procedures, and use with_test_prefix and gdb_continue_to_end.
2014-09-16 Patrick Palka <patrick@parcs.ath.cx>
PR breakpoints/12526

View File

@ -17,40 +17,65 @@
standard_testfile
if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
return -1
}
if {![runto_main]} {
return -1
# Set a watchpoint watching EXPR.
proc watch { expr } {
global decimal
set expr_re [string_to_regexp $expr]
gdb_test "watch $expr" \
"\(Hardware \)?\[Ww\]atchpoint $decimal: $expr_re"
}
# Continue inferior execution, expecting the watchpoint EXPR to be triggered
# having old value OLD and new value NEW.
proc expect_watchpoint { expr old new } {
set expr_re [string_to_regexp $expr]
gdb_test "print $expr" "\\$\\d+ = $old\\s"
gdb_test "cont" "$expr_re\\s.*Old value = $old\\s+New value = $new\\s.*"
gdb_test "print $expr" "\\$\\d+ = $new\\s"
with_test_prefix "$expr: $old->$new" {
set expr_re [string_to_regexp $expr]
gdb_test "print $expr" "\\$\\d+ = $old\\s" "print expression before"
gdb_test "continue" "$expr_re\\s.*Old value = $old\\s+New value = $new\\s.*"
gdb_test "print $expr" "\\$\\d+ = $new\\s" "print expression after"
}
}
# Check that -location watchpoints against bitfields trigger properly.
gdb_test "watch -l q.a"
gdb_test "watch -l q.e"
expect_watchpoint "q.a" 0 1
expect_watchpoint "q.e" 0 5
expect_watchpoint "q.a" 1 0
expect_watchpoint "q.e" 5 4
gdb_test "cont" ".*exited normally.*"
proc test_watch_location {} {
with_test_prefix "-location watch against bitfields" {
if {![runto_main]} {
return -1
}
# Check that regular watchpoints against expressions involving bitfields
# trigger properly.
runto_main
gdb_test "watch q.d + q.f + q.g"
expect_watchpoint "q.d + q.f + q.g" 0 4
expect_watchpoint "q.d + q.f + q.g" 4 10
expect_watchpoint "q.d + q.f + q.g" 10 3
expect_watchpoint "q.d + q.f + q.g" 3 2
expect_watchpoint "q.d + q.f + q.g" 2 1
expect_watchpoint "q.d + q.f + q.g" 1 0
gdb_test "cont" ".*exited normally.*"
watch "-location q.a"
watch "-location q.e"
expect_watchpoint "q.a" 0 1
expect_watchpoint "q.e" 0 5
expect_watchpoint "q.a" 1 0
expect_watchpoint "q.e" 5 4
gdb_continue_to_end
}
}
# Check that regular watchpoints against expressions involving
# bitfields trigger properly.
proc test_regular_watch {} {
with_test_prefix "regular watch against bitfields" {
if {![runto_main]} {
return -1
}
watch "q.d + q.f + q.g"
expect_watchpoint "q.d + q.f + q.g" 0 4
expect_watchpoint "q.d + q.f + q.g" 4 10
expect_watchpoint "q.d + q.f + q.g" 10 3
expect_watchpoint "q.d + q.f + q.g" 3 2
expect_watchpoint "q.d + q.f + q.g" 2 1
expect_watchpoint "q.d + q.f + q.g" 1 0
gdb_continue_to_end
}
}
test_watch_location
test_regular_watch