[gdb/testsuite] Factor out lib/valgrind.exp
[external/binutils.git] / gdb / testsuite / gdb.base / interrupt-daemon.exp
1 # Copyright 2017 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
19 standard_testfile
20
21 if {[build_executable "failed to build" $testfile $srcfile {debug}]} {
22     return -1
23 }
24
25 # The test proper.
26
27 proc 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
89 do_test