aboutsummaryrefslogtreecommitdiff
path: root/gdb/progspace.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2020-04-16 14:50:07 +0100
committerPedro Alves <palves@redhat.com>2020-04-16 14:50:07 +0100
commit381ce63f2f010ef5c246be720ef177cf46a19179 (patch)
tree34a22623bd10566a7a231891444d06fa711ef71d /gdb/progspace.h
parenta010605fef0eba73c564c3dd22e0a6ecbc26b10e (diff)
downloadfsf-binutils-gdb-381ce63f2f010ef5c246be720ef177cf46a19179.zip
fsf-binutils-gdb-381ce63f2f010ef5c246be720ef177cf46a19179.tar.gz
fsf-binutils-gdb-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.h14
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);