1# Copyright 2018-2024 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# watchpoint-hw-attach.exp -- Test if hardware watchpoints are used 17# when attaching to a target. 18 19require allow_hw_watchpoint_tests 20 21require can_spawn_for_attach 22 23standard_testfile 24 25if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { 26 return -1 27} 28 29if ![runto_main] { 30 return -1 31} 32 33# Run to the point where mypid in the test program has been 34# populated. 35gdb_breakpoint [gdb_get_line_number "pidacquired"] 36gdb_continue_to_breakpoint "pidacquired" 37 38# Get the PID of the test process. 39set testpid [get_integer_valueof "mypid" 0] 40 41gdb_test "detach" "Detaching from program: .*, process $testpid\r\n\\\[Inferior $decimal \\(process $testpid\\) detached\\\]" 42 43if {$testpid == ""} { 44 return -1 45} 46 47# A clean restart is needed to force the hardware watchpoint setup 48# logic to run post attach rather than post inferior launch. 49clean_restart $binfile 50 51gdb_test "attach $testpid" "Attaching to program: .*, process $testpid.*" "attach" 52 53# Ensure the test program is in the top frame so the required 54# variables are in scope. 55gdb_breakpoint $srcfile:[gdb_get_line_number "pidacquired"] 56gdb_continue_to_breakpoint "$srcfile:pidacquired" 57 58gdb_test_no_output "set should_continue = 1" 59 60gdb_test "watch watched_variable" \ 61 "Hardware watchpoint $decimal: watched_variable" 62 63gdb_test "continue" \ 64 "continue.*Continuing.*\.Hardware watchpoint $decimal: watched_variable.*Old value = 0.*New value = 4.*watched_variable\\);" 65