Index: valgrind/coregrind/m_gdbserver/m_gdbserver.c
===================================================================
--- valgrind/coregrind/m_gdbserver/m_gdbserver.c (revision 13036)
+++ valgrind/coregrind/m_gdbserver/m_gdbserver.c (working copy)
@@ -33,6 +33,8 @@
#include "pub_core_libcproc.h"
#include "pub_core_libcprint.h"
#include "pub_core_mallocfree.h"
+#include "pub_tool_libcsetjmp.h"
+#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_options.h"
#include "pub_core_libcsetjmp.h"
@@ -68,7 +70,8 @@
core_reason, // gdbserver invocation by core (e.g. error encountered)
break_reason, // break encountered
watch_reason, // watchpoint detected by tool
- signal_reason} // signal encountered
+ signal_reason, // signal encountered
+ exit_reason} // process terminated
CallReason;
static char* ppCallReason(CallReason reason)
@@ -80,6 +83,7 @@
case break_reason: return "break_reason";
case watch_reason: return "watch_reason";
case signal_reason: return "signal_reason";
+ case exit_reason: return "exit_reason";
default: vg_assert (0);
}
}
@@ -641,6 +645,14 @@
VG_(getpid) (), tid, VG_(name_of_ThreadStatus)(tst->status),
tst->sched_jmpbuf_valid);
+ /* If we are about to die, then just run server_main() once to get
+ the message out and return immediately because most of the state
+ of this tid and process is about to be torn down. */
+ if (reason == exit_reason) {
+ server_main();
+ return;
+ }
+
vg_assert(VG_(is_valid_tid)(tid));
saved_pc = VG_(get_IP) (tid);
@@ -933,6 +945,29 @@
}
}
+void VG_(gdbserver_exit) (ThreadId tid, VgSchedReturnCode tids_schedretcode)
+{
+ dlog(1, "VG core calling VG_(gdbserver_exit) tid %d will exit\n", tid);
+ if (remote_connected()) {
+ /* Make sure vgdb knows we are about to die and why. */
+ if (tids_schedretcode == VgSrc_ExitThread
+ || tids_schedretcode == VgSrc_ExitProcess) {
+ gdbserver_process_exit ('W', VG_(threads)[tid].os_state.exitcode);
+ call_gdbserver (tid, exit_reason);
+ }
+
+ if (tids_schedretcode == VgSrc_FatalSig) {
+ gdbserver_process_exit ('X', VG_(threads)[tid].os_state.fatalsig);
+ call_gdbserver (tid, exit_reason);
+ }
+ } else {
+ dlog(1, "not connected\n");
+ }
+
+ /* Tear down the connection if it still exists. */
+ VG_(gdbserver) (0);
+}
+
// Check if single_stepping or if there is a break requested at iaddr.
// If yes, call debugger
VG_REGPARM(1)
Index: valgrind/coregrind/m_gdbserver/server.c
===================================================================
--- valgrind/coregrind/m_gdbserver/server.c (revision 13036)
+++ valgrind/coregrind/m_gdbserver/server.c (working copy)
@@ -765,6 +765,13 @@
putpkt (own_buf);
}
+ /* If we our status is terminal (exit or fatal signal) get out
+ as quickly as we can. We won't be able to handle any request
+ anymore. */
+ if (status == 'W' || status == 'X') {
+ return;
+ }
+
packet_len = getpkt (own_buf);
if (packet_len <= 0)
break;
Index: valgrind/coregrind/m_gdbserver/server.h
===================================================================
--- valgrind/coregrind/m_gdbserver/server.h (revision 13036)
+++ valgrind/coregrind/m_gdbserver/server.h (working copy)
@@ -40,9 +40,9 @@
#include "pub_tool_libcassert.h"
#include "pub_tool_libcbase.h"
#include "pub_tool_options.h"
-#include "pub_core_gdbserver.h"
#include "pub_tool_libcsetjmp.h"
#include "pub_core_threadstate.h"
+#include "pub_core_gdbserver.h"
#include "pub_core_aspacemgr.h"
#include "pub_tool_vki.h"
#include "valgrind.h"
@@ -208,6 +208,9 @@
to ignore the signal, so signal can be delivered to the guest. */
extern Bool gdbserver_deliver_signal (Int vki_sigNo);
+/* Called when a process is about to go with reason ('W' or 'X') and code. */
+extern void gdbserver_process_exit (unsigned char status, Int code);
+
/* To optimise signal handling, gdb can instruct gdbserver to
not stop on some signals. In the below, a 1 indicates the gdb_nr signal
has to be passed directly to the guest, without asking gdb.
Index: valgrind/coregrind/m_gdbserver/target.c
===================================================================
--- valgrind/coregrind/m_gdbserver/target.c (revision 13036)
+++ valgrind/coregrind/m_gdbserver/target.c (working copy)
@@ -165,6 +165,14 @@
return vki_sigNo == vki_signal_to_deliver;
}
+static unsigned char exit_status_to_report;
+static int exit_code_to_report;
+void gdbserver_process_exit (unsigned char status, Int code)
+{
+ exit_status_to_report = status;
+ exit_code_to_report = code;
+}
+
static
char* sym (Addr addr)
{
@@ -248,6 +256,7 @@
unsigned long wptid;
ThreadState *tst;
enum target_signal sig;
+ int code;
pid = VG_(getpid) ();
dlog(1, "enter valgrind_wait pid %d\n", pid);
@@ -255,6 +264,24 @@
regcache_invalidate();
valgrind_update_threads(pid);
+ /* First see if we are done with this process. */
+ if (exit_status_to_report != 0) {
+ *ourstatus = exit_status_to_report;
+ exit_status_to_report = 0;
+
+ if (*ourstatus == 'W') {
+ code = exit_code_to_report;
+ exit_code_to_report = 0;
+ return code;
+ }
+
+ if (*ourstatus == 'X') {
+ sig = target_signal_from_host(exit_code_to_report);
+ exit_code_to_report = 0;
+ return sig;
+ }
+ }
+
/* in valgrind, we consider that a wait always succeeds with STOPPED 'T'
and with a signal TRAP (i.e. a breakpoint), unless there is
a signal to report. */
Index: valgrind/coregrind/m_libcprint.c
===================================================================
--- valgrind/coregrind/m_libcprint.c (revision 13036)
+++ valgrind/coregrind/m_libcprint.c (working copy)
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_debuglog.h"
-#include "pub_core_gdbserver.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcfile.h" // VG_(write)(), VG_(write_socket)()
Index: valgrind/coregrind/m_main.c
===================================================================
--- valgrind/coregrind/m_main.c (revision 13036)
+++ valgrind/coregrind/m_main.c (working copy)
@@ -2543,7 +2543,7 @@
/* terminate gdbserver if ever it was started. We terminate it here so that it get
the output above if output was redirected to gdb */
- VG_(gdbserver) (0);
+ VG_(gdbserver_exit) (tid, tids_schedretcode);
/* Ok, finally exit in the os-specific way, according to the scheduler's
return code. In short, if the (last) thread exited by calling
Index: valgrind/coregrind/pub_core_gdbserver.h
===================================================================
--- valgrind/coregrind/pub_core_gdbserver.h (revision 13036)
+++ valgrind/coregrind/pub_core_gdbserver.h (working copy)
@@ -48,7 +48,10 @@
// to handle this incoming vgdb request.
extern Bool VG_(gdbserver_activity) (ThreadId tid);
+// Called by low level when the process is about to exit and why.
+void VG_(gdbserver_exit) (ThreadId, VgSchedReturnCode);
+
/* Called by low level to insert or remove a break or watch point.
Break or watch point implementation is done using help from the tool.
break point support implies some (small) specific instrumentation
Index: valgrind/gdbserver_tests/Makefile.am
===================================================================
--- valgrind/gdbserver_tests/Makefile.am (revision 13036)
+++ valgrind/gdbserver_tests/Makefile.am (working copy)
@@ -100,7 +100,22 @@
nlsigvgdb.vgtest \
nlsigvgdb.stderr.exp \
nlsigvgdb.stderrB.exp \
- nlsigvgdb.stdinB.gdb
+ nlsigvgdb.stdinB.gdb \
+ gone_abrt.stderr.exp \
+ gone_abrt.stderrB.exp \
+ gone_abrt.stdinB.gdb \
+ gone_abrt.stdoutB.exp \
+ gone_abrt.vgtest \
+ gone_exit.stderr.exp \
+ gone_exit.stderrB.exp \
+ gone_exit.stdinB.gdb \
+ gone_exit.stdoutB.exp \
+ gone_exit.vgtest \
+ gone_return.stderr.exp \
+ gone_return.stderrB.exp \
+ gone_return.stdinB.gdb \
+ gone_return.stdoutB.exp \
+ gone_return.vgtest
check_PROGRAMS = \
clean_after_fork \
@@ -109,7 +124,8 @@
sleepers \
main_pic \
t \
- watchpoints
+ watchpoints \
+ gone
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
Index: valgrind/gdbserver_tests/filter_gdb
===================================================================
--- valgrind/gdbserver_tests/filter_gdb (revision 13036)
+++ valgrind/gdbserver_tests/filter_gdb (working copy)
@@ -49,6 +51,8 @@
# a.o. produced by gdb 7.2 on arm (same with standard gdbserver)
# delete empty lines (the last line (only made of prompts) sometimes
# finishes with a new line, sometimes not ???).
+# 'exited with code' and 'exited normally' are printed slightly
+# differently between gdb versions, normalize to "Program exited...".
sed -e '/Remote debugging using/,/vgdb launched process attached/d' \
-e 's/^\[?1034hReading symbols/Reading symbols/' \
-e '/^Missing separate debuginfo/d' \
@@ -64,6 +68,8 @@
-e '/^Loaded symbols for .*$/d' \
-e '/^Current language.*/d' \
-e '/^The current source language is.*/d' \
+ -e 's/^.*\( exited with code [0-9]\+\).$/Program\1\./g' \
+ -e 's/^.*\( exited normally\).$/Program\1\./g' \
-e 's/(gdb) //g' \
-e 's/^>[> ]*//' \
-e '/^done\.$/d' \
Index: valgrind/gdbserver_tests/gone.c
===================================================================
--- valgrind/gdbserver_tests/gone.c (revision 0)
+++ valgrind/gdbserver_tests/gone.c (working copy)
@@ -0,0 +1,33 @@
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main (int argc, char **argv)
+{
+ fprintf(stderr, "starting ...\n");
+
+ // Three ways of going away...
+ if (argc > 1)
+ {
+ // Explicit exit() with exit code.
+ if (strcmp (argv[1], "exit") == 0)
+ {
+ fprintf(stderr, "exiting ...\n");
+ exit (1);
+ }
+
+ // Get killed by a signal.
+ if (strcmp (argv[1], "abort") == 0)
+ {
+ fprintf(stderr, "aborting ...\n");
+ kill(getpid(), SIGABRT);
+ }
+ }
+
+ // And finally, just return from main with success.
+ fprintf(stderr, "returning ...\n");
+ return 0;
+}
Index: valgrind/gdbserver_tests/gone_abrt.stderr.exp
===================================================================
--- valgrind/gdbserver_tests/gone_abrt.stderr.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_abrt.stderr.exp (working copy)
@@ -0,0 +1,8 @@
+Nulgrind, the minimal Valgrind tool
+
+(action at startup) vgdb me ...
+
+
+starting ...
+aborting ...
+
Index: valgrind/gdbserver_tests/gone_abrt.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_abrt.stderrB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_abrt.stderrB.exp (working copy)
@@ -0,0 +1 @@
+relaying data between gdb and process ....
Index: valgrind/gdbserver_tests/gone_abrt.stdinB.gdb
===================================================================
--- valgrind/gdbserver_tests/gone_abrt.stdinB.gdb (revision 0)
+++ valgrind/gdbserver_tests/gone_abrt.stdinB.gdb (working copy)
@@ -0,0 +1,9 @@
+# connect gdb to Valgrind gdbserver:
+target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-gone-abrt
+echo vgdb launched process attached\n
+
+continue
+# see process get a fatal signal
+continue
+# see program is gone
+quit
Index: valgrind/gdbserver_tests/gone_abrt.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_abrt.stdoutB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_abrt.stdoutB.exp (working copy)
@@ -0,0 +1,7 @@
+vgdb launched process attached
+Continuing.
+Program received signal SIGABRT, Aborted.
+0x........ in syscall ...
+Continuing.
+Program terminated with signal SIGABRT, Aborted.
+The program no longer exists.
Index: valgrind/gdbserver_tests/gone_abrt.vgtest
===================================================================
--- valgrind/gdbserver_tests/gone_abrt.vgtest (revision 0)
+++ valgrind/gdbserver_tests/gone_abrt.vgtest (working copy)
@@ -0,0 +1,12 @@
+# test that a fatal SIGABRT signal is properly passed on to gdb.
+
+prog: gone
+args: abort
+vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-gone-abrt
+stderr_filter: filter_stderr
+prereq: test -e gdb
+progB: gdb
+argsB: --quiet -l 60 --nx ./gone
+stdinB: gone_abrt.stdinB.gdb
+stdoutB_filter: filter_gdb
+stderrB_filter: filter_gdb
Index: valgrind/gdbserver_tests/gone_exit.stderr.exp
===================================================================
--- valgrind/gdbserver_tests/gone_exit.stderr.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_exit.stderr.exp (working copy)
@@ -0,0 +1,8 @@
+Nulgrind, the minimal Valgrind tool
+
+(action at startup) vgdb me ...
+
+
+starting ...
+exiting ...
+
Index: valgrind/gdbserver_tests/gone_exit.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_exit.stderrB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_exit.stderrB.exp (working copy)
@@ -0,0 +1 @@
+relaying data between gdb and process ....
Index: valgrind/gdbserver_tests/gone_exit.stdinB.gdb
===================================================================
--- valgrind/gdbserver_tests/gone_exit.stdinB.gdb (revision 0)
+++ valgrind/gdbserver_tests/gone_exit.stdinB.gdb (working copy)
@@ -0,0 +1,7 @@
+# connect gdb to Valgrind gdbserver:
+target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-gone-exit
+echo vgdb launched process attached\n
+
+continue
+# see program is gone with exit code
+quit
Index: valgrind/gdbserver_tests/gone_exit.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_exit.stdoutB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_exit.stdoutB.exp (working copy)
@@ -0,0 +1,3 @@
+vgdb launched process attached
+Continuing.
+Program exited with code 01.
Index: valgrind/gdbserver_tests/gone_exit.vgtest
===================================================================
--- valgrind/gdbserver_tests/gone_exit.vgtest (revision 0)
+++ valgrind/gdbserver_tests/gone_exit.vgtest (working copy)
@@ -0,0 +1,12 @@
+# test that an exit (with return value) is properly passed on to gdb.
+
+prog: gone
+args: exit
+vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-gone-exit
+stderr_filter: filter_stderr
+prereq: test -e gdb
+progB: gdb
+argsB: --quiet -l 60 --nx ./gone
+stdinB: gone_exit.stdinB.gdb
+stdoutB_filter: filter_gdb
+stderrB_filter: filter_gdb
Index: valgrind/gdbserver_tests/gone_return.stderr.exp
===================================================================
--- valgrind/gdbserver_tests/gone_return.stderr.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_return.stderr.exp (working copy)
@@ -0,0 +1,8 @@
+Nulgrind, the minimal Valgrind tool
+
+(action at startup) vgdb me ...
+
+
+starting ...
+returning ...
+
Index: valgrind/gdbserver_tests/gone_return.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_return.stderrB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_return.stderrB.exp (working copy)
@@ -0,0 +1 @@
+relaying data between gdb and process ....
Index: valgrind/gdbserver_tests/gone_return.stdinB.gdb
===================================================================
--- valgrind/gdbserver_tests/gone_return.stdinB.gdb (revision 0)
+++ valgrind/gdbserver_tests/gone_return.stdinB.gdb (working copy)
@@ -0,0 +1,7 @@
+# connect gdb to Valgrind gdbserver:
+target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-gone-return
+echo vgdb launched process attached\n
+
+continue
+# see program is gone
+quit
Index: valgrind/gdbserver_tests/gone_return.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/gone_return.stdoutB.exp (revision 0)
+++ valgrind/gdbserver_tests/gone_return.stdoutB.exp (working copy)
@@ -0,0 +1,3 @@
+vgdb launched process attached
+Continuing.
+Program exited normally.
Index: valgrind/gdbserver_tests/gone_return.vgtest
===================================================================
--- valgrind/gdbserver_tests/gone_return.vgtest (revision 0)
+++ valgrind/gdbserver_tests/gone_return.vgtest (working copy)
@@ -0,0 +1,12 @@
+# test that a normal (successful) return is properly passed on to gdb.
+
+prog: gone
+args: return
+vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-gone-return
+stderr_filter: filter_stderr
+prereq: test -e gdb
+progB: gdb
+argsB: --quiet -l 60 --nx ./gone
+stdinB: gone_return.stdinB.gdb
+stdoutB_filter: filter_gdb
+stderrB_filter: filter_gdb
Index: valgrind/gdbserver_tests/mcleak.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/mcleak.stderrB.exp (revision 13036)
+++ valgrind/gdbserver_tests/mcleak.stderrB.exp (working copy)
@@ -95,4 +95,3 @@
by 0x........: f (leak-delta.c:28)
by 0x........: main (leak-delta.c:60)
-Remote connection closed
Index: valgrind/gdbserver_tests/mcleak.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/mcleak.stdoutB.exp (revision 13036)
+++ valgrind/gdbserver_tests/mcleak.stdoutB.exp (working copy)
@@ -45,3 +45,4 @@
#1 0x........ in f () at leak-delta.c:48
48 fprintf(stderr, "expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable\n"); fflush(stderr); breakme();
Continuing.
+Program exited normally.
Index: valgrind/gdbserver_tests/mcmain_pic.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/mcmain_pic.stderrB.exp (revision 13036)
+++ valgrind/gdbserver_tests/mcmain_pic.stderrB.exp (working copy)
@@ -1,3 +1,2 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
-Remote connection closed
Index: valgrind/gdbserver_tests/mcmain_pic.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/mcmain_pic.stdoutB.exp (revision 13036)
+++ valgrind/gdbserver_tests/mcmain_pic.stdoutB.exp (working copy)
@@ -6,3 +6,4 @@
$2 = (int (*)(int, char **)) 0x........ <main>
$3 = (void (*)(char *)) 0x........ <another_func>
Continuing.
+Program exited normally.
Index: valgrind/gdbserver_tests/mcwatchpoints.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/mcwatchpoints.stdoutB.exp (revision 13036)
+++ valgrind/gdbserver_tests/mcwatchpoints.stdoutB.exp (working copy)
@@ -32,3 +32,4 @@
49 fprintf(stderr, "after writing 8\n");
Delete all breakpoints? (y or n) [answered Y; input not from terminal]
Continuing.
+Program exited normally.
Index: valgrind/gdbserver_tests/nlcontrolc.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/nlcontrolc.stdoutB.exp (revision 13036)
+++ valgrind/gdbserver_tests/nlcontrolc.stdoutB.exp (working copy)
@@ -21,3 +21,4 @@
$6 = 0
$7 = 0
Continuing.
+Program exited normally.
Index: valgrind/gdbserver_tests/nlpasssigalrm.stderrB.exp
===================================================================
--- valgrind/gdbserver_tests/nlpasssigalrm.stderrB.exp (revision 13036)
+++ valgrind/gdbserver_tests/nlpasssigalrm.stderrB.exp (working copy)
@@ -1,3 +1,2 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
-Remote connection closed
Index: valgrind/gdbserver_tests/nlpasssigalrm.stdoutB.exp
===================================================================
--- valgrind/gdbserver_tests/nlpasssigalrm.stdoutB.exp (revision 13036)
+++ valgrind/gdbserver_tests/nlpasssigalrm.stdoutB.exp (working copy)
@@ -19,3 +19,4 @@
Program received signal SIG34, Real-time event 34.
0x........ in syscall ...
Continuing.
+Program exited normally.
--- valgrind-3.8.1/gdbserver_tests/Makefile.in.orig 2012-10-13 16:35:43.846865557 +0200
+++ valgrind-3.8.1/gdbserver_tests/Makefile.in 2012-10-13 16:36:37.445641004 +0200
@@ -56,7 +56,7 @@
check_PROGRAMS = clean_after_fork$(EXEEXT) fork_chain$(EXEEXT) \
passsigalrm$(EXEEXT) sleepers$(EXEEXT) main_pic$(EXEEXT) \
- t$(EXEEXT) watchpoints$(EXEEXT)
+ t$(EXEEXT) watchpoints$(EXEEXT) gone$(EXEEXT)
subdir = gdbserver_tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
@@ -74,6 +74,10 @@
fork_chain_OBJECTS = fork_chain.$(OBJEXT)
fork_chain_LDADD = $(LDADD)
fork_chain_DEPENDENCIES =
+gone_SOURCES = gone.c
+gone_OBJECTS = gone.$(OBJEXT)
+gone_LDADD = $(LDADD)
+gone_DEPENDENCIES =
main_pic_SOURCES = main_pic.c
main_pic_OBJECTS = main_pic-main_pic.$(OBJEXT)
main_pic_LDADD = $(LDADD)
@@ -105,9 +109,9 @@
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = clean_after_fork.c fork_chain.c main_pic.c passsigalrm.c \
- sleepers.c t.c watchpoints.c
-DIST_SOURCES = clean_after_fork.c fork_chain.c main_pic.c \
+SOURCES = clean_after_fork.c fork_chain.c gone.c main_pic.c \
+ passsigalrm.c sleepers.c t.c watchpoints.c
+DIST_SOURCES = clean_after_fork.c fork_chain.c gone.c main_pic.c \
passsigalrm.c sleepers.c t.c watchpoints.c
ETAGS = etags
CTAGS = ctags
@@ -487,7 +491,22 @@
nlsigvgdb.vgtest \
nlsigvgdb.stderr.exp \
nlsigvgdb.stderrB.exp \
- nlsigvgdb.stdinB.gdb
+ nlsigvgdb.stdinB.gdb \
+ gone_abrt.stderr.exp \
+ gone_abrt.stderrB.exp \
+ gone_abrt.stdinB.gdb \
+ gone_abrt.stdoutB.exp \
+ gone_abrt.vgtest \
+ gone_exit.stderr.exp \
+ gone_exit.stderrB.exp \
+ gone_exit.stdinB.gdb \
+ gone_exit.stdoutB.exp \
+ gone_exit.vgtest \
+ gone_return.stderr.exp \
+ gone_return.stderrB.exp \
+ gone_return.stdinB.gdb \
+ gone_return.stdoutB.exp \
+ gone_return.vgtest
LDADD = -lpthread
main_pic_LDFLAGS = -pie
@@ -535,6 +554,9 @@
fork_chain$(EXEEXT): $(fork_chain_OBJECTS) $(fork_chain_DEPENDENCIES)
@rm -f fork_chain$(EXEEXT)
$(LINK) $(fork_chain_OBJECTS) $(fork_chain_LDADD) $(LIBS)
+gone$(EXEEXT): $(gone_OBJECTS) $(gone_DEPENDENCIES)
+ @rm -f gone$(EXEEXT)
+ $(LINK) $(gone_OBJECTS) $(gone_LDADD) $(LIBS)
main_pic$(EXEEXT): $(main_pic_OBJECTS) $(main_pic_DEPENDENCIES)
@rm -f main_pic$(EXEEXT)
$(main_pic_LINK) $(main_pic_OBJECTS) $(main_pic_LDADD) $(LIBS)
@@ -559,6 +581,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clean_after_fork.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork_chain.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gone.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main_pic-main_pic.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/passsigalrm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleepers.Po@am__quote@