diff options
author | Tom Tromey <tom@tromey.com> | 2019-03-10 06:56:33 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-12-12 15:50:55 -0700 |
commit | d0801dd8f22a3e739c6a7d126d45829df981794d (patch) | |
tree | be0659729b37d9464c10d7991b1d250b4a785465 /gdb/progspace.h | |
parent | 13bff72615e5a93a6e5f28e83a594125e66ccced (diff) | |
download | gdb-d0801dd8f22a3e739c6a7d126d45829df981794d.zip gdb-d0801dd8f22a3e739c6a7d126d45829df981794d.tar.gz 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.h | 27 |
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 (¤t_program_space->target_sections) |