[valgrind] Add valgrind-3.8.1-gdbserver_exit.patch (#862795, KDE#308341)
Mark Wielaard
mjw at fedoraproject.org
Sat Oct 13 20:46:14 UTC 2012
commit efb9f60f6e7753e5121c83d2bcd6be474a5a1212
Author: Mark Wielaard <mjw at redhat.com>
Date: Sat Oct 13 22:38:31 2012 +0200
Add valgrind-3.8.1-gdbserver_exit.patch (#862795, KDE#308341)
valgrind-3.8.1-gdbserver_exit.patch | 630 +++++++++++++++++++++++++++++++++++
valgrind.spec | 5 +
2 files changed, 635 insertions(+), 0 deletions(-)
---
diff --git a/valgrind-3.8.1-gdbserver_exit.patch b/valgrind-3.8.1-gdbserver_exit.patch
new file mode 100644
index 0000000..46a8da5
--- /dev/null
+++ b/valgrind-3.8.1-gdbserver_exit.patch
@@ -0,0 +1,630 @@
+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 at ./$(DEPDIR)/clean_after_fork.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fork_chain.Po at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gone.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main_pic-main_pic.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/passsigalrm.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sleepers.Po at am__quote@
diff --git a/valgrind.spec b/valgrind.spec
index f26626e..d17f96f 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -111,6 +111,9 @@ Patch24: valgrind-3.8.1-avx2-prereq.patch
# KDE#308321 - testsuite memcheck filter interferes with gdb_filter
Patch25: valgrind-3.8.1-filter_gdb.patch
+# KDE#308341 - vgdb should report process exit (or fatal signal)
+Patch26: valgrind-3.8.1-gdbserver_exit.patch
+
Obsoletes: valgrind-callgrind
%ifarch x86_64 ppc64
@@ -235,6 +238,7 @@ touch ./none/tests/amd64/bmi.stderr.exp
%patch24 -p1
%patch25 -p1
+%patch26 -p1
%build
# We need to use the software collection compiler and binutils if available.
@@ -369,6 +373,7 @@ echo ===============END TESTING===============
- Add valgrind-3.8.1-proc-auxv.patch (KDE#253519)
- Add valgrind-3.8.1-wcs.patch (#755242, KDE#307828)
- Add valgrind-3.8.1-filter_gdb.patch (KDE#308321)
+- Add valgrind-3.8.1-gdbserver_exit.patch (#862795, KDE#308341)
* Fri Sep 20 2012 Mark Wielaard <mjw at redhat.com> 3.8.1-2
- Add valgrind-3.8.1-gdbserver_tests-mcinvoke-ppc64.patch
More information about the scm-commits
mailing list