aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorPhilippe Waroquiers <philippe@sourceware.org>2013-05-21 18:47:05 +0000
committerPhilippe Waroquiers <philippe@sourceware.org>2013-05-21 18:47:05 +0000
commitbd9673a4ded96ea5c108601501c8e59003ea1be6 (patch)
tree757770a34bd9bff6d249e0ba8a901bb92640ecfd /gdb/breakpoint.c
parent69a97597d5af4e493917ad93bc25899cd6344c0d (diff)
downloadgdb-bd9673a4ded96ea5c108601501c8e59003ea1be6.zip
gdb-bd9673a4ded96ea5c108601501c8e59003ea1be6.tar.gz
gdb-bd9673a4ded96ea5c108601501c8e59003ea1be6.tar.bz2
Fix internal error caused by interaction between catch signal and fork
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index bbbaaf5..b4d2f27 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -3537,6 +3537,15 @@ detach_breakpoints (ptid_t ptid)
if (bl->pspace != inf->pspace)
continue;
+ /* This function must physically remove breakpoints locations
+ from the specified ptid, without modifying the breakpoint
+ package's state. Locations of type bp_loc_other are only
+ maintained at GDB side. So, there is no need to remove
+ these bp_loc_other locations. Moreover, removing these
+ would modify the breakpoint package's state. */
+ if (bl->loc_type == bp_loc_other)
+ continue;
+
if (bl->inserted)
val |= remove_breakpoint_1 (bl, mark_inserted);
}