Make the objfile destructor private
The idea behind this is that, in the long run, some code will need to be able to hold onto an objfile after it is unlinked from the program space. In particular, this is needed for some functionality to be moved to worker threads -- otherwise the objfile can be deleted while still in use. So, this makes ~objfile private, replacing it with an "unlink" method, making it more obvious which operation is intended at the calling points. gdb/ChangeLog 2019-12-12 Tom Tromey <tom@tromey.com> * symfile.c (syms_from_objfile_1): Use objfile_up. (syms_from_objfile_1, remove_symbol_file_command): Call unlink method. (reread_symbols): Use objfile_up. * solib.c (update_solib_list, reload_shared_libraries_1): Call unlink method. * objfiles.h (struct objfile) <~objfile>: Now private. <unlink>: New method. (struct objfile_deleter): New. (objfile_up): New typedef. * objfiles.c (objfile::unlink): New method. (free_objfile_separate_debug, free_all_objfiles) (objfile_purge_solibs): Use it. * jit.c (jit_unregister_code): Remove. (jit_inferior_exit_hook, jit_event_handler): Call unlink on objfile. * compile/compile-object-run.c (do_module_cleanup): Call unlink on objfile. * compile/compile-object-load.c (compile_object_load): Use objfile_up. Change-Id: I934bee70b26b8b24e1735828fb1e60fe8a05714f
This commit is contained in:
parent
f65fe5704a
commit
268e4f0914
8 changed files with 66 additions and 28 deletions
|
@ -86,7 +86,7 @@ do_module_cleanup (void *arg, int registers_valid)
|
|||
if ((objfile->flags & OBJF_USERLOADED) == 0
|
||||
&& (strcmp (objfile_name (objfile), data->objfile_name_string) == 0))
|
||||
{
|
||||
delete objfile;
|
||||
objfile->unlink ();
|
||||
|
||||
/* It may be a bit too pervasive in this dummy_frame dtor callback. */
|
||||
clear_symtab_users (0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue