aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/linux-gnu/trace.c
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2012-04-24 18:09:01 +0200
committerPetr Machata <pmachata@redhat.com>2012-04-24 18:09:01 +0200
commit86d3828129e70222abdb77bdda6f31a7f1eafd5a (patch)
tree32c8b68c408896c337bed3c4c1e385a077d8b73a /sysdeps/linux-gnu/trace.c
parent4e1c06694c2ad99458817dcf9f1c6a73339cadd7 (diff)
downloadltrace-86d3828129e70222abdb77bdda6f31a7f1eafd5a.tar.gz
Add on_retract breakpoint callback
Diffstat (limited to 'sysdeps/linux-gnu/trace.c')
-rw-r--r--sysdeps/linux-gnu/trace.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/linux-gnu/trace.c b/sysdeps/linux-gnu/trace.c
index 809714f..5ad82cd 100644
--- a/sysdeps/linux-gnu/trace.c
+++ b/sysdeps/linux-gnu/trace.c
@@ -423,11 +423,19 @@ remove_task(struct Process *task, void *data)
return CBS_CONT;
}
+static enum callback_status
+retract_breakpoint_cb(struct Process *proc, struct breakpoint *bp, void *data)
+{
+ breakpoint_on_retract(bp, proc);
+ return CBS_CONT;
+}
+
static void
detach_process(Process * leader)
{
each_qd_event(&undo_breakpoint, leader);
disable_all_breakpoints(leader);
+ proc_each_breakpoint(leader, NULL, retract_breakpoint_cb, NULL);
/* Now untrace the process, if it was attached to by -p. */
struct opt_p_t * it;