diff options
author | Pedro Alves <palves@redhat.com> | 2020-04-16 14:50:07 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2020-04-16 14:50:07 +0100 |
commit | 381ce63f2f010ef5c246be720ef177cf46a19179 (patch) | |
tree | 34a22623bd10566a7a231891444d06fa711ef71d /gdb/progspace.h | |
parent | a010605fef0eba73c564c3dd22e0a6ecbc26b10e (diff) | |
download | binutils-381ce63f2f010ef5c246be720ef177cf46a19179.zip binutils-381ce63f2f010ef5c246be720ef177cf46a19179.tar.gz binutils-381ce63f2f010ef5c246be720ef177cf46a19179.tar.bz2 |
Refactor delete_program_space as a destructor
Currently, while the program_space's ctor adds the new pspace to the
pspaces list, the destructor doesn't remove the pspace from the pspace
list. Instead, you're supposed to use delete_program_space, to both
remove the pspace from the list, and deleting the pspace.
This patch eliminates delete_program_space, and makes the pspace dtor
remove the deleted pspace from the pspace list itself, i.e., makes the
dtor do the mirror opposite of the ctor.
I found this helps with a following patch that will allocate a mock
program_space on the stack. It's easier to just let the regular dtor
remove the mock pspace from the pspace list than arrange to call
delete_program_space instead of the pspace dtor in that situation.
While at it, move the ctor/dtor intro comments to the header file, and
make the ctor explicit.
gdb/ChangeLog:
2020-04-16 Pedro Alves <palves@redhat.com>
* inferior.c (delete_inferior): Use delete operator directly
instead of delete_program_space.
* progspace.c (add_program_space): New, factored out from
program_space::program_space.
(remove_program_space): New, factored out from
delete_program_space.
(program_space::program_space): Remove intro comment. Rewrite.
(program_space::~program_space): Remove intro comment. Call
remove_program_space.
(delete_program_space): Delete.
* progspace.h (program_space::program_space): Make explicit. Move
intro comment here, adjusted.
(program_space::~program_space): Move intro comment here,
adjusted.
(delete_program_space): Remove.
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r-- | gdb/progspace.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gdb/progspace.h b/gdb/progspace.h index 71a6f28..2b88784 100644 --- a/gdb/progspace.h +++ b/gdb/progspace.h @@ -209,7 +209,15 @@ private: struct program_space { - program_space (address_space *aspace_); + /* Constructs a new empty program space, binds it to ASPACE, and + adds it to the program space list. */ + explicit program_space (address_space *aspace); + + /* Releases a program space, and all its contents (shared libraries, + objfiles, and any other references to the program space in other + modules). It is an internal error to call this when the program + space is the current program space, since there should always be + a program space. */ ~program_space (); typedef unwrapping_objfile_range objfiles_range; @@ -362,10 +370,6 @@ extern struct program_space *current_program_space; #define ALL_PSPACES(pspace) \ for ((pspace) = program_spaces; (pspace) != NULL; (pspace) = (pspace)->next) -/* Remove a program space from the program spaces list and release it. It is - an error to call this function while PSPACE is the current program space. */ -extern void delete_program_space (struct program_space *pspace); - /* Returns the number of program spaces listed. */ extern int number_of_program_spaces (void); |