mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-31 18:20:12 +08:00
Introduce program_space::remove_objfile
This introduces a new method, program_space::remove_objfile, and changes the objfile destructor not to unlink an objfile from the program space's list. This is cleaner because, like the previous patch, it treats the program space more like a container for objfiles. Also, this makes it possible to keep an objfile alive even though it has been unlinked from the program space's list, which is important for processing in a worker thread. gdb/ChangeLog 2019-12-12 Tom Tromey <tom@tromey.com> * progspace.h (struct program_space) <remove_objfile>: Declare. * progspace.c (program_space::remove_objfile): New method. * objfiles.c (unlink_objfile): Remove. (objfile::unlink): Call remove_objfile. (objfile): Don't call unlink_objfile. Change-Id: I22f768827723dce21886fae9b3664532c8349e68
This commit is contained in:
@ -175,6 +175,31 @@ program_space::add_objfile (struct objfile *objfile, struct objfile *before)
|
||||
|
||||
}
|
||||
|
||||
/* See progspace.h. */
|
||||
|
||||
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;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
internal_error (__FILE__, __LINE__,
|
||||
_("remove_objfile: objfile already unlinked"));
|
||||
}
|
||||
|
||||
/* Copies program space SRC to DEST. Copies the main executable file,
|
||||
and the main symbol file. Returns DEST. */
|
||||
|
||||
|
Reference in New Issue
Block a user