summaryrefslogtreecommitdiff
path: root/gdb/linux-nat.c
diff options
context:
space:
mode:
authorPedro Alves <pedro@codesourcery.com>2008-07-08 10:59:57 +0000
committerPedro Alves <pedro@codesourcery.com>2008-07-08 10:59:57 +0000
commite58e16208228dc878391a692f1446a5effb2b1db (patch)
tree1a2f9e7d52a39336ef17797810da2e03f11ad75a /gdb/linux-nat.c
parentd162d338475a9f57b99a2bfa5d62cc339eb47ed6 (diff)
downloadgdb-e58e16208228dc878391a692f1446a5effb2b1db.tar.gz
* breakpoint.c (mark_breakpoints_out): Make public.
(update_breakpoints_after_exec): Don't call mark_breakpoints_out here. Update comment. * breakpoint.h (mark_breakpoints_out): Declare. * linux-nat.c (linux_handle_extended_wait): On TARGET_WAITKIND_EXECD, call mark_breakpoints_out. * inf-ttrace.c (inf_ttrace_wait): Likewise.
Diffstat (limited to 'gdb/linux-nat.c')
-rw-r--r--gdb/linux-nat.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 964337884e0..ce3df53f5db 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -1758,6 +1758,16 @@ linux_handle_extended_wait (struct lwp_info *lp, int status,
linux_parent_pid = 0;
}
+ /* At this point, all inserted breakpoints are gone. Doing this
+ as soon as we detect an exec prevents the badness of deleting
+ a breakpoint writing the current "shadow contents" to lift
+ the bp. That shadow is NOT valid after an exec.
+
+ Note that we have to do this after the detach_breakpoints
+ call above, otherwise breakpoints wouldn't be lifted from the
+ parent on a vfork, because detach_breakpoints would think
+ that breakpoints are not inserted. */
+ mark_breakpoints_out ();
return 0;
}