aboutsummaryrefslogtreecommitdiff
path: root/gdb/jit.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-11-01 16:21:04 -0600
committerTom Tromey <tom@tromey.com>2019-12-12 15:50:52 -0700
commit268e4f09144c48e02f01d82ab3aab359457df214 (patch)
tree8685bc0ca92837f6f41a97059378b1b12d44cf96 /gdb/jit.c
parentf65fe5704af56aca58fd5547d0841a9512e540af (diff)
downloadbinutils-268e4f09144c48e02f01d82ab3aab359457df214.zip
binutils-268e4f09144c48e02f01d82ab3aab359457df214.tar.gz
binutils-268e4f09144c48e02f01d82ab3aab359457df214.tar.bz2
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
Diffstat (limited to 'gdb/jit.c')
-rw-r--r--gdb/jit.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/gdb/jit.c b/gdb/jit.c
index 2018e2c..59da4e0 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -951,18 +951,6 @@ jit_register_code (struct gdbarch *gdbarch,
jit_bfd_try_read_symtab (code_entry, entry_addr, gdbarch);
}
-/* This function unregisters JITed code and frees the corresponding
- objfile. */
-
-static void
-jit_unregister_code (struct objfile *objfile)
-{
- if (jit_debug)
- fprintf_unfiltered (gdb_stdlog, "jit_unregister_code (%s)\n",
- host_address_to_string (objfile));
- delete objfile;
-}
-
/* Look up the objfile with this code entry address. */
static struct objfile *
@@ -1380,7 +1368,7 @@ jit_inferior_exit_hook (struct inferior *inf)
= (struct jit_objfile_data *) objfile_data (objf, jit_objfile_data);
if (objf_data != NULL && objf_data->addr != 0)
- jit_unregister_code (objf);
+ objf->unlink ();
}
}
@@ -1414,7 +1402,7 @@ jit_event_handler (struct gdbarch *gdbarch)
"entry at address: %s\n"),
paddress (gdbarch, entry_addr));
else
- jit_unregister_code (objf);
+ objf->unlink ();
break;
default: