inf_ttrace_follow_fork: detach_breakpoints called twice for child.

When debugging a program that forks with follow-fork set to follow
the parent, we end up calling detach_breakpoints for the child twice.
On ia64-hpux, this leads to a warning when trying to remove the
breakpoints the second time around, because the ia64 code detects
that the address does not point to a breakpoint instruction.

gdb/ChangeLog:

        * inf-ttrace.c (inf_ttrace_follow_fork): When following the
        parent, only call detach_breakpoints if tts.tts_event ==
        TTEVT_VFORK.
This commit is contained in:
Joel Brobecker 2012-08-16 23:54:37 +00:00
parent 58f594cdb7
commit 2dcc608618
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-08-16 Joel Brobecker <brobecker@adacore.com>
* inf-ttrace.c (inf_ttrace_follow_fork): When following the
parent, only call detach_breakpoints if tts.tts_event ==
TTEVT_VFORK.
2012-08-16 Joel Brobecker <brobecker@adacore.com>
* dwarf2-frame.c (dwarf2_frame_cache): Use

View File

@ -467,7 +467,11 @@ inf_ttrace_follow_fork (struct target_ops *ops, int follow_child)
else
{
inferior_ptid = ptid_build (pid, lwpid, 0);
detach_breakpoints (fpid);
/* Detach any remaining breakpoints in the child. In the case
of fork events, we do not need to do this, because breakpoints
should have already been removed earlier. */
if (tts.tts_event == TTEVT_VFORK)
detach_breakpoints (fpid);
target_terminal_ours ();
fprintf_unfiltered (gdb_stdlog,