gdb/tui: Link source and assembler scrolling .... again
[deliverable/binutils-gdb.git] / gdb / symmisc.c
index d30a35481ebd4f2e28d2f76af717cffafb2fac82..a5b17ffa3810e4c8a6b5440178515b651421e611 100644 (file)
@@ -1,6 +1,6 @@
 /* Do various things to symbol tables (other than lookup), for GDB.
 
-   Copyright (C) 1986-2018 Free Software Foundation, Inc.
+   Copyright (C) 1986-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -36,7 +36,7 @@
 #include "typeprint.h"
 #include "gdbcmd.h"
 #include "source.h"
-#include "readline/readline.h"
+#include "readline/tilde.h"
 
 #include "psymtab.h"
 
@@ -52,7 +52,7 @@ FILE *std_err;
 
 /* Prototypes for local functions */
 
-static int block_depth (struct block *);
+static int block_depth (const struct block *);
 
 static void print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
                          int depth, ui_file *outfile);
@@ -62,94 +62,89 @@ void
 print_symbol_bcache_statistics (void)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-  {
-    QUIT;
-    printf_filtered (_("Byte cache statistics for '%s':\n"),
-                    objfile_name (objfile));
-    print_bcache_statistics (psymbol_bcache_get_bcache (objfile->psymbol_cache),
-                             "partial symbol cache");
-    print_bcache_statistics (objfile->per_bfd->macro_cache,
-                            "preprocessor macro cache");
-    print_bcache_statistics (objfile->per_bfd->filename_cache,
-                            "file name cache");
-  }
+    for (objfile *objfile : pspace->objfiles ())
+      {
+       QUIT;
+       printf_filtered (_("Byte cache statistics for '%s':\n"),
+                        objfile_name (objfile));
+       objfile->partial_symtabs->psymbol_cache.print_statistics
+         ("partial symbol cache");
+       objfile->per_bfd->macro_cache.print_statistics
+         ("preprocessor macro cache");
+       objfile->per_bfd->filename_cache.print_statistics ("file name cache");
+      }
 }
 
 void
 print_objfile_statistics (void)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
-  struct compunit_symtab *cu;
-  struct symtab *s;
   int i, linetables, blockvectors;
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-  {
-    QUIT;
-    printf_filtered (_("Statistics for '%s':\n"), objfile_name (objfile));
-    if (OBJSTAT (objfile, n_stabs) > 0)
-      printf_filtered (_("  Number of \"stab\" symbols read: %d\n"),
-                      OBJSTAT (objfile, n_stabs));
-    if (objfile->per_bfd->n_minsyms > 0)
-      printf_filtered (_("  Number of \"minimal\" symbols read: %d\n"),
-                      objfile->per_bfd->n_minsyms);
-    if (OBJSTAT (objfile, n_psyms) > 0)
-      printf_filtered (_("  Number of \"partial\" symbols read: %d\n"),
-                      OBJSTAT (objfile, n_psyms));
-    if (OBJSTAT (objfile, n_syms) > 0)
-      printf_filtered (_("  Number of \"full\" symbols read: %d\n"),
-                      OBJSTAT (objfile, n_syms));
-    if (OBJSTAT (objfile, n_types) > 0)
-      printf_filtered (_("  Number of \"types\" defined: %d\n"),
-                      OBJSTAT (objfile, n_types));
-    if (objfile->sf)
-      objfile->sf->qf->print_stats (objfile);
-    i = linetables = blockvectors = 0;
-    ALL_OBJFILE_FILETABS (objfile, cu, s)
-      {
-        i++;
-        if (SYMTAB_LINETABLE (s) != NULL)
-          linetables++;
-      }
-    ALL_OBJFILE_COMPUNITS (objfile, cu)
-      blockvectors++;
-    printf_filtered (_("  Number of symbol tables: %d\n"), i);
-    printf_filtered (_("  Number of symbol tables with line tables: %d\n"),
-                     linetables);
-    printf_filtered (_("  Number of symbol tables with blockvectors: %d\n"),
-                     blockvectors);
-
-    if (OBJSTAT (objfile, sz_strtab) > 0)
-      printf_filtered (_("  Space used by string tables: %d\n"),
-                      OBJSTAT (objfile, sz_strtab));
-    printf_filtered (_("  Total memory used for objfile obstack: %s\n"),
-                    pulongest (obstack_memory_used (&objfile
-                                                    ->objfile_obstack)));
-    printf_filtered (_("  Total memory used for BFD obstack: %s\n"),
-                    pulongest (obstack_memory_used (&objfile->per_bfd
-                                                    ->storage_obstack)));
-    printf_filtered (_("  Total memory used for psymbol cache: %d\n"),
-                    bcache_memory_used (psymbol_bcache_get_bcache
-                                         (objfile->psymbol_cache)));
-    printf_filtered (_("  Total memory used for macro cache: %d\n"),
-                    bcache_memory_used (objfile->per_bfd->macro_cache));
-    printf_filtered (_("  Total memory used for file name cache: %d\n"),
-                    bcache_memory_used (objfile->per_bfd->filename_cache));
-  }
+  for (objfile *objfile : pspace->objfiles ())
+    {
+      QUIT;
+      printf_filtered (_("Statistics for '%s':\n"), objfile_name (objfile));
+      if (OBJSTAT (objfile, n_stabs) > 0)
+       printf_filtered (_("  Number of \"stab\" symbols read: %d\n"),
+                        OBJSTAT (objfile, n_stabs));
+      if (objfile->per_bfd->n_minsyms > 0)
+       printf_filtered (_("  Number of \"minimal\" symbols read: %d\n"),
+                        objfile->per_bfd->n_minsyms);
+      if (OBJSTAT (objfile, n_psyms) > 0)
+       printf_filtered (_("  Number of \"partial\" symbols read: %d\n"),
+                        OBJSTAT (objfile, n_psyms));
+      if (OBJSTAT (objfile, n_syms) > 0)
+       printf_filtered (_("  Number of \"full\" symbols read: %d\n"),
+                        OBJSTAT (objfile, n_syms));
+      if (OBJSTAT (objfile, n_types) > 0)
+       printf_filtered (_("  Number of \"types\" defined: %d\n"),
+                        OBJSTAT (objfile, n_types));
+      if (objfile->sf)
+       objfile->sf->qf->print_stats (objfile);
+      i = linetables = 0;
+      for (compunit_symtab *cu : objfile->compunits ())
+       {
+         for (symtab *s : compunit_filetabs (cu))
+           {
+             i++;
+             if (SYMTAB_LINETABLE (s) != NULL)
+               linetables++;
+           }
+       }
+      blockvectors = std::distance (objfile->compunits ().begin (),
+                                   objfile->compunits ().end ());
+      printf_filtered (_("  Number of symbol tables: %d\n"), i);
+      printf_filtered (_("  Number of symbol tables with line tables: %d\n"),
+                      linetables);
+      printf_filtered (_("  Number of symbol tables with blockvectors: %d\n"),
+                      blockvectors);
+
+      if (OBJSTAT (objfile, sz_strtab) > 0)
+       printf_filtered (_("  Space used by string tables: %d\n"),
+                        OBJSTAT (objfile, sz_strtab));
+      printf_filtered (_("  Total memory used for objfile obstack: %s\n"),
+                      pulongest (obstack_memory_used (&objfile
+                                                      ->objfile_obstack)));
+      printf_filtered (_("  Total memory used for BFD obstack: %s\n"),
+                      pulongest (obstack_memory_used (&objfile->per_bfd
+                                                      ->storage_obstack)));
+      printf_filtered
+       (_("  Total memory used for psymbol cache: %d\n"),
+        objfile->partial_symtabs->psymbol_cache.memory_used ());
+      printf_filtered (_("  Total memory used for macro cache: %d\n"),
+                      objfile->per_bfd->macro_cache.memory_used ());
+      printf_filtered (_("  Total memory used for file name cache: %d\n"),
+                      objfile->per_bfd->filename_cache.memory_used ());
+    }
 }
 
 static void
 dump_objfile (struct objfile *objfile)
 {
-  struct compunit_symtab *cust;
-  struct symtab *symtab;
-
   printf_filtered ("\nObject file %s:  ", objfile_name (objfile));
   printf_filtered ("Objfile at ");
   gdb_print_host_address (objfile, gdb_stdout);
@@ -164,16 +159,20 @@ dump_objfile (struct objfile *objfile)
   if (objfile->compunit_symtabs != NULL)
     {
       printf_filtered ("Symtabs:\n");
-      ALL_OBJFILE_FILETABS (objfile, cust, symtab)
+      for (compunit_symtab *cu : objfile->compunits ())
        {
-         printf_filtered ("%s at ", symtab_to_filename_for_display (symtab));
-         gdb_print_host_address (symtab, gdb_stdout);
-         printf_filtered (", ");
-         if (SYMTAB_OBJFILE (symtab) != objfile)
+         for (symtab *symtab : compunit_filetabs (cu))
            {
-             printf_filtered ("NOT ON CHAIN!  ");
+             printf_filtered ("%s at ",
+                              symtab_to_filename_for_display (symtab));
+             gdb_print_host_address (symtab, gdb_stdout);
+             printf_filtered (", ");
+             if (SYMTAB_OBJFILE (symtab) != objfile)
+               {
+                 printf_filtered ("NOT ON CHAIN!  ");
+               }
+             wrap_here ("  ");
            }
-         wrap_here ("  ");
        }
       printf_filtered ("\n\n");
     }
@@ -185,7 +184,6 @@ static void
 dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
 {
   struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct minimal_symbol *msymbol;
   int index;
   char ms_type;
 
@@ -196,7 +194,7 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
       return;
     }
   index = 0;
-  ALL_OBJFILE_MSYMBOLS (objfile, msymbol)
+  for (minimal_symbol *msymbol : objfile->msymbols ())
     {
       struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
 
@@ -238,23 +236,25 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
          break;
        }
       fprintf_filtered (outfile, "[%2d] %c ", index, ms_type);
-      fputs_filtered (paddress (gdbarch, MSYMBOL_VALUE_ADDRESS (objfile,
-                                                               msymbol)),
-                     outfile);
-      fprintf_filtered (outfile, " %s", MSYMBOL_LINKAGE_NAME (msymbol));
+
+      /* Use the relocated address as shown in the symbol here -- do
+        not try to respect copy relocations.  */
+      CORE_ADDR addr = (msymbol->value.address
+                       + objfile->section_offsets[msymbol->section]);
+      fputs_filtered (paddress (gdbarch, addr), outfile);
+      fprintf_filtered (outfile, " %s", msymbol->linkage_name ());
       if (section)
        {
          if (section->the_bfd_section != NULL)
            fprintf_filtered (outfile, " section %s",
-                             bfd_section_name (objfile->obfd,
-                                               section->the_bfd_section));
+                             bfd_section_name (section->the_bfd_section));
          else
            fprintf_filtered (outfile, " spurious section %ld",
                              (long) (section - objfile->sections));
        }
-      if (MSYMBOL_DEMANGLED_NAME (msymbol) != NULL)
+      if (msymbol->demangled_name () != NULL)
        {
-         fprintf_filtered (outfile, "  %s", MSYMBOL_DEMANGLED_NAME (msymbol));
+         fprintf_filtered (outfile, "  %s", msymbol->demangled_name ());
        }
       if (msymbol->filename)
        fprintf_filtered (outfile, "  %s", msymbol->filename);
@@ -275,12 +275,12 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
   struct objfile *objfile = SYMTAB_OBJFILE (symtab);
   struct gdbarch *gdbarch = get_objfile_arch (objfile);
   int i;
-  struct dict_iterator iter;
+  struct mdict_iterator miter;
   int len;
   struct linetable *l;
   const struct blockvector *bv;
   struct symbol *sym;
-  struct block *b;
+  const struct block *b;
   int depth;
 
   fprintf_filtered (outfile, "\nSymtab for file %s\n",
@@ -331,36 +331,35 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
             even if we're using a hashtable, but nothing else but this message
             wants it.  */
          fprintf_filtered (outfile, ", %d syms/buckets in ",
-                           dict_size (BLOCK_DICT (b)));
+                           mdict_size (BLOCK_MULTIDICT (b)));
          fputs_filtered (paddress (gdbarch, BLOCK_START (b)), outfile);
          fprintf_filtered (outfile, "..");
          fputs_filtered (paddress (gdbarch, BLOCK_END (b)), outfile);
          if (BLOCK_FUNCTION (b))
            {
              fprintf_filtered (outfile, ", function %s",
-                               SYMBOL_LINKAGE_NAME (BLOCK_FUNCTION (b)));
-             if (SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)) != NULL)
+                               BLOCK_FUNCTION (b)->linkage_name ());
+             if (BLOCK_FUNCTION (b)->demangled_name () != NULL)
                {
                  fprintf_filtered (outfile, ", %s",
-                               SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)));
+                               BLOCK_FUNCTION (b)->demangled_name ());
                }
            }
          fprintf_filtered (outfile, "\n");
          /* Now print each symbol in this block (in no particular order, if
             we're using a hashtable).  Note that we only want this
             block, not any blocks from included symtabs.  */
-         ALL_DICT_SYMBOLS (BLOCK_DICT (b), iter, sym)
+         ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (b), miter, sym)
            {
-             TRY
+             try
                {
                  print_symbol (gdbarch, sym, depth + 1, outfile);
                }
-             CATCH (ex, RETURN_MASK_ERROR)
+             catch (const gdb_exception_error &ex)
                {
                  exception_fprintf (gdb_stderr, ex,
                                     "Error printing symbol:\n");
                }
-             END_CATCH
            }
        }
       fprintf_filtered (outfile, "\n");
@@ -386,13 +385,9 @@ dump_symtab (struct symtab *symtab, struct ui_file *outfile)
   if (symtab->language != language_unknown
       && symtab->language != language_auto)
     {
-      enum language saved_lang;
-
-      saved_lang = set_language (symtab->language);
-
+      scoped_restore_current_language save_lang;
+      set_language (symtab->language);
       dump_symtab_1 (symtab, outfile);
-
-      set_language (saved_lang);
     }
   else
     dump_symtab_1 (symtab, outfile);
@@ -472,12 +467,9 @@ maintenance_print_symbols (const char *args, int from_tty)
     }
   else
     {
-      struct objfile *objfile;
-      struct compunit_symtab *cu;
-      struct symtab *s;
       int found = 0;
 
-      ALL_OBJFILES (objfile)
+      for (objfile *objfile : current_program_space->objfiles ())
        {
          int print_for_objfile = 1;
 
@@ -488,21 +480,24 @@ maintenance_print_symbols (const char *args, int from_tty)
          if (!print_for_objfile)
            continue;
 
-         ALL_OBJFILE_FILETABS (objfile, cu, s)
+         for (compunit_symtab *cu : objfile->compunits ())
            {
-             int print_for_source = 0;
-
-             QUIT;
-             if (source_arg != NULL)
+             for (symtab *s : compunit_filetabs (cu))
                {
-                 print_for_source
-                   = compare_filenames_for_search
-                       (symtab_to_filename_for_display (s), source_arg);
-                 found = 1;
+                 int print_for_source = 0;
+
+                 QUIT;
+                 if (source_arg != NULL)
+                   {
+                     print_for_source
+                       = compare_filenames_for_search
+                       (symtab_to_filename_for_display (s), source_arg);
+                     found = 1;
+                   }
+                 if (source_arg == NULL
+                     || print_for_source)
+                   dump_symtab (s, outfile);
                }
-             if (source_arg == NULL
-                 || print_for_source)
-               dump_symtab (s, outfile);
            }
        }
 
@@ -527,13 +522,12 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
   print_spaces (depth, outfile);
   if (SYMBOL_DOMAIN (symbol) == LABEL_DOMAIN)
     {
-      fprintf_filtered (outfile, "label %s at ", SYMBOL_PRINT_NAME (symbol));
+      fprintf_filtered (outfile, "label %s at ", symbol->print_name ());
       fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (symbol)),
                      outfile);
       if (section)
        fprintf_filtered (outfile, " section %s\n",
-                         bfd_section_name (section->the_bfd_section->owner,
-                                           section->the_bfd_section));
+                         bfd_section_name (section->the_bfd_section));
       else
        fprintf_filtered (outfile, "\n");
       return;
@@ -553,7 +547,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
                          ? "enum"
                     : (TYPE_CODE (SYMBOL_TYPE (symbol)) == TYPE_CODE_STRUCT
                        ? "struct" : "union")),
-                           SYMBOL_LINKAGE_NAME (symbol));
+                           symbol->linkage_name ());
          LA_PRINT_TYPE (SYMBOL_TYPE (symbol), "", outfile, 1, depth,
                         &type_print_raw_options);
        }
@@ -566,7 +560,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
       if (SYMBOL_TYPE (symbol))
        {
          /* Print details of types, except for enums where it's clutter.  */
-         LA_PRINT_TYPE (SYMBOL_TYPE (symbol), SYMBOL_PRINT_NAME (symbol),
+         LA_PRINT_TYPE (SYMBOL_TYPE (symbol), symbol->print_name (),
                         outfile,
                         TYPE_CODE (SYMBOL_TYPE (symbol)) != TYPE_CODE_ENUM,
                         depth,
@@ -574,7 +568,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
          fprintf_filtered (outfile, "; ");
        }
       else
-       fprintf_filtered (outfile, "%s ", SYMBOL_PRINT_NAME (symbol));
+       fprintf_filtered (outfile, "%s ", symbol->print_name ());
 
       switch (SYMBOL_CLASS (symbol))
        {
@@ -589,8 +583,8 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
            unsigned i;
            struct type *type = check_typedef (SYMBOL_TYPE (symbol));
 
-           fprintf_filtered (outfile, "const %u hex bytes:",
-                             TYPE_LENGTH (type));
+           fprintf_filtered (outfile, "const %s hex bytes:",
+                             pulongest (TYPE_LENGTH (type)));
            for (i = 0; i < TYPE_LENGTH (type); i++)
              fprintf_filtered (outfile, " %02x",
                                (unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
@@ -603,8 +597,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
                          outfile);
          if (section)
            fprintf_filtered (outfile, " section %s",
-                             bfd_section_name (section->the_bfd_section->owner,
-                                               section->the_bfd_section));
+                             bfd_section_name (section->the_bfd_section));
          break;
 
        case LOC_REGISTER:
@@ -645,8 +638,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
                          outfile);
          if (section)
            fprintf_filtered (outfile, " section %s",
-                             bfd_section_name (section->the_bfd_section->owner,
-                                               section->the_bfd_section));
+                             bfd_section_name (section->the_bfd_section));
          break;
 
        case LOC_BLOCK:
@@ -662,8 +654,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
                          outfile);
          if (section)
            fprintf_filtered (outfile, " section %s",
-                             bfd_section_name (section->the_bfd_section->owner,
-                                               section->the_bfd_section));
+                             bfd_section_name (section->the_bfd_section));
          break;
 
        case LOC_COMPUTED:
@@ -692,7 +683,6 @@ maintenance_print_msymbols (const char *args, int from_tty)
 {
   struct ui_file *outfile = gdb_stdout;
   char *objfile_arg = NULL;
-  struct objfile *objfile;
   int i, outfile_idx;
 
   dont_repeat ();
@@ -736,20 +726,19 @@ maintenance_print_msymbols (const char *args, int from_tty)
       outfile = &arg_outfile;
     }
 
-  ALL_OBJFILES (objfile)
-  {
-    QUIT;
-    if (objfile_arg == NULL
-       || compare_filenames_for_search (objfile_name (objfile), objfile_arg))
-      dump_msymbols (objfile, outfile);
-  }
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      QUIT;
+      if (objfile_arg == NULL
+         || compare_filenames_for_search (objfile_name (objfile), objfile_arg))
+       dump_msymbols (objfile, outfile);
+    }
 }
 
 static void
 maintenance_print_objfiles (const char *regexp, int from_tty)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
 
   dont_repeat ();
 
@@ -757,7 +746,7 @@ maintenance_print_objfiles (const char *regexp, int from_tty)
     re_comp (regexp);
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
+    for (objfile *objfile : pspace->objfiles ())
       {
        QUIT;
        if (! regexp
@@ -772,7 +761,6 @@ static void
 maintenance_info_symtabs (const char *regexp, int from_tty)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
 
   dont_repeat ();
 
@@ -780,78 +768,75 @@ maintenance_info_symtabs (const char *regexp, int from_tty)
     re_comp (regexp);
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-    {
-      struct compunit_symtab *cust;
-      struct symtab *symtab;
-
-      /* We don't want to print anything for this objfile until we
-         actually find a symtab whose name matches.  */
-      int printed_objfile_start = 0;
-
-      ALL_OBJFILE_COMPUNITS (objfile, cust)
-       {
-         int printed_compunit_symtab_start = 0;
-
-         ALL_COMPUNIT_FILETABS (cust, symtab)
-           {
-             QUIT;
+    for (objfile *objfile : pspace->objfiles ())
+      {
+       /* We don't want to print anything for this objfile until we
+          actually find a symtab whose name matches.  */
+       int printed_objfile_start = 0;
 
-             if (! regexp
-                 || re_exec (symtab_to_filename_for_display (symtab)))
-               {
-                 if (! printed_objfile_start)
-                   {
-                     printf_filtered ("{ objfile %s ", objfile_name (objfile));
-                     wrap_here ("  ");
-                     printf_filtered ("((struct objfile *) %s)\n",
-                                      host_address_to_string (objfile));
-                     printed_objfile_start = 1;
-                   }
-                 if (! printed_compunit_symtab_start)
-                   {
-                     printf_filtered ("  { ((struct compunit_symtab *) %s)\n",
-                                      host_address_to_string (cust));
-                     printf_filtered ("    debugformat %s\n",
-                                      COMPUNIT_DEBUGFORMAT (cust));
-                     printf_filtered ("    producer %s\n",
-                                      COMPUNIT_PRODUCER (cust) != NULL
-                                      ? COMPUNIT_PRODUCER (cust)
-                                      : "(null)");
-                     printf_filtered ("    dirname %s\n",
-                                      COMPUNIT_DIRNAME (cust) != NULL
-                                      ? COMPUNIT_DIRNAME (cust)
-                                      : "(null)");
-                     printf_filtered ("    blockvector"
-                                      " ((struct blockvector *) %s)\n",
-                                      host_address_to_string
+       for (compunit_symtab *cust : objfile->compunits ())
+         {
+           int printed_compunit_symtab_start = 0;
+
+           for (symtab *symtab : compunit_filetabs (cust))
+             {
+               QUIT;
+
+               if (! regexp
+                   || re_exec (symtab_to_filename_for_display (symtab)))
+                 {
+                   if (! printed_objfile_start)
+                     {
+                       printf_filtered ("{ objfile %s ", objfile_name (objfile));
+                       wrap_here ("  ");
+                       printf_filtered ("((struct objfile *) %s)\n",
+                                        host_address_to_string (objfile));
+                       printed_objfile_start = 1;
+                     }
+                   if (! printed_compunit_symtab_start)
+                     {
+                       printf_filtered ("  { ((struct compunit_symtab *) %s)\n",
+                                        host_address_to_string (cust));
+                       printf_filtered ("    debugformat %s\n",
+                                        COMPUNIT_DEBUGFORMAT (cust));
+                       printf_filtered ("    producer %s\n",
+                                        COMPUNIT_PRODUCER (cust) != NULL
+                                        ? COMPUNIT_PRODUCER (cust)
+                                        : "(null)");
+                       printf_filtered ("    dirname %s\n",
+                                        COMPUNIT_DIRNAME (cust) != NULL
+                                        ? COMPUNIT_DIRNAME (cust)
+                                        : "(null)");
+                       printf_filtered ("    blockvector"
+                                        " ((struct blockvector *) %s)\n",
+                                        host_address_to_string
                                         (COMPUNIT_BLOCKVECTOR (cust)));
-                     printed_compunit_symtab_start = 1;
-                   }
-
-                 printf_filtered ("\t{ symtab %s ",
-                                  symtab_to_filename_for_display (symtab));
-                 wrap_here ("    ");
-                 printf_filtered ("((struct symtab *) %s)\n",
-                                  host_address_to_string (symtab));
-                 printf_filtered ("\t  fullname %s\n",
-                                  symtab->fullname != NULL
-                                  ? symtab->fullname
-                                  : "(null)");
-                 printf_filtered ("\t  "
-                                  "linetable ((struct linetable *) %s)\n",
-                                  host_address_to_string (symtab->linetable));
-                 printf_filtered ("\t}\n");
-               }
-           }
-
-         if (printed_compunit_symtab_start)
-           printf_filtered ("  }\n");
-       }
+                       printed_compunit_symtab_start = 1;
+                     }
+
+                   printf_filtered ("\t{ symtab %s ",
+                                    symtab_to_filename_for_display (symtab));
+                   wrap_here ("    ");
+                   printf_filtered ("((struct symtab *) %s)\n",
+                                    host_address_to_string (symtab));
+                   printf_filtered ("\t  fullname %s\n",
+                                    symtab->fullname != NULL
+                                    ? symtab->fullname
+                                    : "(null)");
+                   printf_filtered ("\t  "
+                                    "linetable ((struct linetable *) %s)\n",
+                                    host_address_to_string (symtab->linetable));
+                   printf_filtered ("\t}\n");
+                 }
+             }
+
+           if (printed_compunit_symtab_start)
+             printf_filtered ("  }\n");
+         }
 
-      if (printed_objfile_start)
-        printf_filtered ("}\n");
-    }
+       if (printed_objfile_start)
+         printf_filtered ("}\n");
+      }
 }
 
 /* Check consistency of symtabs.
@@ -866,49 +851,46 @@ static void
 maintenance_check_symtabs (const char *ignore, int from_tty)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-    {
-      struct compunit_symtab *cust;
-
-      /* We don't want to print anything for this objfile until we
-         actually find something worth printing.  */
-      int printed_objfile_start = 0;
-
-      ALL_OBJFILE_COMPUNITS (objfile, cust)
-       {
-         int found_something = 0;
-         struct symtab *symtab = compunit_primary_filetab (cust);
-
-         QUIT;
-
-         if (COMPUNIT_BLOCKVECTOR (cust) == NULL)
-           found_something = 1;
-         /* Add more checks here.  */
+    for (objfile *objfile : pspace->objfiles ())
+      {
+       /* We don't want to print anything for this objfile until we
+          actually find something worth printing.  */
+       int printed_objfile_start = 0;
 
-         if (found_something)
-           {
-             if (! printed_objfile_start)
-               {
-                 printf_filtered ("{ objfile %s ", objfile_name (objfile));
-                 wrap_here ("  ");
-                 printf_filtered ("((struct objfile *) %s)\n",
-                                  host_address_to_string (objfile));
-                 printed_objfile_start = 1;
-               }
-             printf_filtered ("  { symtab %s\n",
-                              symtab_to_filename_for_display (symtab));
-             if (COMPUNIT_BLOCKVECTOR (cust) == NULL)
-               printf_filtered ("    NULL blockvector\n");
-             printf_filtered ("  }\n");
-           }
-       }
+       for (compunit_symtab *cust : objfile->compunits ())
+         {
+           int found_something = 0;
+           struct symtab *symtab = compunit_primary_filetab (cust);
+
+           QUIT;
+
+           if (COMPUNIT_BLOCKVECTOR (cust) == NULL)
+             found_something = 1;
+           /* Add more checks here.  */
+
+           if (found_something)
+             {
+               if (! printed_objfile_start)
+                 {
+                   printf_filtered ("{ objfile %s ", objfile_name (objfile));
+                   wrap_here ("  ");
+                   printf_filtered ("((struct objfile *) %s)\n",
+                                    host_address_to_string (objfile));
+                   printed_objfile_start = 1;
+                 }
+               printf_filtered ("  { symtab %s\n",
+                                symtab_to_filename_for_display (symtab));
+               if (COMPUNIT_BLOCKVECTOR (cust) == NULL)
+                 printf_filtered ("    NULL blockvector\n");
+               printf_filtered ("  }\n");
+             }
+         }
 
-      if (printed_objfile_start)
-        printf_filtered ("}\n");
-    }
+       if (printed_objfile_start)
+         printf_filtered ("}\n");
+      }
 }
 
 /* Expand all symbol tables whose name matches an optional regexp.  */
@@ -917,7 +899,6 @@ static void
 maintenance_expand_symtabs (const char *args, int from_tty)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
   char *regexp = NULL;
 
   /* We use buildargv here so that we handle spaces in the regexp
@@ -938,35 +919,35 @@ maintenance_expand_symtabs (const char *args, int from_tty)
     re_comp (regexp);
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-    {
-      if (objfile->sf)
-       {
-         objfile->sf->qf->expand_symtabs_matching
-           (objfile,
-            [&] (const char *filename, bool basenames)
-            {
-              /* KISS: Only apply the regexp to the complete file name.  */
-              return (!basenames
-                      && (regexp == NULL || re_exec (filename)));
-            },
-            lookup_name_info::match_any (),
-            [] (const char *symname)
-            {
-              /* Since we're not searching on symbols, just return true.  */
-              return true;
-            },
-            NULL,
-            ALL_DOMAIN);
-       }
-    }
+    for (objfile *objfile : pspace->objfiles ())
+      {
+       if (objfile->sf)
+         {
+           objfile->sf->qf->expand_symtabs_matching
+             (objfile,
+              [&] (const char *filename, bool basenames)
+              {
+                /* KISS: Only apply the regexp to the complete file name.  */
+                return (!basenames
+                        && (regexp == NULL || re_exec (filename)));
+              },
+              lookup_name_info::match_any (),
+              [] (const char *symname)
+              {
+                /* Since we're not searching on symbols, just return true.  */
+                return true;
+              },
+              NULL,
+              ALL_DOMAIN);
+         }
+      }
 }
 \f
 
 /* Return the nexting depth of a block within other blocks in its symtab.  */
 
 static int
-block_depth (struct block *block)
+block_depth (const struct block *block)
 {
   int i = 0;
 
@@ -1032,7 +1013,6 @@ static void
 maintenance_info_line_tables (const char *regexp, int from_tty)
 {
   struct program_space *pspace;
-  struct objfile *objfile;
 
   dont_repeat ();
 
@@ -1040,23 +1020,20 @@ maintenance_info_line_tables (const char *regexp, int from_tty)
     re_comp (regexp);
 
   ALL_PSPACES (pspace)
-    ALL_PSPACE_OBJFILES (pspace, objfile)
-    {
-      struct compunit_symtab *cust;
-      struct symtab *symtab;
-
-      ALL_OBJFILE_COMPUNITS (objfile, cust)
-       {
-         ALL_COMPUNIT_FILETABS (cust, symtab)
-           {
-             QUIT;
-
-             if (regexp == NULL
-                 || re_exec (symtab_to_filename_for_display (symtab)))
-               maintenance_print_one_line_table (symtab, NULL);
-           }
-       }
-    }
+    for (objfile *objfile : pspace->objfiles ())
+      {
+       for (compunit_symtab *cust : objfile->compunits ())
+         {
+           for (symtab *symtab : compunit_filetabs (cust))
+             {
+               QUIT;
+
+               if (regexp == NULL
+                   || re_exec (symtab_to_filename_for_display (symtab)))
+                 maintenance_print_one_line_table (symtab, NULL);
+             }
+         }
+      }
 }
 
 \f
@@ -1072,8 +1049,8 @@ _initialize_symmisc (void)
 
   add_cmd ("symbols", class_maintenance, maintenance_print_symbols, _("\
 Print dump of current symbol definitions.\n\
-Usage: mt print symbols [-pc address] [--] [outfile]\n\
-       mt print symbols [-objfile objfile] [-source source] [--] [outfile]\n\
+Usage: mt print symbols [-pc ADDRESS] [--] [OUTFILE]\n\
+       mt print symbols [-objfile OBJFILE] [-source SOURCE] [--] [OUTFILE]\n\
 Entries in the full symbol table are dumped to file OUTFILE,\n\
 or the terminal if OUTFILE is unspecified.\n\
 If ADDRESS is provided, dump only the file for that address.\n\
@@ -1083,7 +1060,7 @@ If OBJFILE is provided, dump only that file's minimal symbols."),
 
   add_cmd ("msymbols", class_maintenance, maintenance_print_msymbols, _("\
 Print dump of current minimal symbol definitions.\n\
-Usage: mt print msymbols [-objfile objfile] [--] [outfile]\n\
+Usage: mt print msymbols [-objfile OBJFILE] [--] [OUTFILE]\n\
 Entries in the minimal symbol table are dumped to file OUTFILE,\n\
 or the terminal if OUTFILE is unspecified.\n\
 If OBJFILE is provided, dump only that file's minimal symbols."),
This page took 0.037036 seconds and 4 git commands to generate.