mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-17 07:53:51 +08:00
* 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:
@ -240,6 +240,7 @@ struct gdbarch
|
||||
gdbarch_target_signal_from_host_ftype *target_signal_from_host;
|
||||
gdbarch_target_signal_to_host_ftype *target_signal_to_host;
|
||||
gdbarch_record_special_symbol_ftype *record_special_symbol;
|
||||
int has_global_solist;
|
||||
};
|
||||
|
||||
|
||||
@ -371,6 +372,7 @@ struct gdbarch startup_gdbarch =
|
||||
default_target_signal_from_host, /* target_signal_from_host */
|
||||
default_target_signal_to_host, /* target_signal_to_host */
|
||||
0, /* record_special_symbol */
|
||||
0, /* has_global_solist */
|
||||
/* startup_gdbarch() */
|
||||
};
|
||||
|
||||
@ -623,6 +625,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
||||
/* Skip verify of target_signal_from_host, invalid_p == 0 */
|
||||
/* Skip verify of target_signal_to_host, invalid_p == 0 */
|
||||
/* Skip verify of record_special_symbol, has predicate */
|
||||
/* Skip verify of has_global_solist, invalid_p == 0 */
|
||||
buf = ui_file_xstrdup (log, &dummy);
|
||||
make_cleanup (xfree, buf);
|
||||
if (strlen (buf) > 0)
|
||||
@ -831,6 +834,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: get_longjmp_target = <0x%lx>\n",
|
||||
(long) gdbarch->get_longjmp_target);
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: has_global_solist = %s\n",
|
||||
plongest (gdbarch->has_global_solist));
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: have_nonsteppable_watchpoint = %s\n",
|
||||
plongest (gdbarch->have_nonsteppable_watchpoint));
|
||||
@ -3237,6 +3243,23 @@ set_gdbarch_record_special_symbol (struct gdbarch *gdbarch,
|
||||
gdbarch->record_special_symbol = record_special_symbol;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_has_global_solist (struct gdbarch *gdbarch)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
/* Skip verify of has_global_solist, invalid_p == 0 */
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_has_global_solist called\n");
|
||||
return gdbarch->has_global_solist;
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_has_global_solist (struct gdbarch *gdbarch,
|
||||
int has_global_solist)
|
||||
{
|
||||
gdbarch->has_global_solist = has_global_solist;
|
||||
}
|
||||
|
||||
|
||||
/* Keep a registry of per-architecture data-pointers required by GDB
|
||||
modules. */
|
||||
|
Reference in New Issue
Block a user