summaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorphilippe <philippe>2013-05-21 18:47:04 +0000
committerphilippe <philippe>2013-05-21 18:47:04 +0000
commit13f2e76510cd8d5b2da22d958cdcc3dd3e785005 (patch)
tree6fbca79bb57eee21456f7d97f797a0497de5dabc /gdb/breakpoint.c
parenta5d4bb2f9bfe5ed5911e9e79d0f00a8de790727d (diff)
downloadgdb-13f2e76510cd8d5b2da22d958cdcc3dd3e785005.tar.gz
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 bbbaaf56ab3..b4d2f27b7b0 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);
}