Skip to content

Commit

Permalink
gdb: remove solib::pspace field
Browse files Browse the repository at this point in the history
This backlink is not necessary, we always know the program space from
the context.  Pass it down the solib_unloaded observer.

Change-Id: I45a503472dc791f517558b8141901472634e0556
Approved-By: Tom Tromey <[email protected]>
  • Loading branch information
simark committed Oct 2, 2023
1 parent dc63d56 commit bd93891
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 15 deletions.
4 changes: 2 additions & 2 deletions gdb/breakpoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -8018,7 +8018,7 @@ disable_breakpoints_in_shlibs (void)
disabled ones can just stay disabled. */

static void
disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
disable_breakpoints_in_unloaded_shlib (program_space *pspace, so_list *solib)
{
bool disabled_shlib_breaks = false;

Expand All @@ -8027,7 +8027,7 @@ disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
/* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
struct breakpoint *b = loc->owner;

if (solib->pspace == loc->pspace
if (pspace == loc->pspace
&& !loc->shlib_disabled
&& (((b->type == bp_breakpoint
|| b->type == bp_jit_event
Expand Down
2 changes: 1 addition & 1 deletion gdb/bsd-uthread.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ bsd_uthread_solib_loaded (struct so_list *so)
}

static void
bsd_uthread_solib_unloaded (struct so_list *so)
bsd_uthread_solib_unloaded (program_space *pspace, so_list *so)
{
if (!bsd_uthread_solib_name)
return;
Expand Down
7 changes: 4 additions & 3 deletions gdb/observable.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,11 @@ extern observable<inferior */* parent_inf */, inferior */* child_inf */,
haven't been loaded yet. */
extern observable<struct so_list */* solib */> solib_loaded;

/* The shared library specified by SOLIB has been unloaded. Note
that when gdb calls this observer, the library's symbols have not
/* The shared library SOLIB has been unloaded from program space PSPACE.
Note when gdb calls this observer, the library's symbols have not
been unloaded yet, and thus are still available. */
extern observable<struct so_list */* solib */> solib_unloaded;
extern observable<struct program_space */* pspace */, struct so_list */* solib */>
solib_unloaded;

/* The symbol file specified by OBJFILE has been loaded. Called
with OBJFILE equal to NULL to indicate previously loaded symbol
Expand Down
10 changes: 4 additions & 6 deletions gdb/solib.c
Original file line number Diff line number Diff line change
Expand Up @@ -763,10 +763,10 @@ notify_solib_loaded (so_list *so)
/* Notify interpreters and observers that solib SO has been unloaded. */

static void
notify_solib_unloaded (so_list *so)
notify_solib_unloaded (program_space *pspace, so_list *so)
{
interps_notify_solib_unloaded (so);
gdb::observers::solib_unloaded.notify (so);
gdb::observers::solib_unloaded.notify (pspace, so);
}

/* See solib.h. */
Expand Down Expand Up @@ -869,7 +869,7 @@ update_solib_list (int from_tty)
{
/* Notify any observer that the shared object has been
unloaded before we remove it from GDB's tables. */
notify_solib_unloaded (gdb);
notify_solib_unloaded (current_program_space, gdb);

current_program_space->deleted_solibs.push_back (gdb->so_name);

Expand Down Expand Up @@ -905,8 +905,6 @@ update_solib_list (int from_tty)
/* Fill in the rest of each of the `struct so_list' nodes. */
for (i = inferior; i; i = i->next)
{

i->pspace = current_program_space;
current_program_space->added_solibs.push_back (i);

try
Expand Down Expand Up @@ -1237,7 +1235,7 @@ clear_solib (void)
struct so_list *so = current_program_space->so_list;

current_program_space->so_list = so->next;
notify_solib_unloaded (so);
notify_solib_unloaded (current_program_space, so);
current_program_space->remove_target_sections (so);
free_so (so);
}
Expand Down
3 changes: 0 additions & 3 deletions gdb/solist.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@ struct so_list
/* Shared object file name, expanded to something GDB can open. */
char so_name[SO_NAME_MAX_PATH_SIZE];

/* Program space this shared library belongs to. */
struct program_space *pspace;

/* The following fields of the structure are built from
information gathered from the shared object file itself, and
are set when we actually add it to our symbol tables.
Expand Down

0 comments on commit bd93891

Please sign in to comment.