From 4867c1fb96b4e9509d889ede0e505b5e5bbf4d3c Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Sun, 15 Nov 2009 20:14:00 +0000 Subject: [PATCH] * gdb.base/watch-vfork.c, gdb.base/watch-vfork.exp: New files. --- gdb/testsuite/ChangeLog | 4 ++ gdb/testsuite/gdb.base/watch-vfork.c | 41 ++++++++++++++++++++ gdb/testsuite/gdb.base/watch-vfork.exp | 52 ++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 gdb/testsuite/gdb.base/watch-vfork.c create mode 100644 gdb/testsuite/gdb.base/watch-vfork.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index fefd6289b56..64eb802ad65 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-11-15 Pedro Alves + + * gdb.base/watch-vfork.c, gdb.base/watch-vfork.exp: New files. + 2009-11-13 Daniel Jacobowitz * lib/gdb.exp (current_target_name): New procedure. diff --git a/gdb/testsuite/gdb.base/watch-vfork.c b/gdb/testsuite/gdb.base/watch-vfork.c new file mode 100644 index 00000000000..a72be3d1460 --- /dev/null +++ b/gdb/testsuite/gdb.base/watch-vfork.c @@ -0,0 +1,41 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2009 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 . */ + +#include + +int *global; + +int +main (void) +{ + int pid; + + pid = vfork (); + if (pid == -1) + { + return 1; + } + else if (pid != 0) + { + global = &pid; + } + else + { + _exit (0); + } + return 0; +} diff --git a/gdb/testsuite/gdb.base/watch-vfork.exp b/gdb/testsuite/gdb.base/watch-vfork.exp new file mode 100644 index 00000000000..940af99bb56 --- /dev/null +++ b/gdb/testsuite/gdb.base/watch-vfork.exp @@ -0,0 +1,52 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2009 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 . + +global srcfile +set testfile "watch-vfork" +if { [build_executable ${testfile}.exp ${testfile} ${testfile}.c {debug}] } { + untested ${testfile}.exp + return -1 +} + +proc test_watchpoint_across_vfork { hw teststr } { + global testfile + + clean_restart ${testfile} + + if { ![runto main] } then { + fail "run to main ($teststr)" + return + } + + if { ! $hw } { + gdb_test "set can-use-hw-watchpoints 0" "" "" + } + + gdb_test "watch global" \ + "atchpoint .*: global" \ + "Watchpoint on global variable ($teststr)" + + gdb_test "continue" \ + "atchpoint .*: global.*" \ + "Watchpoint triggers after vfork ($teststr)" +} + +if { ![target_info exists gdb,no_hardware_watchpoints] } { + test_watchpoint_across_vfork 1 "hw" +} + +test_watchpoint_across_vfork 0 "sw" -- 2.30.2