From 91c190590ab3de6d214bcf307240b4ac291f697d Mon Sep 17 00:00:00 2001 From: Sergio Durigan Junior Date: Tue, 16 Sep 2014 17:55:20 +0100 Subject: [PATCH] gdb.base/watch-bitfields.exp: Improve test Make test messages unique and a couple other tweaks. gdb/testsuite/ 2014-09-16 Sergio Durigan Junior Pedro Alves * 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. --- gdb/testsuite/ChangeLog | 11 +++++ gdb/testsuite/gdb.base/watch-bitfields.exp | 77 ++++++++++++++++++++---------- 2 files changed, 62 insertions(+), 26 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 655301e..aa319e5 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2014-09-16 Sergio Durigan Junior + Pedro Alves + + * 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 PR breakpoints/12526 diff --git a/gdb/testsuite/gdb.base/watch-bitfields.exp b/gdb/testsuite/gdb.base/watch-bitfields.exp index 3f25384..7b7fa22 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 -- 2.7.4