# Copyright 2017-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 . # Test interrupting multiple targets with Ctrl-C. source $srcdir/$subdir/multi-target.exp.tcl if {![multi_target_prepare]} { return } proc test_ctrlc {} { if {![setup "off"]} { untested "setup failed" return } delete_breakpoints # Select inferior INF, continue all inferiors, and then Ctrl-C. proc test_ctrlc_inf {inf} { global gdb_prompt gdb_test "inferior $inf" "Switching to inferior $inf.*" set msg "continue" gdb_test_multiple "continue" $msg { -re "Continuing" { pass $msg } } after 200 { send_gdb "\003" } set msg "send_gdb control C" gdb_test_multiple "" $msg { -re "received signal SIGINT.*$gdb_prompt $" { pass $msg } } set msg "all threads stopped" gdb_test_multiple "info threads" "$msg" { -re "\\\(running\\\).*$gdb_prompt $" { fail $msg } -re "$gdb_prompt $" { pass $msg } } } for {set i 1} {$i <= 5} {incr i} { if {$i == 3} { # This is a core inferior. continue } with_test_prefix "inf$i" { test_ctrlc_inf $i } } } test_ctrlc multi_target_cleanup