| # This testcase is part of GDB, the GNU debugger. |
| |
| # Copyright 2010-2021 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 <http://www.gnu.org/licenses/>. |
| |
| # Test GDB bug report 11531. |
| # This is a problem related to CANNOT_STEP_HW_WATCHPOINTS macro. |
| # It affects Solaris native targets. |
| |
| |
| standard_testfile |
| |
| if { [prepare_for_testing "failed to prepare" $testfile $testfile.c {debug}] } { |
| return -1 |
| } |
| |
| # Disable hardware watchpoints if necessary. |
| if [target_info exists gdb,no_hardware_watchpoints] { |
| gdb_test_no_output "set can-use-hw-watchpoints 0" "" |
| } |
| |
| if { ![runto_main] } then { |
| 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" |
| |