This changes remove_target_sections to be a method on program_space.
This makes sense because this function manipulates data that is
attached to the program space.
gdb/ChangeLog
2020-10-29 Tom Tromey <tom@tromey.com>
* progspace.h (struct program_space) <remove_target_sections>:
Declare.
* exec.c (program_space::remove_target_sections): Now a method.
* exec.h (remove_target_sections): Don't declare.
+2020-10-29 Tom Tromey <tom@tromey.com>
+
+ * progspace.h (struct program_space) <remove_target_sections>:
+ Declare.
+ * exec.c (program_space::remove_target_sections): Now a method.
+ * exec.h (remove_target_sections): Don't declare.
+
2020-10-29 Tom Tromey <tom@tromey.com>
* inferior.c (delete_inferior): Update.
OWNER must be the same value passed to add_target_sections. */
void
-remove_target_sections (void *owner)
+program_space::remove_target_sections (void *owner)
{
- target_section_table *table = ¤t_program_space->target_sections;
-
gdb_assert (owner != NULL);
- auto it = std::remove_if (table->begin (),
- table->end (),
+ auto it = std::remove_if (target_sections.begin (),
+ target_sections.end (),
[&] (target_section §)
{
return sect.owner == owner;
});
- table->erase (it, table->end ());
+ target_sections.erase (it, target_sections.end ());
/* If we don't have any more sections to read memory from,
remove the file_stratum target from the stack of each
inferior sharing the program space. */
- if (table->empty ())
+ if (target_sections.empty ())
{
scoped_restore_current_pspace_and_thread restore_pspace_thread;
- program_space *curr_pspace = current_program_space;
for (inferior *inf : all_inferiors ())
{
- if (inf->pspace != curr_pspace)
- continue;
-
- if (!inf->pspace->target_sections.empty ())
+ if (inf->pspace != this)
continue;
switch_to_inferior_no_thread (inf);
/* Set the loaded address of a section. */
extern void exec_set_section_address (const char *, int, CORE_ADDR);
-/* Remove all target sections owned by OWNER. */
-
-extern void remove_target_sections (void *owner);
-
/* Add the sections array defined by [SECTIONS..SECTIONS_END[ to the
current set of target sections. */
space. */
bool empty ();
+ /* Remove all target sections owned by OWNER. */
+ void remove_target_sections (void *owner);
+
/* Unique ID number. */
int num = 0;
/* Some targets' section tables might be referring to
sections from so->abfd; remove them. */
- remove_target_sections (gdb);
+ current_program_space->remove_target_sections (gdb);
free_so (gdb);
gdb = *gdb_link;
current_program_space->so_list = so->next;
gdb::observers::solib_unloaded.notify (so);
- remove_target_sections (so);
+ current_program_space->remove_target_sections (so);
free_so (so);
}
if (so->objfile && ! (so->objfile->flags & OBJF_USERLOADED)
&& !solib_used (so))
so->objfile->unlink ();
- remove_target_sections (so);
+ current_program_space->remove_target_sections (so);
clear_so (so);
}
{
/* Remove the target sections owned by this objfile. */
if (objfile != NULL)
- remove_target_sections ((void *) objfile);
+ current_program_space->remove_target_sections ((void *) objfile);
}
/* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".