This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA[testsuite]: Fork event updates, part the fourteenth


This is a test for the bug I described in my previous message.  If we run a
program; detach from it; it exits; and we run it again, wait() returns the
exit status of the dead detached child, and we report the current process
as having exited.  Oops!

I'm only running the test on GNU/Linux because it won't work anywhere else. 
There's a comment above detach() which says that the odds of it working on
something we didn't attach to are slim, and I know that the only wait
methods I fixed to support this are for GNU/Linux.  Is this a desirable
feature in general?  If so I should probably file a PR to implement/test it
everywhere.

Is the new test OK?

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2002-12-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/detach.exp: New test.

--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ testsuite/gdb.base/detach.exp	2002-12-15 16:37:33.000000000 -0500
@@ -0,0 +1,75 @@
+#   Copyright 2002 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+# Test running a program from the GDB prompt and then detaching it.
+# NOTE: This test could be much more thorough.
+
+if $tracelevel then {
+	strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+# Only GNU/Linux is known to support this.
+if { ! [istarget "*-*-linux*"] } {
+  return 0
+}
+
+# Are we on a target board?
+if [is_remote target] then {
+    return 0
+}
+
+set testfile "attach"
+set srcfile  ${testfile}.c
+set binfile  ${objdir}/${subdir}/${testfile}
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+proc do_detach_tests {} {
+  global srcdir
+  global binfile
+  global subdir
+  global pass
+
+  runto_main
+  gdb_test "set should_exit = 1" "" "set should_exit, $pass"
+  gdb_test "detach" "Detaching from program: .*$binfile, .*" "detach, $pass"
+}
+
+# Start with a fresh gdb
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+global pass
+set pass "one"
+do_detach_tests
+
+# Wait a moment and do it again.
+exec sleep 1
+
+set pass "two"
+do_detach_tests
+
+return 0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]