Browse Source

gdb: add program_space parameter to clear_solib

Make the current_program_space reference bubble up one level.

Remove one unnecessary declaration of clear_solib.

Change-Id: I234e2c8c0b71713364fc7b76cee2bee2b026bd6d
Approved-By: Andrew Burgess <aburgess@redhat.com>
master
Simon Marchi 2 years ago
committed by Simon Marchi
parent
commit
c1663e3620
  1. 2
      gdb/corelow.c
  2. 16
      gdb/solib.c
  3. 6
      gdb/solib.h
  4. 4
      gdb/symtab.h

2
gdb/corelow.c

@ -335,7 +335,7 @@ core_target::clear_core ()
/* Clear out solib state while the bfd is still open. See /* Clear out solib state while the bfd is still open. See
comments in clear_solib in solib.c. */ comments in clear_solib in solib.c. */
clear_solib (); clear_solib (current_program_space);
current_program_space->cbfd.reset (nullptr); current_program_space->cbfd.reset (nullptr);
} }

16
gdb/solib.c

@ -1180,23 +1180,23 @@ solib_keep_data_in_core (CORE_ADDR vaddr, unsigned long size)
return false; return false;
} }
/* Called by free_all_symtabs */ /* See solib.h. */
void void
clear_solib (void) clear_solib (program_space *pspace)
{ {
const solib_ops *ops = gdbarch_so_ops (current_inferior ()->arch ()); const solib_ops *ops = gdbarch_so_ops (current_inferior ()->arch ());
disable_breakpoints_in_shlibs (current_program_space); disable_breakpoints_in_shlibs (pspace);
current_program_space->so_list.clear_and_dispose ([] (solib *so) { pspace->so_list.clear_and_dispose ([pspace] (solib *so) {
notify_solib_unloaded (current_program_space, *so); notify_solib_unloaded (pspace, *so);
current_program_space->remove_target_sections (so); pspace->remove_target_sections (so);
delete so; delete so;
}); });
if (ops->clear_solib != nullptr) if (ops->clear_solib != nullptr)
ops->clear_solib (current_program_space); ops->clear_solib (pspace);
} }
/* Shared library startup support. When GDB starts up the inferior, /* Shared library startup support. When GDB starts up the inferior,
@ -1244,7 +1244,7 @@ no_shared_libraries (const char *ignored, int from_tty)
access to their associated objfiles. Therefore, we can not purge the access to their associated objfiles. Therefore, we can not purge the
solibs' objfiles before clear_solib has been called. */ solibs' objfiles before clear_solib has been called. */
clear_solib (); clear_solib (current_program_space);
objfile_purge_solibs (); objfile_purge_solibs ();
} }

6
gdb/solib.h

@ -42,10 +42,10 @@ extern bool debug_solib;
#define SOLIB_SCOPED_DEBUG_START_END(fmt, ...) \ #define SOLIB_SCOPED_DEBUG_START_END(fmt, ...) \
scoped_debug_start_end (debug_solib, "solib", fmt, ##__VA_ARGS__) scoped_debug_start_end (debug_solib, "solib", fmt, ##__VA_ARGS__)
/* Called when we free all symtabs, to free the shared library information /* Called when we free all symtabs of PSPACE, to free the shared library
as well. */ information as well. */
extern void clear_solib (void); extern void clear_solib (program_space *pspace);
/* Called to add symbols from a shared library to gdb's symbol table. */ /* Called to add symbols from a shared library to gdb's symbol table. */

4
gdb/symtab.h

@ -2423,10 +2423,6 @@ extern bool find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
extern void resolve_sal_pc (struct symtab_and_line *); extern void resolve_sal_pc (struct symtab_and_line *);
/* solib.c */
extern void clear_solib (void);
/* The reason we're calling into a completion match list collector /* The reason we're calling into a completion match list collector
function. */ function. */
enum class complete_symbol_mode enum class complete_symbol_mode

Loading…
Cancel
Save