aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-10-29 15:04:33 -0600
committerTom Tromey <tom@tromey.com>2020-10-29 15:04:39 -0600
commit2a3f84af539b4dc5473c44b0a01c1bcdfc7a1300 (patch)
tree480cc0467b823b8acc2d398f44e1125bb0edc746
parent004eecfdc7d9b47e8364719667c64edb22d12d44 (diff)
downloadgdb-2a3f84af539b4dc5473c44b0a01c1bcdfc7a1300.zip
gdb-2a3f84af539b4dc5473c44b0a01c1bcdfc7a1300.tar.gz
gdb-2a3f84af539b4dc5473c44b0a01c1bcdfc7a1300.tar.bz2
Change remove_target_sections to method on program_space
This changes remove_target_sections to be a method on program_space. This makes sense because this function manipulates data that is attached to the program space. gdb/ChangeLog 2020-10-29 Tom Tromey <tom@tromey.com> * progspace.h (struct program_space) <remove_target_sections>: Declare. * exec.c (program_space::remove_target_sections): Now a method. * exec.h (remove_target_sections): Don't declare.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/exec.c18
-rw-r--r--gdb/exec.h4
-rw-r--r--gdb/progspace.h3
-rw-r--r--gdb/solib.c6
-rw-r--r--gdb/symfile.c2
6 files changed, 20 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1286d57..ce9c193 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2020-10-29 Tom Tromey <tom@tromey.com>
+ * progspace.h (struct program_space) <remove_target_sections>:
+ Declare.
+ * exec.c (program_space::remove_target_sections): Now a method.
+ * exec.h (remove_target_sections): Don't declare.
+
+2020-10-29 Tom Tromey <tom@tromey.com>
+
* inferior.c (delete_inferior): Update.
* progspace.c (program_space::empty): Rename from
program_space_empty_p. Return bool.
diff --git a/gdb/exec.c b/gdb/exec.c
index 684f4df..49a4196 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -653,34 +653,28 @@ add_target_sections_of_objfile (struct objfile *objfile)
OWNER must be the same value passed to add_target_sections. */
void
-remove_target_sections (void *owner)
+program_space::remove_target_sections (void *owner)
{
- target_section_table *table = &current_program_space->target_sections;
-
gdb_assert (owner != NULL);
- auto it = std::remove_if (table->begin (),
- table->end (),
+ auto it = std::remove_if (target_sections.begin (),
+ target_sections.end (),
[&] (target_section &sect)
{
return sect.owner == owner;
});
- table->erase (it, table->end ());
+ target_sections.erase (it, target_sections.end ());
/* If we don't have any more sections to read memory from,
remove the file_stratum target from the stack of each
inferior sharing the program space. */
- if (table->empty ())
+ if (target_sections.empty ())
{
scoped_restore_current_pspace_and_thread restore_pspace_thread;
- program_space *curr_pspace = current_program_space;
for (inferior *inf : all_inferiors ())
{
- if (inf->pspace != curr_pspace)
- continue;
-
- if (!inf->pspace->target_sections.empty ())
+ if (inf->pspace != this)
continue;
switch_to_inferior_no_thread (inf);
diff --git a/gdb/exec.h b/gdb/exec.h
index 8590e78..d5b3cff 100644
--- a/gdb/exec.h
+++ b/gdb/exec.h
@@ -92,10 +92,6 @@ extern enum target_xfer_status
/* Set the loaded address of a section. */
extern void exec_set_section_address (const char *, int, CORE_ADDR);
-/* Remove all target sections owned by OWNER. */
-
-extern void remove_target_sections (void *owner);
-
/* Add the sections array defined by [SECTIONS..SECTIONS_END[ to the
current set of target sections. */
diff --git a/gdb/progspace.h b/gdb/progspace.h
index fa5247f..f4e1107 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -297,6 +297,9 @@ struct program_space
space. */
bool empty ();
+ /* Remove all target sections owned by OWNER. */
+ void remove_target_sections (void *owner);
+
/* Unique ID number. */
int num = 0;
diff --git a/gdb/solib.c b/gdb/solib.c
index baa1801..64b2035 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -824,7 +824,7 @@ update_solib_list (int from_tty)
/* Some targets' section tables might be referring to
sections from so->abfd; remove them. */
- remove_target_sections (gdb);
+ current_program_space->remove_target_sections (gdb);
free_so (gdb);
gdb = *gdb_link;
@@ -1175,7 +1175,7 @@ clear_solib (void)
current_program_space->so_list = so->next;
gdb::observers::solib_unloaded.notify (so);
- remove_target_sections (so);
+ current_program_space->remove_target_sections (so);
free_so (so);
}
@@ -1295,7 +1295,7 @@ reload_shared_libraries_1 (int from_tty)
if (so->objfile && ! (so->objfile->flags & OBJF_USERLOADED)
&& !solib_used (so))
so->objfile->unlink ();
- remove_target_sections (so);
+ current_program_space->remove_target_sections (so);
clear_so (so);
}
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 493411f..5041327 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -3709,7 +3709,7 @@ symfile_free_objfile (struct objfile *objfile)
{
/* Remove the target sections owned by this objfile. */
if (objfile != NULL)
- remove_target_sections ((void *) objfile);
+ current_program_space->remove_target_sections ((void *) objfile);
}
/* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".