diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/catch-fork-static.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/catch-fork-static.exp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/catch-fork-static.exp b/gdb/testsuite/gdb.base/catch-fork-static.exp new file mode 100644 index 0000000..96570eb --- /dev/null +++ b/gdb/testsuite/gdb.base/catch-fork-static.exp @@ -0,0 +1,48 @@ +# Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +# Test that "catch fork" works on static executables. + +# For instance, on Linux we need PTRACE_O_TRACEFORK set before the program +# reaches the fork. GDBserver was only setting flags when it reached the first +# stop *after* arch_setup. In a dynamic executable there is often a swbreak in +# ld.so probes before reaching main, and ptrace flags were set then. But a +# static executable would just keep running and never catch the fork. + +if { [is_remote target] || ![isnative] } then { + continue +} + +# Until "catch fork" is implemented on other targets... +# +if { ![istarget "hppa*-hp-hpux*"] && ![istarget "*-*-linux*"] + && ![istarget "*-*-openbsd*"] } then { + continue +} + +# Reusing foll-fork.c since it's a simple forking program. +standard_testfile foll-fork.c + +if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile \ + {additional_flags=-static}] } { + return -1 +} + +gdb_test "catch fork" "Catchpoint \[0-9\]* \\(fork\\)" + +gdb_run_cmd +gdb_test "" \ + "Catchpoint \[0-9\]* \\(forked process \[0-9\]*\\),.*" \ + "run to fork" |