summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-01-15 17:06:38 -0700
committerTom Tromey <tom@tromey.com>2019-01-17 15:42:00 -0700
commit7e955d83c4128ec773d84b92487ed1cdfed09938 (patch)
tree95fd2b230aa1ec340efdf069c98423ae73a6d6bd
parent2030c079717475f5b6fad837bb81758891f3b802 (diff)
downloadbinutils-gdb-7e955d83c4128ec773d84b92487ed1cdfed09938.tar.gz
Change all_objfiles_safe adapter to be a method on program_space
This changes the all_objfiles_safe range adapter to be a method on the program space, and fixes up all the users. gdb/ChangeLog 2019-01-15 Tom Tromey <tom@tromey.com> * progspace.h (program_space) <objfiles_safe_range>: New typedef. <objfiles_safe>: New method. * objfiles.h (class all_objfiles_safe): Remove. * objfiles.c (free_all_objfiles, objfile_purge_solibs): Update. * jit.c (jit_inferior_exit_hook): Update.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/jit.c2
-rw-r--r--gdb/objfiles.c8
-rw-r--r--gdb/objfiles.h22
-rw-r--r--gdb/progspace.h18
5 files changed, 33 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e8178dbf18f..f59eeb13c7b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2019-01-15 Tom Tromey <tom@tromey.com>
+
+ * progspace.h (program_space) <objfiles_safe_range>: New
+ typedef.
+ <objfiles_safe>: New method.
+ * objfiles.h (class all_objfiles_safe): Remove.
+ * objfiles.c (free_all_objfiles, objfile_purge_solibs): Update.
+ * jit.c (jit_inferior_exit_hook): Update.
+
2019-01-17 Tom Tromey <tom@tromey.com>
* progspace.h (program_space) <objfiles_range>: New typedef.
@@ -1114,7 +1123,7 @@
Update copyright year range in all GDB files.
-2019-01-01 Joel Brobecker <brobecker@adacore.com>
+2019-01-01, 19 Joel Brobecker <brobecker@adacore.com>
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2018.
diff --git a/gdb/jit.c b/gdb/jit.c
index b1cf2f5bb75..81c4af40f92 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -1391,7 +1391,7 @@ jit_breakpoint_re_set (void)
static void
jit_inferior_exit_hook (struct inferior *inf)
{
- for (objfile *objf : all_objfiles_safe (current_program_space))
+ for (objfile *objf : current_program_space->objfiles_safe ())
{
struct jit_objfile_data *objf_data
= (struct jit_objfile_data *) objfile_data (objf, jit_objfile_data);
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 02b1a9d0643..82400a4fe89 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -514,7 +514,7 @@ objfile_separate_debug_iterate (const struct objfile *parent,
/* Put one object file before a specified on in the global list.
This can be used to make sure an object file is destroyed before
- another when using all_objfiles_safe to free all objfiles. */
+ another when using objfiles_safe to free all objfiles. */
void
put_objfile_before (struct objfile *objfile, struct objfile *before_this)
{
@@ -587,7 +587,7 @@ add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
parent->separate_debug_objfile = objfile;
/* Put the separate debug object before the normal one, this is so that
- usage of all_objfiles_safe will stay safe. */
+ usage of objfiles_safe will stay safe. */
put_objfile_before (objfile, parent);
}
@@ -735,7 +735,7 @@ free_all_objfiles (void)
for (so = master_so_list (); so; so = so->next)
gdb_assert (so->objfile == NULL);
- for (objfile *objfile : all_objfiles_safe (current_program_space))
+ for (objfile *objfile : current_program_space->objfiles_safe ())
delete objfile;
clear_symtab_users (0);
}
@@ -1044,7 +1044,7 @@ have_full_symbols (void)
void
objfile_purge_solibs (void)
{
- for (objfile *objf : all_objfiles_safe (current_program_space))
+ for (objfile *objf : current_program_space->objfiles_safe ())
{
/* We assume that the solib package has been purged already, or will
be soon. */
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index eca46e59f8a..599d8a1bce9 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -553,28 +553,6 @@ extern void default_iterate_over_objfiles_in_search_order
void *cb_data, struct objfile *current_objfile);
-/* An iterarable object that can be used to iterate over all
- objfiles. The basic use is in a foreach, like:
-
- for (objfile *objf : all_objfiles_safe (pspace)) { ... }
-
- This variant uses a basic_safe_iterator so that objfiles can be
- deleted during iteration. */
-
-class all_objfiles_safe
- : public next_adapter<struct objfile,
- basic_safe_iterator<next_iterator<objfile>>>
-{
-public:
-
- explicit all_objfiles_safe (struct program_space *pspace)
- : next_adapter<struct objfile,
- basic_safe_iterator<next_iterator<objfile>>>
- (pspace->objfiles_head)
- {
- }
-};
-
/* A range adapter that makes it possible to iterate over all
compunits in one objfile. */
diff --git a/gdb/progspace.h b/gdb/progspace.h
index abc53973b6f..472baeb9a16 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -26,6 +26,8 @@
#include "gdb_bfd.h"
#include "gdb_vecs.h"
#include "registry.h"
+#include "common/next-iterator.h"
+#include "common/safe-iterator.h"
struct target_ops;
struct bfd;
@@ -148,6 +150,22 @@ struct program_space
return objfiles_range (objfiles_head);
}
+ typedef next_adapter<struct objfile,
+ basic_safe_iterator<next_iterator<objfile>>>
+ objfiles_safe_range;
+
+ /* An iterable object that can be used to iterate over all objfiles.
+ The basic use is in a foreach, like:
+
+ for (objfile *objf : pspace->objfiles_safe ()) { ... }
+
+ This variant uses a basic_safe_iterator so that objfiles can be
+ deleted during iteration. */
+ objfiles_safe_range objfiles_safe ()
+ {
+ return objfiles_safe_range (objfiles_head);
+ }
+
/* Pointer to next in linked list. */
struct program_space *next = NULL;