# This testcase is part of GDB, the GNU debugger. # Copyright 2010-2022 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 . # Test GDB bug report 11531. # This is a problem related to CANNOT_STEP_HW_WATCHPOINTS macro. # It affects Solaris native targets. # The skip_hw_watchpoint_tests checks if watchpoints are supported by the # processor. On PowerPC, the check runs a small test program under gdb # to determine if the Power processor supports HW watchpoints. The check # must be done before starting the test so as to not disrupt the execution # of the actual test. set skip_hw_watchpoint_tests_p [skip_hw_watchpoint_tests] standard_testfile if { [prepare_for_testing "failed to prepare" $testfile $testfile.c {debug}] } { return -1 } # Disable hardware watchpoints if necessary. if {$skip_hw_watchpoint_tests_p} { gdb_test_no_output "set can-use-hw-watchpoints 0" "" } if {![runto_main]} { return } # The breakpoint is probably at the instruction where the value being # watched (myrec.x) gets updated. This is the instruction where we # expect to receive a watchpoint notification when we do the "stepi" # below. However, having the breakpoint at the same location as this # intruction can possibly interfere with our testcase, as stepping # over the breakpoint in order to get past it may incorrectly lead # to the debugger missing the watchpoint hit. This would be a bug # in GDB, but this is not the bug that we are trying to test here. # So, we remove all breakpoints first. delete_breakpoints set nl "\[\r\n\]+" gdb_test "watch myrec.x" ".*atchpoint \[0-9\]+: myrec\.x" "set watchpoint" gdb_test "next" \ ".*${nl}.*atchpoint \[0-9\]+: myrec\.x${nl}Old value = 0${nl}New value = 5${nl}.*" \ "watchpoint variable triggers at next" gdb_test "continue" \ ".*${nl}.*atchpoint \[0-9\]+: myrec\.x${nl}Old value = 5${nl}New value = 78${nl}.*" \ "watchpoint variable triggers at continue"