#include "solib.h"
#include "gdbthread.h"
#include "inferior.h"
+#include <algorithm>
/* The last program space number assigned. */
int last_program_space_num = 0;
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. */
+
+void
+program_space::remove_objfile (struct objfile *objfile)
+{
+ auto iter = std::find (objfiles_list.begin (), objfiles_list.end (),
+ objfile);
+ gdb_assert (iter != objfiles_list.end ());
+ objfiles_list.erase (iter);
+ if (objfile == symfile_object_file)
+ symfile_object_file = NULL;
}
/* Copies program space SRC to DEST. Copies the main executable file,