1 # This testcase is part of GDB
, the GNU debugger.
3 # Copyright
2020-2022 Free Software Foundation
, Inc.
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.
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.
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
/>.
18 # Test attaching to a process
, as a second inferior
, through a
19 # gdbserver that does not support multi
-process extensions.
21 load_lib gdbserver
-support.exp
25 if {![can_spawn_for_attach
]} {
29 if {[build_executable
"build" $testfile $srcfile {debug}] == -1} {
33 proc test
{target_non_stop
} {
37 save_vars
{ ::GDBFLAGS
} {
38 #
If GDB and GDBserver are both running locally
, set the sysroot to avoid
39 # reading files via the remote protocol.
40 if { ![is_remote host
] && ![is_remote target
] } {
41 set ::GDBFLAGS
"${::GDBFLAGS} -ex \"set sysroot\""
44 "${::GDBFLAGS} -ex \"set remote multiprocess-feature-packet off\""
46 "${::GDBFLAGS} -ex \"maint set target-non-stop ${target_non_stop}\""
47 clean_restart $
{binfile
}
50 # Start the first inferior.
55 # The second inferior is an extended remote.
56 gdb_test
"add-inferior -no-connection" "Added inferior 2.*" \
57 "add the second inferior"
58 gdb_test
"inferior 2" ".*Switching to inferior 2.*" \
59 "switch to inferior 2"
60 set res
[gdbserver_start
"--multi" ""]
61 set gdbserver_gdbport
[lindex $res
1]
62 gdb_target_cmd
"extended-remote" $gdbserver_gdbport
64 # Start a
program, then attach to it.
65 set spawn_id_list
[spawn_wait_for_attach
[list $binfile
]]
66 set test_spawn_id
[lindex $spawn_id_list
0]
67 set testpid
[spawn_id_get_pid $test_spawn_id
]
68 gdb_test_multiple
"attach $testpid" "attach to the program via remote" {
69 -re
"Attaching to Remote target.*\[\r\n\]+$gdb_prompt " {
74 # Check that we have two threads. Bad GDB duplicated the
75 # thread coming from the remote when target
-non
-stop is
off;
76 # or hanged during attach when target
-non
-stop is
on.
77 gdb_test
"info threads" \
84 # Clean the spawned process and gdbserver.
86 kill_wait_spawned_process $test_spawn_id
89 foreach_with_prefix target_non_stop
{off on} {