Fix indentation in print_thread_info_1
[deliverable/binutils-gdb.git] / gdb / symfile-debug.c
index 53c75619e4e5498b7ebc732384c60b4718c9754b..f233b963062f7db8a62112684444ec4b8099fe96 100644 (file)
@@ -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"
 
 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;
+/* 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,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.  */
@@ -72,8 +73,8 @@ 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);
@@ -87,8 +88,8 @@ 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",
@@ -105,8 +106,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -114,27 +115,22 @@ debug_qf_forget_cached_source_info (struct objfile *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<bool (symtab *)> 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",
+                   "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",
@@ -144,11 +140,11 @@ debug_qf_map_symtabs_matching_filename (struct objfile *objfile,
 }
 
 static struct compunit_symtab *
-debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name,
-                       domain_enum domain)
+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);
+  const struct debug_sym_fns_data *debug_data
+    = symfile_debug_objfile_data_key.get (objfile);
   struct compunit_symtab *retval;
 
   fprintf_filtered (gdb_stdlog,
@@ -170,8 +166,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -182,8 +178,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -191,28 +187,12 @@ debug_qf_dump (struct objfile *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",
-                   objfile_debug_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",
@@ -224,8 +204,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -237,8 +217,8 @@ 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",
@@ -248,56 +228,54 @@ debug_qf_expand_symtabs_with_fullname (struct objfile *objfile,
 }
 
 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<symbol_found_callback_ftype> 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",
-                   objfile_debug_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)
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   const lookup_name_info &lookup_name,
+   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> 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",
                    objfile_debug_name (objfile),
-                   host_address_to_string (file_matcher),
-                   host_address_to_string (symbol_matcher),
-                   search_domain_name (kind),
-                   host_address_to_string (data));
+                   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 compunit_symtab *
@@ -307,8 +285,8 @@ debug_qf_find_pc_sect_compunit_symtab (struct objfile *objfile,
                                       struct obj_section *section,
                                       int warn_if_readin)
 {
-  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 compunit_symtab *retval;
 
   fprintf_filtered (gdb_stdlog,
@@ -338,8 +316,8 @@ 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",
                    objfile_debug_name (objfile),
@@ -351,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,
@@ -360,31 +364,31 @@ 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_compunit_symtab,
+  debug_qf_find_compunit_symtab_by_address,
   debug_qf_map_symbol_filenames
 };
 \f
 /* Debugging version of struct sym_probe_fns.  */
 
-static VEC (probe_p) *
+static const std::vector<std::unique_ptr<probe>> &
 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<std::unique_ptr<probe>> &retval
+    = debug_data->real_sf->sym_probe_fns->sym_get_probes (objfile);
 
   fprintf_filtered (gdb_stdlog,
                    "probes->sym_get_probes (%s) = %s\n",
                    objfile_debug_name (objfile),
-                   host_address_to_string (retval));
+                   host_address_to_string (retval.data ()));
 
   return retval;
 }
@@ -399,8 +403,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -411,8 +415,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -421,13 +425,13 @@ debug_sym_init (struct objfile *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",
-                   objfile_debug_name (objfile), symfile_flags);
+                   objfile_debug_name (objfile), (unsigned) symfile_flags);
 
   debug_data->real_sf->sym_read (objfile, symfile_flags);
 }
@@ -435,8 +439,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -447,8 +451,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -458,14 +462,14 @@ debug_sym_finish (struct objfile *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",
                    objfile_debug_name (objfile),
-                   host_address_to_string (info));
+                   host_address_to_string (&info));
 
   debug_data->real_sf->sym_offsets (objfile, info);
 }
@@ -482,8 +486,8 @@ 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",
                    objfile_debug_name (objfile));
@@ -494,8 +498,8 @@ 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);
@@ -530,14 +534,6 @@ static const struct sym_fns debug_sym_fns =
   &debug_sym_quick_functions
 };
 \f
-/* 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.  */
 
@@ -553,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 {                                         \
@@ -579,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;
 }
 
@@ -594,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.
@@ -623,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
@@ -651,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."), _("\
This page took 0.033692 seconds and 4 git commands to generate.