Fixes from Supriya Kannery <supriyak@in.ibm.com>
* wait_for_something.c, process_event.c: Tracing across exec.
* sysdeps/linux-gnu/trace.c, ltrace.h: New interface was_exec.
* testsuite/ltrace.minor/trace-exec.c,
testsuite/ltrace.minor/trace-exec.exp,
testsuite/ltrace.minor/trace-exec1.c: Testcase for same.
diff --git a/wait_for_something.c b/wait_for_something.c
index 94edda7..f699663 100644
--- a/wait_for_something.c
+++ b/wait_for_something.c
@@ -114,6 +114,25 @@
event.e_un.signum = stop_signal;
return &event;
}
+
+ if (was_exec(event.proc, status)) {
+ pid_t saved_pid;
+
+ event.thing = LT_EV_NONE;
+ event.e_un.signum = WSTOPSIG(status);
+ debug(1, "Placing breakpoints for the new program");
+ event.proc->mask_32bit = 0;
+ event.proc->personality = 0;
+ event.proc->arch_ptr = NULL;
+ event.proc->filename = pid2name(event.proc->pid);
+ saved_pid = event.proc->pid;
+ event.proc->pid = 0;
+ breakpoints_init(event.proc);
+ event.proc->pid = saved_pid;
+ continue_process(event.proc->pid);
+ return &event;
+ }
+
event.thing = LT_EV_BREAKPOINT;
if (!event.proc->instruction_pointer) {
event.proc->instruction_pointer =