aboutsummaryrefslogtreecommitdiff
path: root/gdb/progspace.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-03-10 06:56:33 -0600
committerTom Tromey <tom@tromey.com>2019-12-12 15:50:55 -0700
commitd0801dd8f22a3e739c6a7d126d45829df981794d (patch)
treebe0659729b37d9464c10d7991b1d250b4a785465 /gdb/progspace.h
parent13bff72615e5a93a6e5f28e83a594125e66ccced (diff)
downloadfsf-binutils-gdb-d0801dd8f22a3e739c6a7d126d45829df981794d.zip
fsf-binutils-gdb-d0801dd8f22a3e739c6a7d126d45829df981794d.tar.gz
fsf-binutils-gdb-d0801dd8f22a3e739c6a7d126d45829df981794d.tar.bz2
Store objfiles on a std::list
This removes objfile::next and changes objfiles to be stored in a std::list. gdb/ChangeLog 2019-12-12 Tom Tromey <tom@tromey.com> * progspace.c (program_space::add_objfile) (program_space::remove_objfile): Update. (program_space::multi_objfile_p): Remove. * objfiles.h (struct objfile) <next>: Remove. * objfiles.c (objfile::objfile): Update. (put_objfile_before): Update. (unlink_objfile): Update. * progspace.h (object_files): Remove. (struct program_space) <objfiles_head>: Remove. <objfiles_list>: New member. <objfiles_range, objfiles_safe_range>: Change type. (objfiles): Change return type. (objfiles_safe): Update. (multi_objfile_p): Rewrite and inline. (object_files): Remove macro. Change-Id: Ib4430e3db6f9a390399924379a5c10426c514853
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r--gdb/progspace.h27
1 files changed, 12 insertions, 15 deletions
diff --git a/gdb/progspace.h b/gdb/progspace.h
index 86bc22a..a731eb6 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -27,6 +27,7 @@
#include "registry.h"
#include "gdbsupport/next-iterator.h"
#include "gdbsupport/safe-iterator.h"
+#include <list>
struct target_ops;
struct bfd;
@@ -138,20 +139,18 @@ struct program_space
program_space (address_space *aspace_);
~program_space ();
- typedef next_adapter<struct objfile> objfiles_range;
+ typedef std::list<struct objfile *> objfiles_range;
/* Return 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 ()) { ... } */
- objfiles_range objfiles ()
+ objfiles_range &objfiles ()
{
- return objfiles_range (objfiles_head);
+ return objfiles_list;
}
- typedef next_adapter<struct objfile,
- basic_safe_iterator<next_iterator<objfile>>>
- objfiles_safe_range;
+ typedef basic_safe_range<objfiles_range> objfiles_safe_range;
/* An iterable object that can be used to iterate over all objfiles.
The basic use is in a foreach, like:
@@ -162,7 +161,7 @@ struct program_space
deleted during iteration. */
objfiles_safe_range objfiles_safe ()
{
- return objfiles_safe_range (objfiles_head);
+ return objfiles_safe_range (objfiles_list);
}
/* Add OBJFILE to the list of objfiles, putting it just before
@@ -175,7 +174,10 @@ struct program_space
/* Return true if there is more than one object file loaded; false
otherwise. */
- bool multi_objfile_p () const;
+ bool multi_objfile_p () const
+ {
+ return objfiles_list.size () > 1;
+ }
/* Pointer to next in linked list. */
@@ -228,9 +230,8 @@ struct program_space
(e.g. the argument to the "symbol-file" or "file" command). */
struct objfile *symfile_object_file = NULL;
- /* All known objfiles are kept in a linked list. This points to
- the head of this list. */
- struct objfile *objfiles_head = NULL;
+ /* All known objfiles are kept in a linked list. */
+ std::list<struct objfile *> objfiles_list;
/* The set of target sections matching the sections mapped into
this program space. Managed by both exec_ops and solib.c. */
@@ -271,10 +272,6 @@ struct address_space
#define symfile_objfile current_program_space->symfile_object_file
-/* All known objfiles are kept in a linked list. This points to the
- root of this list. */
-#define object_files current_program_space->objfiles_head
-
/* The set of target sections matching the sections mapped into the
current program space. */
#define current_target_sections (&current_program_space->target_sections)