* symmisc.c (dump_symtab): Use catch_errors around print_symbol.

Change calling sequence of print_symbol to fit catch_errors.
This commit is contained in:
Jim Kingdon 1993-08-27 22:55:04 +00:00
parent 5d22adf110
commit 13bd962292
2 changed files with 42 additions and 36 deletions

View File

@ -1,5 +1,8 @@
Fri Aug 27 09:30:40 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
* symmisc.c (dump_symtab): Use catch_errors around print_symbol.
Change calling sequence of print_symbol to fit catch_errors.
* mips-tdep.c: Call reinit_frame_cache every time the user does
"set heuristic-fence-post".

View File

@ -64,8 +64,13 @@ block_depth PARAMS ((struct block *));
static void
print_partial_symbol PARAMS ((struct partial_symbol *, int, char *, FILE *));
static void
print_symbol PARAMS ((struct symbol *, int, FILE *));
struct print_symbol_args {
struct symbol *symbol;
int depth;
FILE *outfile;
};
static int print_symbol PARAMS ((char *));
static void
free_symtab_block PARAMS ((struct objfile *, struct block *));
@ -368,7 +373,12 @@ dump_symtab (objfile, symtab, outfile)
blen = BLOCK_NSYMS (b);
for (j = 0; j < blen; j++)
{
print_symbol (BLOCK_SYM (b, j), depth + 1, outfile);
struct print_symbol_args s;
s.symbol = BLOCK_SYM (b, j);
s.depth = depth + 1;
s.outfile = outfile;
catch_errors (print_symbol, &s, "Error printing symbol:\n",
RETURN_MASK_ERROR);
}
}
fprintf (outfile, "\n");
@ -425,12 +435,18 @@ maintenance_print_symbols (args, from_tty)
do_cleanups (cleanups);
}
static void
print_symbol (symbol, depth, outfile)
struct symbol *symbol;
int depth;
FILE *outfile;
/* Print symbol ARGS->SYMBOL on ARGS->OUTFILE. ARGS->DEPTH says how
far to indent. ARGS is really a struct print_symbol_args *, but is
declared as char * to get it past catch_errors. */
static int
print_symbol (args)
char *args;
{
struct symbol *symbol = ((struct print_symbol_args *)args)->symbol;
int depth = ((struct print_symbol_args *)args)->depth;
FILE *outfile = ((struct print_symbol_args *)args)->outfile;
print_spaces (depth, outfile);
if (SYMBOL_NAMESPACE (symbol) == LABEL_NAMESPACE)
{
@ -500,28 +516,13 @@ print_symbol (symbol, depth, outfile)
break;
case LOC_ARG:
if (SYMBOL_BASEREG_VALID (symbol))
{
fprintf (outfile, "arg at 0x%lx from register %d,",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
}
else
{
fprintf (outfile, "arg at 0x%lx,", SYMBOL_VALUE (symbol));
}
fprintf (outfile, "arg at 0x%lx,", SYMBOL_VALUE (symbol));
break;
case LOC_LOCAL_ARG:
if (SYMBOL_BASEREG_VALID (symbol))
{
fprintf (outfile, "arg at offset 0x%lx from register %d,",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
}
else
{
fprintf (outfile, "arg at offset 0x%lx from fp,",
SYMBOL_VALUE (symbol));
}
fprintf (outfile, "arg at offset 0x%lx from fp,",
SYMBOL_VALUE (symbol));
break;
case LOC_REF_ARG:
fprintf (outfile, "reference arg at 0x%lx,", SYMBOL_VALUE (symbol));
@ -536,15 +537,17 @@ print_symbol (symbol, depth, outfile)
break;
case LOC_LOCAL:
if (SYMBOL_BASEREG_VALID (symbol))
{
fprintf (outfile, "local at 0x%lx from register %d",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
}
else
{
fprintf (outfile, "local at 0x%lx,", SYMBOL_VALUE (symbol));
}
fprintf (outfile, "local at 0x%lx,", SYMBOL_VALUE (symbol));
break;
case LOC_BASEREG:
fprintf (outfile, "local at 0x%lx from register %d",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
break;
case LOC_BASEREG_ARG:
fprintf (outfile, "arg at 0x%lx from register %d,",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
break;
case LOC_TYPEDEF: