1# Copyright 2010-2013 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# 17# Tests involving watchpoint conditions with local expressions. 18# 19 20set testfile "watch-cond" 21set srcfile ${testfile}.c 22set binfile ${objdir}/${subdir}/${testfile} 23 24if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { 25 untested ${testfile}.exp 26 return -1 27} 28 29# Disable hardware watchpoints if necessary. 30if [target_info exists gdb,no_hardware_watchpoints] { 31 gdb_test_no_output "set can-use-hw-watchpoints 0" "" 32} 33 34if ![runto_main] then { 35 fail "Can't run to main" 36 return 37} 38 39gdb_test "watch global if q > 10" \ 40 "atchpoint .*: global" \ 41 "set write watchpoint on global variable, local condition" 42 43gdb_test "continue" \ 44 "Old value = 10.*New value = 11.*" \ 45 "watchpoint with global expression, local condition evaluates in correct frame" 46 47clean_restart ${testfile} 48 49# Disable hardware watchpoints if necessary. 50if [target_info exists gdb,no_hardware_watchpoints] { 51 gdb_test_no_output "set can-use-hw-watchpoints 0" "" 52} 53 54if ![runto_main] then { 55 fail "Can't run to main" 56 return 57} 58 59gdb_test "watch q if q > 10" \ 60 "atchpoint .*: q" \ 61 "set write watchpoint on local variable, local condition" 62 63gdb_test "continue" \ 64 "Old value = 10.*New value = 11.*" \ 65 "watchpoint with local expression, local condition evaluates in correct frame" 66 67clean_restart ${testfile} 68 69# Disable hardware watchpoints if necessary. 70if [target_info exists gdb,no_hardware_watchpoints] { 71 gdb_test_no_output "set can-use-hw-watchpoints 0" "" 72} 73 74if ![runto_main] then { 75 fail "Can't run to main" 76 return 77} 78 79gdb_test "watch global2" \ 80 "atchpoint.*" \ 81 "set write watchpoint on global2 variable" 82 83gdb_test "continue" \ 84 "Old value = 0.*New value = 1.*" \ 85 "watchpoint on global2 variable triggers" 86 87gdb_test_no_output "condition 2 *foo > 10" \ 88 "condition of watchpoint 2 changes" 89 90gdb_test "continue" \ 91 ".*condition cannot be tested in the current scope.*Old value = 1.*New value = 2.*" \ 92 "watchpoint stops with untestable local expression" 93