Move free_all_objfiles to program_space
This changes free_all_objfiles to be a method on program_space, in line with the other changes to treat program_space as a container for objfiles. gdb/ChangeLog 2019-12-12 Tom Tromey <tom@tromey.com> * symfile.c (symbol_file_clear): Update. * progspace.h (struct program_space) <free_all_objfiles>: Declare method. * progspace.c (program_space::free_all_objfiles): New method. * objfiles.h (free_all_objfiles): Don't declare. * objfiles.c (free_all_objfiles): Move to program_space. Change-Id: I908b549d2981b6005f7ca181fc0e6d24fc8b7b6f
This commit is contained in:
parent
d0801dd8f2
commit
343cc95202
6 changed files with 31 additions and 18 deletions
|
@ -1,3 +1,12 @@
|
|||
2019-12-12 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symfile.c (symbol_file_clear): Update.
|
||||
* progspace.h (struct program_space) <free_all_objfiles>: Declare
|
||||
method.
|
||||
* progspace.c (program_space::free_all_objfiles): New method.
|
||||
* objfiles.h (free_all_objfiles): Don't declare.
|
||||
* objfiles.c (free_all_objfiles): Move to program_space.
|
||||
|
||||
2019-12-12 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* progspace.c (program_space::add_objfile)
|
||||
|
|
|
@ -618,21 +618,6 @@ objfile::~objfile ()
|
|||
get_objfile_pspace_data (pspace)->section_map_dirty = 1;
|
||||
}
|
||||
|
||||
/* Free all the object files at once and clean up their users. */
|
||||
|
||||
void
|
||||
free_all_objfiles (void)
|
||||
{
|
||||
struct so_list *so;
|
||||
|
||||
/* Any objfile reference would become stale. */
|
||||
for (so = master_so_list (); so; so = so->next)
|
||||
gdb_assert (so->objfile == NULL);
|
||||
|
||||
for (objfile *objfile : current_program_space->objfiles_safe ())
|
||||
objfile->unlink ();
|
||||
clear_symtab_users (0);
|
||||
}
|
||||
|
||||
/* A helper function for objfile_relocate1 that relocates a single
|
||||
symbol. */
|
||||
|
|
|
@ -662,8 +662,6 @@ extern void build_objfile_section_table (struct objfile *);
|
|||
|
||||
extern void free_objfile_separate_debug (struct objfile *);
|
||||
|
||||
extern void free_all_objfiles (void);
|
||||
|
||||
extern void objfile_relocate (struct objfile *, const struct section_offsets *);
|
||||
extern void objfile_rebase (struct objfile *, CORE_ADDR);
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "arch-utils.h"
|
||||
#include "gdbcore.h"
|
||||
#include "solib.h"
|
||||
#include "solist.h"
|
||||
#include "gdbthread.h"
|
||||
#include "inferior.h"
|
||||
#include <algorithm>
|
||||
|
@ -156,6 +157,23 @@ program_space::~program_space ()
|
|||
|
||||
/* See progspace.h. */
|
||||
|
||||
void
|
||||
program_space::free_all_objfiles ()
|
||||
{
|
||||
struct so_list *so;
|
||||
|
||||
/* Any objfile reference would become stale. */
|
||||
for (so = master_so_list (); so; so = so->next)
|
||||
gdb_assert (so->objfile == NULL);
|
||||
|
||||
while (!objfiles_list.empty ())
|
||||
objfiles_list.front ()->unlink ();
|
||||
|
||||
clear_symtab_users (0);
|
||||
}
|
||||
|
||||
/* See progspace.h. */
|
||||
|
||||
void
|
||||
program_space::add_objfile (struct objfile *objfile, struct objfile *before)
|
||||
{
|
||||
|
|
|
@ -179,6 +179,9 @@ struct program_space
|
|||
return objfiles_list.size () > 1;
|
||||
}
|
||||
|
||||
/* Free all the objfiles associated with this program space. */
|
||||
void free_all_objfiles ();
|
||||
|
||||
|
||||
/* Pointer to next in linked list. */
|
||||
struct program_space *next = NULL;
|
||||
|
|
|
@ -1251,7 +1251,7 @@ symbol_file_clear (int from_tty)
|
|||
objfiles get stale by free_all_objfiles. */
|
||||
no_shared_libraries (NULL, from_tty);
|
||||
|
||||
free_all_objfiles ();
|
||||
current_program_space->free_all_objfiles ();
|
||||
|
||||
gdb_assert (symfile_objfile == NULL);
|
||||
if (from_tty)
|
||||
|
|
Loading…
Add table
Reference in a new issue