- Fix fork & exec patches to apply cleanly under --fuzz=0

- Resolves: #465036
This commit is contained in:
Petr Machata 2008-10-07 10:14:58 +00:00
parent 280ab21469
commit 38bd73f0cc
3 changed files with 63 additions and 29 deletions

View File

@ -1,7 +1,7 @@
diff -Naurp ltrace-0.5/process_event.c ltrace-0.5-mod/process_event.c
--- ltrace-0.5/process_event.c 2006-09-26 08:41:49.000000000 -0500
+++ ltrace-0.5-mod/process_event.c 2006-09-26 08:41:20.000000000 -0500
@@ -238,19 +238,6 @@ static void process_sysret(struct event
diff -urp ltrace-0.5-1/process_event.c ltrace-0.5/process_event.c
--- ltrace-0.5-1/process_event.c 2008-10-07 12:09:14.000000000 +0200
+++ ltrace-0.5/process_event.c 2008-10-07 12:09:37.000000000 +0200
@@ -228,19 +228,6 @@ static void process_sysret(struct event
output_right(LT_TOF_SYSCALLR, event->proc,
sysname(event->proc, event->e_un.sysnum));
}
@ -21,11 +21,12 @@ diff -Naurp ltrace-0.5/process_event.c ltrace-0.5-mod/process_event.c
continue_process(event->proc->pid);
}
diff -Naurp ltrace-0.5/wait_for_something.c ltrace-0.5-mod/wait_for_something.c
--- ltrace-0.5/wait_for_something.c 2006-02-20 15:48:07.000000000 -0600
+++ ltrace-0.5-mod/wait_for_something.c 2006-09-26 08:41:20.000000000 -0500
@@ -92,6 +92,29 @@ struct event *wait_for_something(void)
event.e_un.signum = WSTOPSIG(status);
Only in ltrace-0.5: process_event.c.orig
diff -urp ltrace-0.5-1/wait_for_something.c ltrace-0.5/wait_for_something.c
--- ltrace-0.5-1/wait_for_something.c 2008-10-07 12:09:14.000000000 +0200
+++ ltrace-0.5/wait_for_something.c 2008-10-07 12:09:37.000000000 +0200
@@ -110,6 +110,29 @@ struct event *wait_for_something(void)
continue_after_signal(event.proc->pid, event.e_un.signum);
return &event;
}
+ if (WSTOPSIG(status) == SIGTRAP){
@ -54,3 +55,4 @@ diff -Naurp ltrace-0.5/wait_for_something.c ltrace-0.5-mod/wait_for_something.c
event.thing = LT_EV_BREAKPOINT;
if (!event.proc->instruction_pointer) {
event.proc->instruction_pointer =
Only in ltrace-0.5: wait_for_something.c.orig

View File

@ -1,7 +1,7 @@
diff -BurpN ltrace-x86/ltrace.h ltrace-0.5/ltrace.h
--- ltrace-x86/ltrace.h 2006-12-06 11:34:44.000000000 -0500
+++ ltrace-0.5/ltrace.h 2006-12-06 14:42:52.000000000 -0500
@@ -175,6 +173,7 @@ extern void reinitialize_breakpoints(str
diff -urp ltrace-0.5-1/ltrace.h ltrace-0.5/ltrace.h
--- ltrace-0.5-1/ltrace.h 2008-10-07 12:05:57.000000000 +0200
+++ ltrace-0.5/ltrace.h 2008-10-07 12:06:20.000000000 +0200
@@ -173,6 +173,7 @@ extern void reinitialize_breakpoints(str
extern struct process *open_program(char *filename, pid_t pid);
extern void open_pid(pid_t pid, int verbose);
@ -9,12 +9,39 @@ diff -BurpN ltrace-x86/ltrace.h ltrace-0.5/ltrace.h
extern void show_summary(void);
/* Arch-dependent stuff: */
diff -BurpN ltrace-x86/proc.c ltrace-0.5/proc.c
--- ltrace-x86/proc.c 2006-12-06 11:34:45.000000000 -0500
+++ ltrace-0.5/proc.c 2006-12-06 14:42:13.000000000 -0500
@@ -61,3 +59,11 @@ void open_pid(pid_t pid, int options)
diff -urp ltrace-0.5-1/ltrace.h.orig ltrace-0.5/ltrace.h.orig
--- ltrace-0.5-1/ltrace.h.orig 2006-06-14 06:55:21.000000000 +0200
+++ ltrace-0.5/ltrace.h.orig 2008-10-07 12:06:19.000000000 +0200
@@ -12,6 +12,7 @@
#include "sysdep.h"
#define MAX_LIBRARY 30
+#define TRACE_FORK 1
#if defined HAVE_LIBIBERTY || defined HAVE_LIBSUPC__
# define USE_DEMANGLE
@@ -176,7 +177,7 @@ extern void show_summary(void);
/* Arch-dependent stuff: */
extern char *pid2name(pid_t pid);
-extern void trace_set_options(struct process *proc, pid_t pid);
+extern void trace_set_options(struct process *proc, pid_t pid, int option);
extern void trace_me(void);
extern int trace_pid(pid_t pid);
extern void untrace_pid(pid_t pid);
@@ -204,5 +205,5 @@ extern void *sym2addr(struct process *,
#if 0 /* not yet */
extern int umoven(struct process *proc, void *addr, int len, void *laddr);
#endif
-
+extern ulong get_child_pid(pid_t pid);
#endif
diff -urp ltrace-0.5-1/proc.c ltrace-0.5/proc.c
--- ltrace-0.5-1/proc.c 2008-10-07 12:05:58.000000000 +0200
+++ ltrace-0.5/proc.c 2008-10-07 12:06:20.000000000 +0200
@@ -58,3 +58,11 @@ void open_pid(pid_t pid, int verbose)
proc = open_program(filename, 0);
proc->pid = pid;
proc->breakpoints_enabled = -1;
}
+
+void open_forked_pid(pid_t pid)
@ -24,9 +51,10 @@ diff -BurpN ltrace-x86/proc.c ltrace-0.5/proc.c
+ proc->pid = pid;
+ proc->breakpoints_enabled = -1;
+}
diff -BurpN ltrace-x86/testsuite/lib/ltrace.exp ltrace-0.5/testsuite/lib/ltrace.exp
--- ltrace-x86/testsuite/lib/ltrace.exp 2006-12-06 11:34:43.000000000 -0500
+++ ltrace-0.5/testsuite/lib/ltrace.exp 2006-12-06 15:31:42.000000000 -0500
Only in ltrace-0.5: proc.c.orig
diff -urp ltrace-0.5-1/testsuite/lib/ltrace.exp ltrace-0.5/testsuite/lib/ltrace.exp
--- ltrace-0.5-1/testsuite/lib/ltrace.exp 2006-03-14 00:12:01.000000000 +0100
+++ ltrace-0.5/testsuite/lib/ltrace.exp 2008-10-07 12:06:20.000000000 +0200
@@ -260,7 +260,7 @@ proc ltrace_saveoutput { args } {
proc ltrace_verify_output { file_to_search pattern {instance_no 0}} {
@ -36,9 +64,9 @@ diff -BurpN ltrace-x86/testsuite/lib/ltrace.exp ltrace-0.5/testsuite/lib/ltrace.
verbose "output = $output"
if { $instance_no == 0 } then {
diff -BurpN ltrace-x86/testsuite/ltrace.minor/trace-fork.exp ltrace-0.5/testsuite/ltrace.minor/trace-fork.exp
--- ltrace-x86/testsuite/ltrace.minor/trace-fork.exp 2006-12-06 11:34:43.000000000 -0500
+++ ltrace-0.5/testsuite/ltrace.minor/trace-fork.exp 2006-12-06 15:29:40.000000000 -0500
diff -urp ltrace-0.5-1/testsuite/ltrace.minor/trace-fork.exp ltrace-0.5/testsuite/ltrace.minor/trace-fork.exp
--- ltrace-0.5-1/testsuite/ltrace.minor/trace-fork.exp 2006-03-14 00:12:01.000000000 +0100
+++ ltrace-0.5/testsuite/ltrace.minor/trace-fork.exp 2008-10-07 12:06:20.000000000 +0200
@@ -35,6 +35,19 @@ if [regexp {ELF from incompatible archit
ltrace_saveoutput "${exec_output}" ${srcdir}/${subdir}/${testfile}.ltrace
@ -60,10 +88,10 @@ diff -BurpN ltrace-x86/testsuite/ltrace.minor/trace-fork.exp ltrace-0.5/testsuit
+
+set pattern {'^\[pid [0-9]*\][ \t]*sleep'}
+ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
diff -BurpN ltrace-x86/wait_for_something.c ltrace-0.5/wait_for_something.c
--- ltrace-x86/wait_for_something.c 2006-12-06 21:43:33.000000000 +0100
+++ ltrace-0.5/wait_for_something.c 2006-12-06 21:45:06.000000000 +0100
@@ -103,7 +103,8 @@
diff -urp ltrace-0.5-1/wait_for_something.c ltrace-0.5/wait_for_something.c
--- ltrace-0.5-1/wait_for_something.c 2008-10-07 12:05:57.000000000 +0200
+++ ltrace-0.5/wait_for_something.c 2008-10-07 12:06:20.000000000 +0200
@@ -103,7 +103,8 @@ struct event *wait_for_something(void)
event.e_un.signum = WSTOPSIG(status);
child_pid = (pid_t) get_child_pid(event.proc->pid);
if (child_pid){

View File

@ -1,7 +1,7 @@
Summary: Tracks runtime library calls from dynamically linked executables
Name: ltrace
Version: 0.5
Release: 11.45svn%{?dist}
Release: 12.45svn%{?dist}
URL: http://ltrace.alioth.debian.org/
License: GPLv2+
Group: Development/Debuggers
@ -90,6 +90,10 @@ rm -rf $RPM_BUILD_ROOT
%config(noreplace) %{_sysconfdir}/ltrace.conf
%changelog
* Tue Oct 7 2008 Petr Machata <pmachata@redhat.com> - 0.5-12.45svn
- Fix fork & exec patches to apply cleanly under --fuzz=0
- Resolves: #465036
* Fri May 23 2008 Petr Machata <pmachata@redhat.com> - 0.5-11.45svn
- Patch from James M. Leddy, fixes interaction of -c and -o
- Fix compilation by using -D_LARGEFILE64_SOURCE