* remote.c (remote_start_remote): If the solib list is global,
fetch libraries and insert breakpoints after connecting. * infcmd.c (post_create_inferior): If the solist is shared between inferiors, no need to refetch it on every new inferior. (detach_command): If the shared library list is shared between inferiors, then don't clear it on every inferior detach. * gdbarch.sh (has_global_solist): New. * i386-dicos-tdep.c (i386_dicos_init_abi): Set gdbarch_has_global_solist. * target.c (target_pre_inferior): If the shared library list is shared between inferiors, then don't clear it here, neither invalidate the memory regions or clear the target description. (target_detach): If the shared library list is shared between inferiors, then don't remove breakpoints from the target here. (target_disconnect): Comment. * solib.c (update_solib_list): Check for null_ptid. * breakpoint.c (insert_breakpoints, update_global_location_list): If the shared library list is shared between inferiors, insert breakpoints even if there's no execution. (breakpoint_init_inferior): If the shared library list is shared between inferiors, don't delete breakpoints or mark them uninserted here. * gdbarch.c, gdbarch.h: Regenerate.
This commit is contained in:
parent
e03c1da340
commit
50c71eaf0e
10 changed files with 121 additions and 15 deletions
|
@ -1263,7 +1263,10 @@ insert_breakpoints (void)
|
|||
|
||||
update_global_location_list (1);
|
||||
|
||||
if (!breakpoints_always_inserted_mode () && target_has_execution)
|
||||
if (!breakpoints_always_inserted_mode ()
|
||||
&& (target_has_execution
|
||||
|| (gdbarch_has_global_solist (target_gdbarch)
|
||||
&& target_supports_multi_process ())))
|
||||
/* update_global_location_list does not insert breakpoints
|
||||
when always_inserted_mode is not enabled. Explicitly
|
||||
insert them now. */
|
||||
|
@ -1707,6 +1710,11 @@ breakpoint_init_inferior (enum inf_context context)
|
|||
struct bp_location *bpt;
|
||||
int ix;
|
||||
|
||||
/* If breakpoint locations are shared across processes, then there's
|
||||
nothing to do. */
|
||||
if (gdbarch_has_global_solist (target_gdbarch))
|
||||
return;
|
||||
|
||||
ALL_BP_LOCATIONS (bpt)
|
||||
if (bpt->owner->enable_state != bp_permanent)
|
||||
bpt->inserted = 0;
|
||||
|
@ -7259,9 +7267,10 @@ update_global_location_list (int should_insert)
|
|||
check_duplicates (b);
|
||||
}
|
||||
|
||||
if (breakpoints_always_inserted_mode ()
|
||||
&& should_insert
|
||||
&& target_has_execution)
|
||||
if (breakpoints_always_inserted_mode () && should_insert
|
||||
&& (target_has_execution
|
||||
|| (gdbarch_has_global_solist (target_gdbarch)
|
||||
&& target_supports_multi_process ())))
|
||||
insert_breakpoint_locations ();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue