# Copyright 2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This file is part of the gdb testsuite standard_testfile if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} { return -1 } if {![runto_main]} { return -1 } # 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" } # 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.*"