Convert symfile-debug.c to type-safe registry API
This changes symfile-debug.c to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * symfile-debug.c (struct debug_sym_fns_data): Add initializers. (symfile_debug_objfile_data_key): Change type. (symfile_debug_installed, debug_qf_has_symbols) (debug_qf_find_last_source_symtab) (debug_qf_forget_cached_source_info) (debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol) (debug_qf_print_stats, debug_qf_dump) (debug_qf_expand_symtabs_for_function) (debug_qf_expand_all_symtabs) (debug_qf_expand_symtabs_with_fullname) (debug_qf_map_matching_symbols) (debug_qf_expand_symtabs_matching) (debug_qf_find_pc_sect_compunit_symtab) (debug_qf_map_symbol_filenames) (debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes) (debug_sym_new_init, debug_sym_init, debug_sym_read) (debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets) (debug_sym_read_linetable, debug_sym_relocate): Update. (symfile_debug_free_objfile): Remove. (install_symfile_debug_logging, _initialize_symfile_debug): Update.
This commit is contained in:
parent
5bfd760d66
commit
8c42777cd8
@ -1,3 +1,27 @@
|
||||
2019-05-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symfile-debug.c (struct debug_sym_fns_data): Add initializers.
|
||||
(symfile_debug_objfile_data_key): Change type.
|
||||
(symfile_debug_installed, debug_qf_has_symbols)
|
||||
(debug_qf_find_last_source_symtab)
|
||||
(debug_qf_forget_cached_source_info)
|
||||
(debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol)
|
||||
(debug_qf_print_stats, debug_qf_dump)
|
||||
(debug_qf_expand_symtabs_for_function)
|
||||
(debug_qf_expand_all_symtabs)
|
||||
(debug_qf_expand_symtabs_with_fullname)
|
||||
(debug_qf_map_matching_symbols)
|
||||
(debug_qf_expand_symtabs_matching)
|
||||
(debug_qf_find_pc_sect_compunit_symtab)
|
||||
(debug_qf_map_symbol_filenames)
|
||||
(debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes)
|
||||
(debug_sym_new_init, debug_sym_init, debug_sym_read)
|
||||
(debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets)
|
||||
(debug_sym_read_linetable, debug_sym_relocate): Update.
|
||||
(symfile_debug_free_objfile): Remove.
|
||||
(install_symfile_debug_logging, _initialize_symfile_debug):
|
||||
Update.
|
||||
|
||||
2019-05-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2read.h (struct dwarf2_per_objfile): Don't inherit from
|
||||
|
@ -39,13 +39,14 @@
|
||||
|
||||
struct debug_sym_fns_data
|
||||
{
|
||||
const struct sym_fns *real_sf;
|
||||
struct sym_fns debug_sf;
|
||||
const struct sym_fns *real_sf = nullptr;
|
||||
struct sym_fns debug_sf {};
|
||||
};
|
||||
|
||||
/* We need to record a pointer to the real set of functions for each
|
||||
objfile. */
|
||||
static const struct objfile_data *symfile_debug_objfile_data_key;
|
||||
static const struct objfile_key<debug_sym_fns_data>
|
||||
symfile_debug_objfile_data_key;
|
||||
|
||||
/* If non-zero all calls to the symfile functions are logged. */
|
||||
static int debug_symfile = 0;
|
||||
@ -56,7 +57,7 @@ static int
|
||||
symfile_debug_installed (struct objfile *objfile)
|
||||
{
|
||||
return (objfile->sf != NULL
|
||||
&& objfile_data (objfile, symfile_debug_objfile_data_key) != NULL);
|
||||
&& symfile_debug_objfile_data_key.get (objfile) != NULL);
|
||||
}
|
||||
|
||||
/* Utility return the name to print for SYMTAB. */
|
||||
@ -73,8 +74,7 @@ static int
|
||||
debug_qf_has_symbols (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
int retval;
|
||||
|
||||
retval = debug_data->real_sf->qf->has_symbols (objfile);
|
||||
@ -89,8 +89,7 @@ static struct symtab *
|
||||
debug_qf_find_last_source_symtab (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
struct symtab *retval;
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "qf->find_last_source_symtab (%s)\n",
|
||||
@ -108,8 +107,7 @@ static void
|
||||
debug_qf_forget_cached_source_info (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "qf->forget_cached_source_info (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -123,8 +121,7 @@ debug_qf_map_symtabs_matching_filename
|
||||
gdb::function_view<bool (symtab *)> callback)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->map_symtabs_matching_filename (%s, \"%s\", \"%s\", %s)\n",
|
||||
@ -147,8 +144,7 @@ debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name,
|
||||
domain_enum domain)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
struct compunit_symtab *retval;
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
@ -171,8 +167,7 @@ static void
|
||||
debug_qf_print_stats (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "qf->print_stats (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -184,8 +179,7 @@ static void
|
||||
debug_qf_dump (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "qf->dump (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -198,8 +192,7 @@ debug_qf_expand_symtabs_for_function (struct objfile *objfile,
|
||||
const char *func_name)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->expand_symtabs_for_function (%s, \"%s\")\n",
|
||||
@ -212,8 +205,7 @@ static void
|
||||
debug_qf_expand_all_symtabs (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "qf->expand_all_symtabs (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -226,8 +218,7 @@ debug_qf_expand_symtabs_with_fullname (struct objfile *objfile,
|
||||
const char *fullname)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->expand_symtabs_with_fullname (%s, \"%s\")\n",
|
||||
@ -247,8 +238,7 @@ debug_qf_map_matching_symbols (struct objfile *objfile,
|
||||
symbol_compare_ftype *ordered_compare)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s, %s, %s)\n",
|
||||
@ -276,8 +266,7 @@ debug_qf_expand_symtabs_matching
|
||||
enum search_domain kind)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->expand_symtabs_matching (%s, %s, %s, %s, %s)\n",
|
||||
@ -303,8 +292,7 @@ debug_qf_find_pc_sect_compunit_symtab (struct objfile *objfile,
|
||||
int warn_if_readin)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
struct compunit_symtab *retval;
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
@ -335,8 +323,7 @@ debug_qf_map_symbol_filenames (struct objfile *objfile,
|
||||
int need_fullname)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->map_symbol_filenames (%s, %s, %s, %d)\n",
|
||||
objfile_debug_name (objfile),
|
||||
@ -353,8 +340,7 @@ debug_qf_find_compunit_symtab_by_address (struct objfile *objfile,
|
||||
CORE_ADDR address)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
"qf->find_compunit_symtab_by_address (%s, %s)\n",
|
||||
objfile_debug_name (objfile),
|
||||
@ -400,8 +386,7 @@ static const std::vector<probe *> &
|
||||
debug_sym_get_probes (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
const std::vector<probe *> &retval
|
||||
= debug_data->real_sf->sym_probe_fns->sym_get_probes (objfile);
|
||||
@ -425,8 +410,7 @@ static void
|
||||
debug_sym_new_init (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_new_init (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -438,8 +422,7 @@ static void
|
||||
debug_sym_init (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_init (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -451,8 +434,7 @@ static void
|
||||
debug_sym_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_read (%s, 0x%x)\n",
|
||||
objfile_debug_name (objfile), (unsigned) symfile_flags);
|
||||
@ -464,8 +446,7 @@ static void
|
||||
debug_sym_read_psymbols (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_read_psymbols (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -477,8 +458,7 @@ static void
|
||||
debug_sym_finish (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_finish (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -491,8 +471,7 @@ debug_sym_offsets (struct objfile *objfile,
|
||||
const section_addr_info &info)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_offsets (%s, %s)\n",
|
||||
objfile_debug_name (objfile),
|
||||
@ -514,8 +493,7 @@ static void
|
||||
debug_sym_read_linetable (struct objfile *objfile)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
fprintf_filtered (gdb_stdlog, "sf->sym_read_linetable (%s)\n",
|
||||
objfile_debug_name (objfile));
|
||||
@ -527,8 +505,7 @@ static bfd_byte *
|
||||
debug_sym_relocate (struct objfile *objfile, asection *sectp, bfd_byte *buf)
|
||||
{
|
||||
const struct debug_sym_fns_data *debug_data
|
||||
= ((const struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
= symfile_debug_objfile_data_key.get (objfile);
|
||||
bfd_byte *retval;
|
||||
|
||||
retval = debug_data->real_sf->sym_relocate (objfile, sectp, buf);
|
||||
@ -563,14 +540,6 @@ static const struct sym_fns debug_sym_fns =
|
||||
&debug_sym_quick_functions
|
||||
};
|
||||
|
||||
/* Free the copy of sym_fns recorded in the registry. */
|
||||
|
||||
static void
|
||||
symfile_debug_free_objfile (struct objfile *objfile, void *datum)
|
||||
{
|
||||
xfree (datum);
|
||||
}
|
||||
|
||||
/* Install the debugging versions of the symfile functions for OBJFILE.
|
||||
Do not call this if the debug versions are already installed. */
|
||||
|
||||
@ -586,7 +555,7 @@ install_symfile_debug_logging (struct objfile *objfile)
|
||||
real_sf = objfile->sf;
|
||||
|
||||
/* Alas we have to preserve NULL entries in REAL_SF. */
|
||||
debug_data = XCNEW (struct debug_sym_fns_data);
|
||||
debug_data = new struct debug_sym_fns_data;
|
||||
|
||||
#define COPY_SF_PTR(from, to, name, func) \
|
||||
do { \
|
||||
@ -612,7 +581,7 @@ install_symfile_debug_logging (struct objfile *objfile)
|
||||
#undef COPY_SF_PTR
|
||||
|
||||
debug_data->real_sf = real_sf;
|
||||
set_objfile_data (objfile, symfile_debug_objfile_data_key, debug_data);
|
||||
symfile_debug_objfile_data_key.set (objfile, debug_data);
|
||||
objfile->sf = &debug_data->debug_sf;
|
||||
}
|
||||
|
||||
@ -627,12 +596,10 @@ uninstall_symfile_debug_logging (struct objfile *objfile)
|
||||
/* The debug versions should be currently installed. */
|
||||
gdb_assert (symfile_debug_installed (objfile));
|
||||
|
||||
debug_data = ((struct debug_sym_fns_data *)
|
||||
objfile_data (objfile, symfile_debug_objfile_data_key));
|
||||
debug_data = symfile_debug_objfile_data_key.get (objfile);
|
||||
|
||||
objfile->sf = debug_data->real_sf;
|
||||
xfree (debug_data);
|
||||
set_objfile_data (objfile, symfile_debug_objfile_data_key, NULL);
|
||||
symfile_debug_objfile_data_key.clear (objfile);
|
||||
}
|
||||
|
||||
/* Call this function to set OBJFILE->SF.
|
||||
@ -687,9 +654,6 @@ show_debug_symfile (struct ui_file *file, int from_tty,
|
||||
void
|
||||
_initialize_symfile_debug (void)
|
||||
{
|
||||
symfile_debug_objfile_data_key
|
||||
= register_objfile_data_with_cleanup (NULL, symfile_debug_free_objfile);
|
||||
|
||||
add_setshow_boolean_cmd ("symfile", no_class, &debug_symfile, _("\
|
||||
Set debugging of the symfile functions."), _("\
|
||||
Show debugging of the symfile functions."), _("\
|
||||
|
Loading…
x
Reference in New Issue
Block a user