X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fsymfile-debug.c;h=f233b963062f7db8a62112684444ec4b8099fe96;hb=07b76c2f0baf197ce44d66a153184d33047e7ba0;hp=e0a5011c0d21e4189e42cccac59e79730d704e61;hpb=3f03e7b140f984868442092abe909ebb7f251f1d;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c index e0a5011c0d..f233b96306 100644 --- a/gdb/symfile-debug.c +++ b/gdb/symfile-debug.c @@ -1,6 +1,6 @@ /* Debug logging for the symbol file functions for the GNU debugger, GDB. - Copyright (C) 2013-2014 Free Software Foundation, Inc. + Copyright (C) 2013-2020 Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. @@ -28,7 +28,7 @@ #include "defs.h" #include "gdbcmd.h" #include "objfiles.h" -#include "observer.h" +#include "observable.h" #include "source.h" #include "symtab.h" #include "symfile.h" @@ -39,16 +39,17 @@ 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 + symfile_debug_objfile_data_key; -/* If non-zero all calls to the symfile functions are logged. */ -static int debug_symfile = 0; +/* If true all calls to the symfile functions are logged. */ +static bool debug_symfile = false; /* Return non-zero if symfile debug logging is installed. */ @@ -56,15 +57,7 @@ static int symfile_debug_installed (struct objfile *objfile) { return (objfile->sf != NULL - && objfile_data (objfile, symfile_debug_objfile_data_key) != NULL); -} - -/* Utility to return the name to print for OBJFILE. */ - -static const char * -debug_objfile_name (const struct objfile *objfile) -{ - return lbasename (objfile->original_name); + && symfile_debug_objfile_data_key.get (objfile) != NULL); } /* Utility return the name to print for SYMTAB. */ @@ -80,14 +73,14 @@ debug_symtab_name (struct symtab *symtab) static int debug_qf_has_symbols (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); int retval; retval = debug_data->real_sf->qf->has_symbols (objfile); fprintf_filtered (gdb_stdlog, "qf->has_symbols (%s) = %d\n", - debug_objfile_name (objfile), retval); + objfile_debug_name (objfile), retval); return retval; } @@ -95,12 +88,12 @@ debug_qf_has_symbols (struct objfile *objfile) static struct symtab * debug_qf_find_last_source_symtab (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); struct symtab *retval; fprintf_filtered (gdb_stdlog, "qf->find_last_source_symtab (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); retval = debug_data->real_sf->qf->find_last_source_symtab (objfile); @@ -113,36 +106,31 @@ debug_qf_find_last_source_symtab (struct objfile *objfile) static void debug_qf_forget_cached_source_info (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->forget_cached_source_info (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->qf->forget_cached_source_info (objfile); } -static int -debug_qf_map_symtabs_matching_filename (struct objfile *objfile, - const char *name, - const char *real_path, - int (*callback) (struct symtab *, - void *), - void *data) -{ - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - int retval; +static bool +debug_qf_map_symtabs_matching_filename + (struct objfile *objfile, const char *name, const char *real_path, + gdb::function_view callback) +{ + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, - "qf->map_symtabs_matching_filename (%s, \"%s\", \"%s\", %s, %s)\n", - debug_objfile_name (objfile), name, + "qf->map_symtabs_matching_filename (%s, \"%s\", \"%s\", %s)\n", + objfile_debug_name (objfile), name, real_path ? real_path : NULL, - host_address_to_string (callback), - host_address_to_string (data)); + host_address_to_string (&callback)); - retval = debug_data->real_sf->qf->map_symtabs_matching_filename - (objfile, name, real_path, callback, data); + bool retval = (debug_data->real_sf->qf->map_symtabs_matching_filename + (objfile, name, real_path, callback)); fprintf_filtered (gdb_stdlog, "qf->map_symtabs_matching_filename (...) = %d\n", @@ -151,24 +139,26 @@ debug_qf_map_symtabs_matching_filename (struct objfile *objfile, return retval; } -static struct symtab * -debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name, - domain_enum domain) +static struct compunit_symtab * +debug_qf_lookup_symbol (struct objfile *objfile, block_enum kind, + const char *name, domain_enum domain) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - struct symtab *retval; + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); + struct compunit_symtab *retval; fprintf_filtered (gdb_stdlog, "qf->lookup_symbol (%s, %d, \"%s\", %s)\n", - debug_objfile_name (objfile), kind, name, + objfile_debug_name (objfile), kind, name, domain_name (domain)); retval = debug_data->real_sf->qf->lookup_symbol (objfile, kind, name, domain); fprintf_filtered (gdb_stdlog, "qf->lookup_symbol (...) = %s\n", - retval ? debug_symtab_name (retval) : "NULL"); + retval + ? debug_symtab_name (compunit_primary_filetab (retval)) + : "NULL"); return retval; } @@ -176,11 +166,11 @@ debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name, static void debug_qf_print_stats (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->print_stats (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->qf->print_stats (objfile); } @@ -188,41 +178,25 @@ debug_qf_print_stats (struct objfile *objfile) static void debug_qf_dump (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->dump (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->qf->dump (objfile); } -static void -debug_qf_relocate (struct objfile *objfile, - const struct section_offsets *new_offsets, - const struct section_offsets *delta) -{ - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - - fprintf_filtered (gdb_stdlog, "qf->relocate (%s, %s, %s)\n", - debug_objfile_name (objfile), - host_address_to_string (new_offsets), - host_address_to_string (delta)); - - debug_data->real_sf->qf->relocate (objfile, new_offsets, delta); -} - static void debug_qf_expand_symtabs_for_function (struct objfile *objfile, const char *func_name) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_for_function (%s, \"%s\")\n", - debug_objfile_name (objfile), func_name); + objfile_debug_name (objfile), func_name); debug_data->real_sf->qf->expand_symtabs_for_function (objfile, func_name); } @@ -230,11 +204,11 @@ debug_qf_expand_symtabs_for_function (struct objfile *objfile, static void debug_qf_expand_all_symtabs (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_all_symtabs (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->qf->expand_all_symtabs (objfile); } @@ -243,94 +217,96 @@ static void debug_qf_expand_symtabs_with_fullname (struct objfile *objfile, const char *fullname) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_with_fullname (%s, \"%s\")\n", - debug_objfile_name (objfile), fullname); + objfile_debug_name (objfile), fullname); debug_data->real_sf->qf->expand_symtabs_with_fullname (objfile, fullname); } static void -debug_qf_map_matching_symbols (struct objfile *objfile, - const char *name, domain_enum namespace, - int global, - int (*callback) (struct block *, - struct symbol *, void *), - void *data, - symbol_compare_ftype *match, - symbol_compare_ftype *ordered_compare) -{ - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); +debug_qf_map_matching_symbols + (struct objfile *objfile, + const lookup_name_info &name, domain_enum domain, + int global, + gdb::function_view callback, + symbol_compare_ftype *ordered_compare) +{ + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, - "qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s, %s, %s)\n", - debug_objfile_name (objfile), name, - domain_name (namespace), global, - host_address_to_string (callback), - host_address_to_string (data), - host_address_to_string (match), + "qf->map_matching_symbols (%s, %s, %d, %s)\n", + objfile_debug_name (objfile), + domain_name (domain), global, host_address_to_string (ordered_compare)); debug_data->real_sf->qf->map_matching_symbols (objfile, name, - namespace, global, - callback, data, - match, + domain, global, + callback, ordered_compare); } static void -debug_qf_expand_symtabs_matching (struct objfile *objfile, - expand_symtabs_file_matcher_ftype *file_matcher, - expand_symtabs_symbol_matcher_ftype *symbol_matcher, - enum search_domain kind, - void *data) +debug_qf_expand_symtabs_matching + (struct objfile *objfile, + gdb::function_view file_matcher, + const lookup_name_info &lookup_name, + gdb::function_view symbol_matcher, + gdb::function_view expansion_notify, + enum search_domain kind) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_matching (%s, %s, %s, %s, %s)\n", - debug_objfile_name (objfile), - host_address_to_string (file_matcher), - host_address_to_string (symbol_matcher), - search_domain_name (kind), - host_address_to_string (data)); + objfile_debug_name (objfile), + host_address_to_string (&file_matcher), + host_address_to_string (&symbol_matcher), + host_address_to_string (&expansion_notify), + search_domain_name (kind)); debug_data->real_sf->qf->expand_symtabs_matching (objfile, file_matcher, + lookup_name, symbol_matcher, - kind, data); + expansion_notify, + kind); } -static struct symtab * -debug_qf_find_pc_sect_symtab (struct objfile *objfile, - struct minimal_symbol *msymbol, - CORE_ADDR pc, - struct obj_section *section, - int warn_if_readin) -{ - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - struct symtab *retval; +static struct compunit_symtab * +debug_qf_find_pc_sect_compunit_symtab (struct objfile *objfile, + struct bound_minimal_symbol msymbol, + CORE_ADDR pc, + struct obj_section *section, + int warn_if_readin) +{ + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); + struct compunit_symtab *retval; fprintf_filtered (gdb_stdlog, - "qf->find_pc_sect_symtab (%s, %s, %s, %s, %d)\n", - debug_objfile_name (objfile), - host_address_to_string (msymbol), + "qf->find_pc_sect_compunit_symtab (%s, %s, %s, %s, %d)\n", + objfile_debug_name (objfile), + host_address_to_string (msymbol.minsym), hex_string (pc), host_address_to_string (section), warn_if_readin); - retval = debug_data->real_sf->qf->find_pc_sect_symtab (objfile, msymbol, - pc, section, - warn_if_readin); + retval + = debug_data->real_sf->qf->find_pc_sect_compunit_symtab (objfile, msymbol, + pc, section, + warn_if_readin); - fprintf_filtered (gdb_stdlog, "qf->find_pc_sect_symtab (...) = %s\n", - retval ? debug_symtab_name (retval) : "NULL"); + fprintf_filtered (gdb_stdlog, + "qf->find_pc_sect_compunit_symtab (...) = %s\n", + retval + ? debug_symtab_name (compunit_primary_filetab (retval)) + : "NULL"); return retval; } @@ -340,11 +316,11 @@ debug_qf_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun, void *data, int need_fullname) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->map_symbol_filenames (%s, %s, %s, %d)\n", - debug_objfile_name (objfile), + objfile_debug_name (objfile), host_address_to_string (fun), host_address_to_string (data), need_fullname); @@ -353,6 +329,32 @@ debug_qf_map_symbol_filenames (struct objfile *objfile, need_fullname); } +static struct compunit_symtab * +debug_qf_find_compunit_symtab_by_address (struct objfile *objfile, + CORE_ADDR address) +{ + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); + fprintf_filtered (gdb_stdlog, + "qf->find_compunit_symtab_by_address (%s, %s)\n", + objfile_debug_name (objfile), + hex_string (address)); + + struct compunit_symtab *result = NULL; + if (debug_data->real_sf->qf->map_symbol_filenames != NULL) + result + = debug_data->real_sf->qf->find_compunit_symtab_by_address (objfile, + address); + + fprintf_filtered (gdb_stdlog, + "qf->find_compunit_symtab_by_address (...) = %s\n", + result + ? debug_symtab_name (compunit_primary_filetab (result)) + : "NULL"); + + return result; +} + static const struct quick_symbol_functions debug_sym_quick_functions = { debug_qf_has_symbols, @@ -362,57 +364,38 @@ static const struct quick_symbol_functions debug_sym_quick_functions = debug_qf_lookup_symbol, debug_qf_print_stats, debug_qf_dump, - debug_qf_relocate, 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_symtab, + debug_qf_find_pc_sect_compunit_symtab, + debug_qf_find_compunit_symtab_by_address, debug_qf_map_symbol_filenames }; /* Debugging version of struct sym_probe_fns. */ -static VEC (probe_p) * +static const std::vector> & debug_sym_get_probes (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - VEC (probe_p) *retval; + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); - retval = debug_data->real_sf->sym_probe_fns->sym_get_probes (objfile); + const std::vector> &retval + = debug_data->real_sf->sym_probe_fns->sym_get_probes (objfile); fprintf_filtered (gdb_stdlog, "probes->sym_get_probes (%s) = %s\n", - debug_objfile_name (objfile), - host_address_to_string (retval)); + objfile_debug_name (objfile), + host_address_to_string (retval.data ())); return retval; } -static void -debug_sym_relocate_probe (struct objfile *objfile, - const struct section_offsets *new_offsets, - const struct section_offsets *delta) -{ - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); - - fprintf_filtered (gdb_stdlog, - "probes->sym_relocate_probe (%s, %s, %s)\n", - debug_objfile_name (objfile), - host_address_to_string (new_offsets), - host_address_to_string (delta)); - - debug_data->real_sf->sym_probe_fns->sym_relocate_probe - (objfile, new_offsets, delta); -} - static const struct sym_probe_fns debug_sym_probe_fns = { debug_sym_get_probes, - debug_sym_relocate_probe }; /* Debugging version of struct sym_fns. */ @@ -420,11 +403,11 @@ static const struct sym_probe_fns debug_sym_probe_fns = static void debug_sym_new_init (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_new_init (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->sym_new_init (objfile); } @@ -432,23 +415,23 @@ debug_sym_new_init (struct objfile *objfile) static void debug_sym_init (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_init (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->sym_init (objfile); } static void -debug_sym_read (struct objfile *objfile, int symfile_flags) +debug_sym_read (struct objfile *objfile, symfile_add_flags symfile_flags) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read (%s, 0x%x)\n", - debug_objfile_name (objfile), symfile_flags); + objfile_debug_name (objfile), (unsigned) symfile_flags); debug_data->real_sf->sym_read (objfile, symfile_flags); } @@ -456,11 +439,11 @@ debug_sym_read (struct objfile *objfile, int symfile_flags) static void debug_sym_read_psymbols (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read_psymbols (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->sym_read_psymbols (objfile); } @@ -468,25 +451,25 @@ debug_sym_read_psymbols (struct objfile *objfile) static void debug_sym_finish (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_finish (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->sym_finish (objfile); } static void debug_sym_offsets (struct objfile *objfile, - const struct section_addr_info *info) + const section_addr_info &info) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_offsets (%s, %s)\n", - debug_objfile_name (objfile), - host_address_to_string (info)); + objfile_debug_name (objfile), + host_address_to_string (&info)); debug_data->real_sf->sym_offsets (objfile, info); } @@ -503,11 +486,11 @@ debug_sym_segments (bfd *abfd) static void debug_sym_read_linetable (struct objfile *objfile) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read_linetable (%s)\n", - debug_objfile_name (objfile)); + objfile_debug_name (objfile)); debug_data->real_sf->sym_read_linetable (objfile); } @@ -515,15 +498,15 @@ debug_sym_read_linetable (struct objfile *objfile) static bfd_byte * debug_sym_relocate (struct objfile *objfile, asection *sectp, bfd_byte *buf) { - const struct debug_sym_fns_data *debug_data = - objfile_data (objfile, symfile_debug_objfile_data_key); + const struct debug_sym_fns_data *debug_data + = symfile_debug_objfile_data_key.get (objfile); bfd_byte *retval; retval = debug_data->real_sf->sym_relocate (objfile, sectp, buf); fprintf_filtered (gdb_stdlog, "sf->sym_relocate (%s, %s, %s) = %s\n", - debug_objfile_name (objfile), + objfile_debug_name (objfile), host_address_to_string (sectp), host_address_to_string (buf), host_address_to_string (retval)); @@ -551,14 +534,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. */ @@ -574,7 +549,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 { \ @@ -600,7 +575,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; } @@ -615,11 +590,10 @@ uninstall_symfile_debug_logging (struct objfile *objfile) /* The debug versions should be currently installed. */ gdb_assert (symfile_debug_installed (objfile)); - debug_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. @@ -644,25 +618,24 @@ objfile_set_sym_fns (struct objfile *objfile, const struct sym_fns *sf) } static void -set_debug_symfile (char *args, int from_tty, struct cmd_list_element *c) +set_debug_symfile (const char *args, int from_tty, struct cmd_list_element *c) { struct program_space *pspace; - struct objfile *objfile; ALL_PSPACES (pspace) - ALL_PSPACE_OBJFILES (pspace, objfile) - { - if (debug_symfile) - { - if (!symfile_debug_installed (objfile)) - install_symfile_debug_logging (objfile); - } - else - { - if (symfile_debug_installed (objfile)) - uninstall_symfile_debug_logging (objfile); - } - } + for (objfile *objfile : pspace->objfiles ()) + { + if (debug_symfile) + { + if (!symfile_debug_installed (objfile)) + install_symfile_debug_logging (objfile); + } + else + { + if (symfile_debug_installed (objfile)) + uninstall_symfile_debug_logging (objfile); + } + } } static void @@ -672,14 +645,9 @@ show_debug_symfile (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Symfile debugging is %s.\n"), value); } -initialize_file_ftype _initialize_symfile_debug; - 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."), _("\