1 # This testcase is part of GDB, the GNU debugger. 2 3 # Copyright 2015-2024 Free Software Foundation, Inc. 4 5 # This program is free software; you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by 7 # the Free Software Foundation; either version 3 of the License, or 8 # (at your option) any later version. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU General Public License for more details. 14 # 15 # You should have received a copy of the GNU General Public License 16 # along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 load_lib gdbserver-support.exp 19 20 standard_testfile wrapper.c 21 22 require allow_gdbserver_tests 23 24 if {[build_executable $testfile.exp $testfile $srcfile debug] == -1} { 25 return -1 26 } 27 28 save_vars { GDBFLAGS } { 29 # If GDB and GDBserver are both running locally, set the sysroot to avoid 30 # reading files via the remote protocol. 31 if { ![is_remote host] && ![is_remote target] } { 32 set GDBFLAGS "$GDBFLAGS -ex \"set sysroot\"" 33 } 34 35 if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { 36 return -1 37 } 38 } 39 40 # Make sure we're disconnected, in case we're testing with an 41 # extended-remote board, therefore already connected. 42 gdb_test "disconnect" ".*" 43 44 set target_exec [gdbserver_download_current_prog] 45 gdbserver_start_extended "--wrapper env TEST=1 --" 46 47 gdb_test_no_output "set remote exec-file $target_exec" "set remote exec-file" 48 49 gdb_breakpoint marker 50 gdb_test "run" "Breakpoint.* marker .*" "run to marker" 51 52 gdb_test "print d" "\\$${decimal} = ${hex} \"1\".*" 53 54 # Restart the process. 55 with_test_prefix "restart" { 56 # Disable vRun packet and clear remote exec-file, so that GDB will 57 # use R packet to restart the process. 58 gdb_test \ 59 "set remote run-packet off" \ 60 "Support for the 'vRun' packet on the current remote target is set to \"off\"." 61 62 gdb_test_no_output "set remote exec-file" 63 set test "run to marker" 64 gdb_test_multiple "run" $test { 65 -re {Start it from the beginning\? \(y or n\) $} { 66 send_gdb "y\n" 67 exp_continue 68 } 69 -re "Breakpoint.* marker .*\r\n$gdb_prompt $" { 70 pass $test 71 } 72 } 73 74 gdb_test "print d" "\\$${decimal} = ${hex} \"1\".*" 75 } 76 77 gdb_test "kill" "" "kill" "Kill the program being debugged. .y or n. " "y" 78 79 gdb_test_no_output "monitor exit" 80