diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2018-03-02 23:22:08 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2018-03-02 23:22:08 -0500 |
commit | 564b1e3f2906bbbf53d003d6fdbcfc83661385e2 (patch) | |
tree | f39a545af2f86a076051c4b32e9bd93b4e3214a9 /gdb/progspace.c | |
parent | e80aaf6183c6692ecc167bf26cbdc53f8f1a55f0 (diff) | |
download | gdb-564b1e3f2906bbbf53d003d6fdbcfc83661385e2.zip gdb-564b1e3f2906bbbf53d003d6fdbcfc83661385e2.tar.gz gdb-564b1e3f2906bbbf53d003d6fdbcfc83661385e2.tar.bz2 |
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.c | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/gdb/progspace.c b/gdb/progspace.c index 08a8a7a..f6da7e7 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 ()); } |