diff options
author | Sergio Durigan Junior <sergiodj@redhat.com> | 2014-09-16 17:55:20 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2014-09-16 17:55:21 +0100 |
commit | 91c190590ab3de6d214bcf307240b4ac291f697d (patch) | |
tree | eaf5fb46874d5e5d9dec96613d441e0ce28f390e /gdb/testsuite/gdb.base/watch-bitfields.exp | |
parent | bb9d5f81c36ecc61e3d4a70ce7e41348c8b12fef (diff) | |
download | binutils-gdb-91c190590ab3de6d214bcf307240b4ac291f697d.tar.gz |
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.
Diffstat (limited to 'gdb/testsuite/gdb.base/watch-bitfields.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/watch-bitfields.exp | 77 |
1 files changed, 51 insertions, 26 deletions
diff --git a/gdb/testsuite/gdb.base/watch-bitfields.exp b/gdb/testsuite/gdb.base/watch-bitfields.exp index 3f253842367..7b7fa22c00e 100644 --- a/gdb/testsuite/gdb.base/watch-bitfields.exp +++ b/gdb/testsuite/gdb.base/watch-bitfields.exp @@ -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.*" - -# 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.*" +proc test_watch_location {} { + with_test_prefix "-location watch against bitfields" { + if {![runto_main]} { + return -1 + } + + 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 |