#include "typeprint.h"
#include "gdbcmd.h"
#include "source.h"
-#include "readline/readline.h"
+#include "readline/tilde.h"
#include "psymtab.h"
/* 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);
struct program_space *pspace;
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ for (objfile *objfile : pspace->objfiles ())
{
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");
+ 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");
}
}
int i, linetables, blockvectors;
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ for (objfile *objfile : pspace->objfiles ())
{
QUIT;
printf_filtered (_("Statistics for '%s':\n"), objfile_name (objfile));
if (objfile->sf)
objfile->sf->qf->print_stats (objfile);
i = linetables = 0;
- ALL_OBJFILE_FILETABS (objfile, cu, s)
+ for (compunit_symtab *cu : objfile->compunits ())
{
- i++;
- if (SYMTAB_LINETABLE (s) != NULL)
- linetables++;
+ for (symtab *s : compunit_filetabs (cu))
+ {
+ i++;
+ if (SYMTAB_LINETABLE (s) != NULL)
+ linetables++;
+ }
}
- blockvectors = std::distance (objfile_compunits (objfile).begin (),
- objfile_compunits (objfile).end ());
+ 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 (_(" 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 psymbol cache: %d\n"),
+ objfile->partial_symtabs->psymbol_cache.memory_used ());
printf_filtered (_(" Total memory used for macro cache: %d\n"),
- bcache_memory_used (objfile->per_bfd->macro_cache));
+ objfile->per_bfd->macro_cache.memory_used ());
printf_filtered (_(" Total memory used for file name cache: %d\n"),
- bcache_memory_used (objfile->per_bfd->filename_cache));
+ objfile->per_bfd->filename_cache.memory_used ());
}
}
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");
}
return;
}
index = 0;
- for (minimal_symbol *msymbol : objfile_msymbols (objfile))
+ for (minimal_symbol *msymbol : objfile->msymbols ())
{
struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
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
+ + ANOFFSET (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);
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",
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");
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);
{
int found = 0;
- for (objfile *objfile : all_objfiles (current_program_space))
+ for (objfile *objfile : current_program_space->objfiles ())
{
int print_for_objfile = 1;
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);
}
}
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;
? "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);
}
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,
fprintf_filtered (outfile, "; ");
}
else
- fprintf_filtered (outfile, "%s ", SYMBOL_PRINT_NAME (symbol));
+ fprintf_filtered (outfile, "%s ", symbol->print_name ());
switch (SYMBOL_CLASS (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]);
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:
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:
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:
outfile = &arg_outfile;
}
- for (objfile *objfile : all_objfiles (current_program_space))
+ for (objfile *objfile : current_program_space->objfiles ())
{
QUIT;
if (objfile_arg == NULL
re_comp (regexp);
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ for (objfile *objfile : pspace->objfiles ())
{
QUIT;
if (! regexp
re_comp (regexp);
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ 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;
- for (compunit_symtab *cust : objfile_compunits (objfile))
+ for (compunit_symtab *cust : objfile->compunits ())
{
int printed_compunit_symtab_start = 0;
struct program_space *pspace;
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ 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;
- for (compunit_symtab *cust : objfile_compunits (objfile))
+ for (compunit_symtab *cust : objfile->compunits ())
{
int found_something = 0;
struct symtab *symtab = compunit_primary_filetab (cust);
re_comp (regexp);
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ for (objfile *objfile : pspace->objfiles ())
{
if (objfile->sf)
{
/* 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;
re_comp (regexp);
ALL_PSPACES (pspace)
- for (objfile *objfile : all_objfiles (pspace))
+ for (objfile *objfile : pspace->objfiles ())
{
- for (compunit_symtab *cust : objfile_compunits (objfile))
+ for (compunit_symtab *cust : objfile->compunits ())
{
for (symtab *symtab : compunit_filetabs (cust))
{