summaryrefslogtreecommitdiff
path: root/gdb/progspace.h
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 /gdb/progspace.h
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.
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r--gdb/progspace.h18
1 files changed, 18 insertions, 0 deletions
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;