# Copyright (C) 2015-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 . # Check that forking a process after a previous process was attached to unsets # attach_flag. This is done indirectly by inspecting GDB's quit prompt. if ![can_spawn_for_attach] { return 0 } standard_testfile set executable $testfile if [prepare_for_testing "failed to prepare" $executable] { return -1 } set test_spawn_id [spawn_wait_for_attach $binfile] set test_pid [spawn_id_get_pid $test_spawn_id] set test "attach to process" gdb_test "attach $test_pid" "Attaching to program.*" $test set test "kill process" gdb_test "kill" "" $test \ "Kill the program being debugged.*y or n. $" "y" set test "restart process" gdb_test "start" "Starting program.*Temporary breakpoint .*" $test set test "attempt kill via quit" # The quit prompt should warn about killing the process, not about detaching the # process, since this process was not attached to. set ok 0 gdb_test_multiple "quit" $test { -re "will be killed.*.y or n. $" { set ok 1 send_gdb "n\n" exp_continue } -re "will be detached.*.y or n. $" { send_gdb "n\n" exp_continue } -re "$gdb_prompt $" { gdb_assert $ok $test } } kill_wait_spawned_process $test_spawn_id