# Copyright 2018-2020 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 that we can follow forks properly when the executable is # position-independent. standard_testfile set opts [list debug additional_flags=-fPIE ldflags=-pie] if [prepare_for_testing "failed to prepare" $testfile $srcfile $opts] { return } proc setup_test {detach_on_fork {follow_fork_mode "parent"}} { global binfile clean_restart ${binfile} if ![runto_main] { fail "can't run to main" return } gdb_test_no_output "set detach-on-fork ${detach_on_fork}" gdb_test_no_output "set follow-fork-mode ${follow_fork_mode}" gdb_breakpoint "break_here" } proc_with_prefix test_detach_on_fork_follow_parent {} { setup_test "on" "parent" gdb_test "continue" "\r\nBreakpoint 2, break_here.*" } proc_with_prefix test_detach_on_fork_follow_child {} { setup_test "on" "child" gdb_test "continue" "\r\nThread 2.1 .* hit Breakpoint 2, break_here.*" } proc_with_prefix test_no_detach_on_fork {} { setup_test "off" gdb_test "continue" "\r\nThread 1.1 .* hit Breakpoint 2, break_here.*" gdb_test "thread 2.1" gdb_test "continue" "\r\nThread 2.1 .* hit Breakpoint 2, break_here.*" } test_detach_on_fork_follow_parent test_detach_on_fork_follow_child test_no_detach_on_fork