1# Copyright 2017-2020 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# Make sure that we can interrupt an inferior that forks and moves to 17# its own session. 18 19standard_testfile 20 21if {[build_executable "failed to build" $testfile $srcfile {debug}]} { 22 return -1 23} 24 25# The test proper. 26 27proc do_test {} { 28 global binfile 29 global gdb_prompt 30 31 clean_restart $binfile 32 33 gdb_test "set follow-fork-mode child" ".*" 34 35 if ![runto "daemon_main"] { 36 fail "can't run to daemon_main function" 37 return 38 } 39 40 with_test_prefix "fg" { 41 global gdb_prompt 42 43 set test "continue" 44 gdb_test_multiple $test $test { 45 -re "Continuing" { 46 pass $test 47 } 48 } 49 50 after 200 51 52 send_gdb "\003" 53 54 set test "ctrl-c stops process" 55 gdb_test_multiple "" $test { 56 -re "received signal SIGINT.*\r\n$gdb_prompt $" { 57 pass $test 58 } 59 } 60 } 61 62 with_test_prefix "bg" { 63 64 set test "continue&" 65 gdb_test_multiple "continue&" $test { 66 -re "Continuing\\.\r\n$gdb_prompt " { 67 pass $test 68 } 69 } 70 71 after 200 72 73 set test "interrupt" 74 gdb_test_multiple $test $test { 75 -re "$gdb_prompt " { 76 pass $test 77 } 78 } 79 80 set test "interrupt cmd stops process" 81 gdb_test_multiple "" $test { 82 -re "received signal SIGINT" { 83 pass $test 84 } 85 } 86 } 87} 88 89do_test 90