aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/symmisc.c')
-rw-r--r--gdb/symmisc.c71
1 files changed, 46 insertions, 25 deletions
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 96fabc3c04c..eb35369f9ef 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -67,13 +67,15 @@ static void dump_objfile (struct objfile *);
static int block_depth (struct block *);
-static void print_partial_symbols (struct partial_symbol **, int,
+static void print_partial_symbols (struct gdbarch *,
+ struct partial_symbol **, int,
char *, struct ui_file *);
void _initialize_symmisc (void);
struct print_symbol_args
{
+ struct gdbarch *gdbarch;
struct symbol *symbol;
int depth;
struct ui_file *outfile;
@@ -261,6 +263,7 @@ dump_objfile (struct objfile *objfile)
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;
@@ -310,7 +313,8 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
break;
}
fprintf_filtered (outfile, "[%2d] %c ", index, ms_type);
- fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (msymbol)), outfile);
+ fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (msymbol)),
+ outfile);
fprintf_filtered (outfile, " %s", SYMBOL_LINKAGE_NAME (msymbol));
if (section)
fprintf_filtered (outfile, " section %s",
@@ -337,6 +341,7 @@ static void
dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
struct ui_file *outfile)
{
+ struct gdbarch *gdbarch = get_objfile_arch (objfile);
int i;
fprintf_filtered (outfile, "\nPartial symtab for source file %s ",
@@ -365,15 +370,16 @@ dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
if (i != 0)
fprintf_filtered (outfile, ", ");
wrap_here (" ");
- fputs_filtered (paddress (ANOFFSET (psymtab->section_offsets, i)),
+ fputs_filtered (paddress (gdbarch,
+ ANOFFSET (psymtab->section_offsets, i)),
outfile);
}
fprintf_filtered (outfile, "\n");
fprintf_filtered (outfile, " Symbols cover text addresses ");
- fputs_filtered (paddress (psymtab->textlow), outfile);
+ fputs_filtered (paddress (gdbarch, psymtab->textlow), outfile);
fprintf_filtered (outfile, "-");
- fputs_filtered (paddress (psymtab->texthigh), outfile);
+ fputs_filtered (paddress (gdbarch, psymtab->texthigh), outfile);
fprintf_filtered (outfile, "\n");
fprintf_filtered (outfile, " Depends on %d other partial symtabs.\n",
psymtab->number_of_dependencies);
@@ -386,13 +392,15 @@ dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
}
if (psymtab->n_global_syms > 0)
{
- print_partial_symbols (objfile->global_psymbols.list
+ print_partial_symbols (gdbarch,
+ objfile->global_psymbols.list
+ psymtab->globals_offset,
psymtab->n_global_syms, "Global", outfile);
}
if (psymtab->n_static_syms > 0)
{
- print_partial_symbols (objfile->static_psymbols.list
+ print_partial_symbols (gdbarch,
+ objfile->static_psymbols.list
+ psymtab->statics_offset,
psymtab->n_static_syms, "Static", outfile);
}
@@ -403,6 +411,7 @@ static void
dump_symtab_1 (struct objfile *objfile, struct symtab *symtab,
struct ui_file *outfile)
{
+ struct gdbarch *gdbarch = get_objfile_arch (objfile);
int i;
struct dict_iterator iter;
int len, blen;
@@ -430,7 +439,7 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab,
for (i = 0; i < len; i++)
{
fprintf_filtered (outfile, " line %d at ", l->item[i].line);
- fputs_filtered (paddress (l->item[i].pc), outfile);
+ fputs_filtered (paddress (gdbarch, l->item[i].pc), outfile);
fprintf_filtered (outfile, "\n");
}
}
@@ -458,9 +467,9 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab,
wants it. */
fprintf_filtered (outfile, ", %d syms/buckets in ",
dict_size (BLOCK_DICT (b)));
- fputs_filtered (paddress (BLOCK_START (b)), outfile);
+ fputs_filtered (paddress (gdbarch, BLOCK_START (b)), outfile);
fprintf_filtered (outfile, "..");
- fputs_filtered (paddress (BLOCK_END (b)), outfile);
+ fputs_filtered (paddress (gdbarch, BLOCK_END (b)), outfile);
if (BLOCK_FUNCTION (b))
{
fprintf_filtered (outfile, ", function %s",
@@ -477,6 +486,7 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab,
ALL_BLOCK_SYMBOLS (b, iter, sym)
{
struct print_symbol_args s;
+ s.gdbarch = gdbarch;
s.symbol = sym;
s.depth = depth + 1;
s.outfile = outfile;
@@ -570,6 +580,7 @@ Arguments missing: an output file name and an optional symbol file name"));
static int
print_symbol (void *args)
{
+ struct gdbarch *gdbarch = ((struct print_symbol_args *) args)->gdbarch;
struct symbol *symbol = ((struct print_symbol_args *) args)->symbol;
int depth = ((struct print_symbol_args *) args)->depth;
struct ui_file *outfile = ((struct print_symbol_args *) args)->outfile;
@@ -579,7 +590,8 @@ print_symbol (void *args)
if (SYMBOL_DOMAIN (symbol) == LABEL_DOMAIN)
{
fprintf_filtered (outfile, "label %s at ", SYMBOL_PRINT_NAME (symbol));
- fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (symbol)), outfile);
+ 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,
@@ -644,7 +656,8 @@ print_symbol (void *args)
case LOC_STATIC:
fprintf_filtered (outfile, "static at ");
- fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (symbol)), outfile);
+ fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (symbol)),
+ outfile);
if (section)
fprintf_filtered (outfile, " section %s",
bfd_section_name (section->the_bfd_section->owner,
@@ -682,7 +695,8 @@ print_symbol (void *args)
case LOC_LABEL:
fprintf_filtered (outfile, "label at ");
- fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (symbol)), outfile);
+ fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (symbol)),
+ outfile);
if (section)
fprintf_filtered (outfile, " section %s",
bfd_section_name (section->the_bfd_section->owner,
@@ -693,10 +707,12 @@ print_symbol (void *args)
fprintf_filtered (outfile, "block object ");
gdb_print_host_address (SYMBOL_BLOCK_VALUE (symbol), outfile);
fprintf_filtered (outfile, ", ");
- fputs_filtered (paddress (BLOCK_START (SYMBOL_BLOCK_VALUE (symbol))),
+ fputs_filtered (paddress (gdbarch,
+ BLOCK_START (SYMBOL_BLOCK_VALUE (symbol))),
outfile);
fprintf_filtered (outfile, "..");
- fputs_filtered (paddress (BLOCK_END (SYMBOL_BLOCK_VALUE (symbol))),
+ fputs_filtered (paddress (gdbarch,
+ BLOCK_END (SYMBOL_BLOCK_VALUE (symbol))),
outfile);
if (section)
fprintf_filtered (outfile, " section %s",
@@ -773,7 +789,8 @@ maintenance_print_psymbols (char *args, int from_tty)
}
static void
-print_partial_symbols (struct partial_symbol **p, int count, char *what,
+print_partial_symbols (struct gdbarch *gdbarch,
+ struct partial_symbol **p, int count, char *what,
struct ui_file *outfile)
{
fprintf_filtered (outfile, " %s partial symbols:\n", what);
@@ -855,7 +872,7 @@ print_partial_symbols (struct partial_symbol **p, int count, char *what,
break;
}
fputs_filtered (", ", outfile);
- fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (*p)), outfile);
+ fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (*p)), outfile);
fprintf_filtered (outfile, "\n");
p++;
}
@@ -995,6 +1012,7 @@ maintenance_info_psymtabs (char *regexp, int from_tty)
ALL_OBJFILES (objfile)
{
+ struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct partial_symtab *psymtab;
/* We don't want to print anything for this objfile until we
@@ -1027,9 +1045,11 @@ maintenance_info_psymtabs (char *regexp, int from_tty)
printf_filtered (" fullname %s\n",
psymtab->fullname ? psymtab->fullname : "(null)");
printf_filtered (" text addresses ");
- fputs_filtered (paddress (psymtab->textlow), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, psymtab->textlow),
+ gdb_stdout);
printf_filtered (" -- ");
- fputs_filtered (paddress (psymtab->texthigh), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, psymtab->texthigh),
+ gdb_stdout);
printf_filtered ("\n");
printf_filtered (" globals ");
if (psymtab->n_global_syms)
@@ -1097,6 +1117,7 @@ maintenance_check_symtabs (char *ignore, int from_tty)
ALL_PSYMTABS (objfile, ps)
{
+ struct gdbarch *gdbarch = get_objfile_arch (objfile);
s = PSYMTAB_TO_SYMTAB (ps);
if (s == NULL)
continue;
@@ -1140,9 +1161,9 @@ maintenance_check_symtabs (char *ignore, int from_tty)
printf_filtered ("Psymtab ");
puts_filtered (ps->filename);
printf_filtered (" covers bad range ");
- fputs_filtered (paddress (ps->textlow), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout);
printf_filtered (" - ");
- fputs_filtered (paddress (ps->texthigh), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout);
printf_filtered ("\n");
continue;
}
@@ -1153,13 +1174,13 @@ maintenance_check_symtabs (char *ignore, int from_tty)
printf_filtered ("Psymtab ");
puts_filtered (ps->filename);
printf_filtered (" covers ");
- fputs_filtered (paddress (ps->textlow), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout);
printf_filtered (" - ");
- fputs_filtered (paddress (ps->texthigh), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout);
printf_filtered (" but symtab covers only ");
- fputs_filtered (paddress (BLOCK_START (b)), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, BLOCK_START (b)), gdb_stdout);
printf_filtered (" - ");
- fputs_filtered (paddress (BLOCK_END (b)), gdb_stdout);
+ fputs_filtered (paddress (gdbarch, BLOCK_END (b)), gdb_stdout);
printf_filtered ("\n");
}
}