diff options
-rw-r--r-- | gdb/breakpoint.c | 7 | ||||
-rw-r--r-- | gdb/breakpoint.h | 5 | ||||
-rw-r--r-- | gdb/solib.c | 2 | ||||
-rw-r--r-- | gdb/windows-nat.c | 2 |
4 files changed, 9 insertions, 7 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 8d8e974..5f05657 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -7972,11 +7972,10 @@ create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR add return b; } -/* Disable any breakpoints that are on code in shared libraries. Only - apply to enabled breakpoints, disabled ones can just stay disabled. */ +/* See breakpoint.h. */ void -disable_breakpoints_in_shlibs (void) +disable_breakpoints_in_shlibs (program_space *pspace) { for (bp_location *loc : all_bp_locations ()) { @@ -7992,7 +7991,7 @@ disable_breakpoints_in_shlibs (void) || (b->type == bp_jit_event) || (b->type == bp_hardware_breakpoint) || (is_tracepoint (b))) - && loc->pspace == current_program_space + && loc->pspace == pspace && !loc->shlib_disabled && solib_name_from_address (loc->pspace, loc->address) ) diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 8530a71..226e4d0 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1802,7 +1802,10 @@ extern void remove_solib_event_breakpoints (void); delete at next stop disposition. */ extern void remove_solib_event_breakpoints_at_next_stop (void); -extern void disable_breakpoints_in_shlibs (void); +/* Disable any breakpoints that are on code in shared libraries in PSPACE. + Only apply to enabled breakpoints, disabled ones can just stay disabled. */ + +extern void disable_breakpoints_in_shlibs (program_space *pspace); /* This function returns true if B is a catchpoint. */ diff --git a/gdb/solib.c b/gdb/solib.c index 0a88843..98cda03 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1187,7 +1187,7 @@ clear_solib (void) { const solib_ops *ops = gdbarch_so_ops (current_inferior ()->arch ()); - disable_breakpoints_in_shlibs (); + disable_breakpoints_in_shlibs (current_program_space); current_program_space->so_list.clear_and_dispose ([] (solib *so) { notify_solib_unloaded (current_program_space, *so); diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 48b0d10..7f3044f 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -1906,7 +1906,7 @@ windows_nat_target::do_initial_windows_stuff (DWORD pid, bool attaching) inf = current_inferior (); if (!inf->target_is_pushed (this)) inf->push_target (this); - disable_breakpoints_in_shlibs (); + disable_breakpoints_in_shlibs (current_program_space); windows_clear_solib (); clear_proceed_status (0); init_wait_for_inferior (); |