summaryrefslogtreecommitdiff
path: root/gdb/progspace.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2018-03-02 23:22:08 -0500
committerSimon Marchi <simon.marchi@polymtl.ca>2018-03-02 23:22:08 -0500
commit564b1e3f2906bbbf53d003d6fdbcfc83661385e2 (patch)
treef39a545af2f86a076051c4b32e9bd93b4e3214a9 /gdb/progspace.c
parente80aaf6183c6692ecc167bf26cbdc53f8f1a55f0 (diff)
downloadbinutils-gdb-564b1e3f2906bbbf53d003d6fdbcfc83661385e2.tar.gz
C++ify program_space
This patch makes program_space a C++ object by adding a constructor/destructor, giving default values to fields, and using new/delete. gdb/ChangeLog: * progspace.h (struct program_space): Add constructor and destructor, initialize fields. (add_program_space): Remove. * progspace.c (add_program_space): Rename to... (program_space::program_space): ... this. (release_program_space): Rename to... (program_space::~program_space): ... this. (delete_program_space): Use delete to delete program_space. (initialize_progspace): Use new to allocate program_space. * inferior.c (add_inferior_with_spaces): Likewise. (clone_inferior_command): Likewise. * infrun.c (follow_fork_inferior): Likewise. (handle_vfork_child_exec_or_exit): Likewise.
Diffstat (limited to 'gdb/progspace.c')
-rw-r--r--gdb/progspace.c41
1 files changed, 15 insertions, 26 deletions
diff --git a/gdb/progspace.c b/gdb/progspace.c
index 08a8a7a88e1..f6da7e7da28 100644
--- a/gdb/progspace.c
+++ b/gdb/progspace.c
@@ -109,30 +109,21 @@ init_address_spaces (void)
/* Adds a new empty program space to the program space list, and binds
it to ASPACE. Returns the pointer to the new object. */
-struct program_space *
-add_program_space (struct address_space *aspace)
+program_space::program_space (address_space *aspace_)
+: num (++last_program_space_num), aspace (aspace_)
{
- struct program_space *pspace;
-
- pspace = XCNEW (struct program_space);
-
- pspace->num = ++last_program_space_num;
- pspace->aspace = aspace;
-
- program_space_alloc_data (pspace);
+ program_space_alloc_data (this);
if (program_spaces == NULL)
- program_spaces = pspace;
+ program_spaces = this;
else
{
struct program_space *last;
for (last = program_spaces; last->next != NULL; last = last->next)
;
- last->next = pspace;
+ last->next = this;
}
-
- return pspace;
}
/* Releases program space PSPACE, and all its contents (shared
@@ -141,26 +132,24 @@ add_program_space (struct address_space *aspace)
is the current program space, since there should always be a
program space. */
-static void
-release_program_space (struct program_space *pspace)
+program_space::~program_space ()
{
- gdb_assert (pspace != current_program_space);
+ gdb_assert (this != current_program_space);
scoped_restore_current_program_space restore_pspace;
- set_current_program_space (pspace);
+ set_current_program_space (this);
- breakpoint_program_space_exit (pspace);
+ breakpoint_program_space_exit (this);
no_shared_libraries (NULL, 0);
exec_close ();
free_all_objfiles ();
if (!gdbarch_has_shared_address_space (target_gdbarch ()))
- free_address_space (pspace->aspace);
- clear_section_table (&pspace->target_sections);
- clear_program_space_solib_cache (pspace);
+ free_address_space (this->aspace);
+ clear_section_table (&this->target_sections);
+ clear_program_space_solib_cache (this);
/* Discard any data modules have associated with the PSPACE. */
- program_space_free_data (pspace);
- xfree (pspace);
+ program_space_free_data (this);
}
/* Copies program space SRC to DEST. Copies the main executable file,
@@ -235,7 +224,7 @@ delete_program_space (struct program_space *pspace)
ss = *ss_link;
}
- release_program_space (pspace);
+ delete pspace;
}
/* Prints the list of program spaces and their details on UIOUT. If
@@ -433,5 +422,5 @@ initialize_progspace (void)
modules have done that. Do this before
initialize_current_architecture, because that accesses exec_bfd,
which in turn dereferences current_program_space. */
- current_program_space = add_program_space (new_address_space ());
+ current_program_space = new program_space (new_address_space ());
}