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.c | |
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.c')
-rw-r--r-- | gdb/progspace.c | 52 |
1 files changed, 14 insertions, 38 deletions
diff --git a/gdb/progspace.c b/gdb/progspace.c index a39b34c..d1bf0c6 100644 --- a/gdb/progspace.c +++ b/gdb/progspace.c @@ -25,6 +25,7 @@ #include "solib.h" #include "gdbthread.h" #include "inferior.h" +#include <algorithm> /* The last program space number assigned. */ int last_program_space_num = 0; @@ -158,21 +159,15 @@ program_space::~program_space () void program_space::add_objfile (struct objfile *objfile, struct objfile *before) { - for (struct objfile **objp = &objfiles_head; - *objp != NULL; - objp = &((*objp)->next)) + if (before == nullptr) + objfiles_list.push_back (objfile); + else { - if (*objp == before) - { - objfile->next = *objp; - *objp = objfile; - return; - } + auto iter = std::find (objfiles_list.begin (), objfiles_list.end (), + before); + gdb_assert (iter != objfiles_list.end ()); + objfiles_list.insert (iter, objfile); } - - internal_error (__FILE__, __LINE__, - _("put_objfile_before: before objfile not in list")); - } /* See progspace.h. */ @@ -180,32 +175,13 @@ program_space::add_objfile (struct objfile *objfile, struct objfile *before) void program_space::remove_objfile (struct objfile *objfile) { - struct objfile **objpp; - - for (objpp = &object_files; *objpp != NULL; objpp = &((*objpp)->next)) - { - if (*objpp == objfile) - { - *objpp = (*objpp)->next; - objfile->next = NULL; - - if (objfile == symfile_object_file) - symfile_object_file = NULL; + auto iter = std::find (objfiles_list.begin (), objfiles_list.end (), + objfile); + gdb_assert (iter != objfiles_list.end ()); + objfiles_list.erase (iter); - return; - } - } - - internal_error (__FILE__, __LINE__, - _("remove_objfile: objfile already unlinked")); -} - -/* See progspace.h. */ - -bool -program_space::multi_objfile_p () const -{ - return objfiles_head != nullptr && objfiles_head->next != nullptr; + if (objfile == symfile_object_file) + symfile_object_file = NULL; } /* Copies program space SRC to DEST. Copies the main executable file, |