all remaining *.c *.h files from hp merge.

This commit is contained in:
David Taylor
1998-12-31 21:58:30 +00:00
parent c450a7fe3f
commit 65b07ddca8
62 changed files with 27574 additions and 1386 deletions

View File

@@ -1,5 +1,5 @@
/* Do various things to symbol tables (other than lookup), for GDB.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996
Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 1998
Free Software Foundation, Inc.
This file is part of GDB.
@@ -48,23 +48,26 @@ FILE *std_err;
/* Prototypes for local functions */
static void
dump_symtab PARAMS ((struct objfile *, struct symtab *, GDB_FILE *));
static void dump_symtab PARAMS ((struct objfile *, struct symtab *,
GDB_FILE *));
static void
dump_psymtab PARAMS ((struct objfile *, struct partial_symtab *, GDB_FILE *));
static void dump_psymtab PARAMS ((struct objfile *, struct partial_symtab *,
GDB_FILE *));
static void
dump_msymbols PARAMS ((struct objfile *, GDB_FILE *));
static void dump_msymbols PARAMS ((struct objfile *, GDB_FILE *));
static void
dump_objfile PARAMS ((struct objfile *));
static void dump_objfile PARAMS ((struct objfile *));
static int
block_depth PARAMS ((struct block *));
static int block_depth PARAMS ((struct block *));
static void
print_partial_symbols PARAMS ((struct partial_symbol **, int, char *, GDB_FILE *));
static void print_partial_symbols PARAMS ((struct partial_symbol **, int,
char *, GDB_FILE *));
static int print_symbol PARAMS ((char *));
static void free_symtab_block PARAMS ((struct objfile *, struct block *));
void _initialize_symmisc PARAMS ((void));
struct print_symbol_args {
struct symbol *symbol;
@@ -148,6 +151,8 @@ free_symtab (s)
mfree (s -> objfile -> md, (PTR) s -> line_charpos);
if (s -> fullname != NULL)
mfree (s -> objfile -> md, s -> fullname);
if (s -> debugformat != NULL)
mfree (s -> objfile -> md, s -> debugformat);
mfree (s -> objfile -> md, (PTR) s);
}
@@ -180,22 +185,24 @@ print_objfile_statistics ()
printf_filtered (" Number of \"stab\" symbols read: %d\n",
OBJSTAT (objfile, n_stabs));
if (OBJSTAT (objfile, n_minsyms) > 0)
printf_filtered (" Number of \"minimal symbols read: %d\n",
printf_filtered (" Number of \"minimal\" symbols read: %d\n",
OBJSTAT (objfile, n_minsyms));
if (OBJSTAT (objfile, n_psyms) > 0)
printf_filtered (" Number of \"partial symbols read: %d\n",
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",
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",
printf_filtered (" Number of \"types\" defined: %d\n",
OBJSTAT (objfile, n_types));
if (OBJSTAT (objfile, sz_strtab) > 0)
printf_filtered (" Space used by a.out string tables: %d\n",
OBJSTAT (objfile, sz_strtab));
printf_filtered (" Total memory used for psymbol obstack: %d\n",
obstack_memory_used (&objfile -> psymbol_obstack));
printf_filtered (" Total memory used for psymbol cache: %d\n",
obstack_memory_used (&objfile -> psymbol_cache.cache));
printf_filtered (" Total memory used for symbol obstack: %d\n",
obstack_memory_used (&objfile -> symbol_obstack));
printf_filtered (" Total memory used for type obstack: %d\n",
@@ -312,8 +319,13 @@ dump_msymbols (objfile, outfile)
ms_type = '?';
break;
}
fprintf_filtered (outfile, "[%2d] %c %#10lx %s", index, ms_type,
SYMBOL_VALUE_ADDRESS (msymbol), SYMBOL_NAME (msymbol));
fprintf_filtered (outfile, "[%2d] %c ", index, ms_type);
print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), 1, outfile);
fprintf_filtered (outfile, " %s", SYMBOL_NAME (msymbol));
if (SYMBOL_BFD_SECTION (msymbol))
fprintf_filtered (outfile, " section %s",
bfd_section_name (objfile->obfd,
SYMBOL_BFD_SECTION (msymbol)));
if (SYMBOL_DEMANGLED_NAME (msymbol) != NULL)
{
fprintf_filtered (outfile, " %s", SYMBOL_DEMANGLED_NAME (msymbol));
@@ -415,10 +427,13 @@ dump_symtab (objfile, symtab, outfile)
int depth;
fprintf_filtered (outfile, "\nSymtab for file %s\n", symtab->filename);
if (symtab->dirname)
fprintf_filtered (outfile, "Compilation directory is %s\n",
symtab->dirname);
fprintf_filtered (outfile, "Read from object file %s (", objfile->name);
gdb_print_address (objfile, outfile);
fprintf_filtered (outfile, ")\n");
fprintf_filtered (outfile, "Language: %s\n", language_str (symtab -> language));
fprintf_filtered (outfile, "Language: %s\n", language_str (symtab->language));
/* First print the line table. */
l = LINETABLE (symtab);
@@ -433,53 +448,59 @@ dump_symtab (objfile, symtab, outfile)
fprintf_filtered (outfile, "\n");
}
}
/* Now print the block info. */
fprintf_filtered (outfile, "\nBlockvector:\n\n");
bv = BLOCKVECTOR (symtab);
len = BLOCKVECTOR_NBLOCKS (bv);
for (i = 0; i < len; i++)
/* Now print the block info, but only for primary symtabs since we will
print lots of duplicate info otherwise. */
if (symtab -> primary)
{
b = BLOCKVECTOR_BLOCK (bv, i);
depth = block_depth (b) * 2;
print_spaces (depth, outfile);
fprintf_filtered (outfile, "block #%03d (object ", i);
gdb_print_address (b, outfile);
fprintf_filtered (outfile, ") ");
fprintf_filtered (outfile, "[");
print_address_numeric (BLOCK_START (b), 1, outfile);
fprintf_filtered (outfile, "..");
print_address_numeric (BLOCK_END (b), 1, outfile);
fprintf_filtered (outfile, "]");
if (BLOCK_SUPERBLOCK (b))
fprintf_filtered (outfile, "\nBlockvector:\n\n");
bv = BLOCKVECTOR (symtab);
len = BLOCKVECTOR_NBLOCKS (bv);
for (i = 0; i < len; i++)
{
fprintf_filtered (outfile, " (under ");
gdb_print_address (BLOCK_SUPERBLOCK (b), outfile);
fprintf_filtered (outfile, ")");
}
if (BLOCK_FUNCTION (b))
{
fprintf_filtered (outfile, " %s", SYMBOL_NAME (BLOCK_FUNCTION (b)));
if (SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)) != NULL)
b = BLOCKVECTOR_BLOCK (bv, i);
depth = block_depth (b) * 2;
print_spaces (depth, outfile);
fprintf_filtered (outfile, "block #%03d, object at ", i);
gdb_print_address (b, outfile);
if (BLOCK_SUPERBLOCK (b))
{
fprintf_filtered (outfile, " %s",
SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)));
fprintf_filtered (outfile, " under ");
gdb_print_address (BLOCK_SUPERBLOCK (b), outfile);
}
blen = BLOCK_NSYMS (b);
fprintf_filtered (outfile, ", %d syms in ", blen);
print_address_numeric (BLOCK_START (b), 1, outfile);
fprintf_filtered (outfile, "..");
print_address_numeric (BLOCK_END (b), 1, outfile);
if (BLOCK_FUNCTION (b))
{
fprintf_filtered (outfile, ", function %s", SYMBOL_NAME (BLOCK_FUNCTION (b)));
if (SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)) != NULL)
{
fprintf_filtered (outfile, ", %s",
SYMBOL_DEMANGLED_NAME (BLOCK_FUNCTION (b)));
}
}
if (BLOCK_GCC_COMPILED(b))
fprintf_filtered (outfile, ", compiled with gcc%d", BLOCK_GCC_COMPILED(b));
fprintf_filtered (outfile, "\n");
/* Now print each symbol in this block */
for (j = 0; j < blen; j++)
{
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_ALL);
}
}
if (BLOCK_GCC_COMPILED(b))
fprintf_filtered (outfile, " gcc%d compiled", BLOCK_GCC_COMPILED(b));
fprintf_filtered (outfile, "\n");
blen = BLOCK_NSYMS (b);
for (j = 0; j < blen; j++)
{
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_ALL);
}
}
fprintf_filtered (outfile, "\n");
else
{
fprintf_filtered (outfile, "\nBlockvector same as previous symtab\n\n");
}
}
void
@@ -506,7 +527,7 @@ Arguments missing: an output file name and an optional symbol file name");
{
nomem (0);
}
cleanups = make_cleanup (freeargv, (char *) argv);
cleanups = make_cleanup ((make_cleanup_func) freeargv, (char *) argv);
if (argv[0] != NULL)
{
@@ -524,7 +545,7 @@ Arguments missing: an output file name and an optional symbol file name");
outfile = gdb_fopen (filename, FOPEN_WT);
if (outfile == 0)
perror_with_name (filename);
make_cleanup (fclose, (char *) outfile);
make_cleanup ((make_cleanup_func) gdb_fclose, (char *) &outfile);
immediate_quit++;
ALL_SYMTABS (objfile, s)
@@ -552,7 +573,12 @@ print_symbol (args)
{
fprintf_filtered (outfile, "label %s at ", SYMBOL_SOURCE_NAME (symbol));
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1, outfile);
fprintf_filtered (outfile, "\n");
if (SYMBOL_BFD_SECTION (symbol))
fprintf_filtered (outfile, " section %s\n",
bfd_section_name (SYMBOL_BFD_SECTION (symbol)->owner,
SYMBOL_BFD_SECTION (symbol)));
else
fprintf_filtered (outfile, "\n");
return 1;
}
if (SYMBOL_NAMESPACE (symbol) == STRUCT_NAMESPACE)
@@ -592,7 +618,7 @@ print_symbol (args)
switch (SYMBOL_CLASS (symbol))
{
case LOC_CONST:
fprintf_filtered (outfile, "const %ld (0x%lx),",
fprintf_filtered (outfile, "const %ld (0x%lx)",
SYMBOL_VALUE (symbol),
SYMBOL_VALUE (symbol));
break;
@@ -606,44 +632,53 @@ print_symbol (args)
for (i = 0; i < TYPE_LENGTH (type); i++)
fprintf_filtered (outfile, " %02x",
(unsigned)SYMBOL_VALUE_BYTES (symbol) [i]);
fprintf_filtered (outfile, ",");
}
break;
case LOC_STATIC:
fprintf_filtered (outfile, "static at ");
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1,outfile);
fprintf_filtered (outfile, ",");
if (SYMBOL_BFD_SECTION (symbol))
fprintf_filtered (outfile, " section %s",
bfd_section_name
(SYMBOL_BFD_SECTION (symbol)->owner,
SYMBOL_BFD_SECTION (symbol)));
break;
case LOC_INDIRECT:
fprintf_filtered (outfile, "extern global at *(");
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1,outfile);
fprintf_filtered (outfile, "),");
break;
case LOC_REGISTER:
fprintf_filtered (outfile, "register %ld,", SYMBOL_VALUE (symbol));
fprintf_filtered (outfile, "register %ld", SYMBOL_VALUE (symbol));
break;
case LOC_ARG:
fprintf_filtered (outfile, "arg at offset 0x%lx,",
fprintf_filtered (outfile, "arg at offset 0x%lx",
SYMBOL_VALUE (symbol));
break;
case LOC_LOCAL_ARG:
fprintf_filtered (outfile, "arg at offset 0x%lx from fp,",
fprintf_filtered (outfile, "arg at offset 0x%lx from fp",
SYMBOL_VALUE (symbol));
break;
case LOC_REF_ARG:
fprintf_filtered (outfile, "reference arg at 0x%lx,", SYMBOL_VALUE (symbol));
fprintf_filtered (outfile, "reference arg at 0x%lx", SYMBOL_VALUE (symbol));
break;
case LOC_REGPARM:
fprintf_filtered (outfile, "parameter register %ld,", SYMBOL_VALUE (symbol));
fprintf_filtered (outfile, "parameter register %ld", SYMBOL_VALUE (symbol));
break;
case LOC_REGPARM_ADDR:
fprintf_filtered (outfile, "address parameter register %ld,", SYMBOL_VALUE (symbol));
fprintf_filtered (outfile, "address parameter register %ld", SYMBOL_VALUE (symbol));
break;
case LOC_LOCAL:
fprintf_filtered (outfile, "local at offset 0x%lx,",
fprintf_filtered (outfile, "local at offset 0x%lx",
SYMBOL_VALUE (symbol));
break;
@@ -653,7 +688,7 @@ print_symbol (args)
break;
case LOC_BASEREG_ARG:
fprintf_filtered (outfile, "arg at 0x%lx from register %d,",
fprintf_filtered (outfile, "arg at 0x%lx from register %d",
SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
break;
@@ -663,16 +698,29 @@ print_symbol (args)
case LOC_LABEL:
fprintf_filtered (outfile, "label at ");
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1, outfile);
if (SYMBOL_BFD_SECTION (symbol))
fprintf_filtered (outfile, " section %s",
bfd_section_name
(SYMBOL_BFD_SECTION (symbol)->owner,
SYMBOL_BFD_SECTION (symbol)));
break;
case LOC_BLOCK:
fprintf_filtered (outfile, "block (object ");
fprintf_filtered (outfile, "block object ");
gdb_print_address (SYMBOL_BLOCK_VALUE (symbol), outfile);
fprintf_filtered (outfile, ") starting at ");
fprintf_filtered (outfile, ", ");
print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (symbol)),
1,
outfile);
fprintf_filtered (outfile, ",");
fprintf_filtered (outfile, "..");
print_address_numeric (BLOCK_END (SYMBOL_BLOCK_VALUE (symbol)),
1,
outfile);
if (SYMBOL_BFD_SECTION (symbol))
fprintf_filtered (outfile, " section %s",
bfd_section_name
(SYMBOL_BFD_SECTION (symbol)->owner,
SYMBOL_BFD_SECTION (symbol)));
break;
case LOC_UNRESOLVED:
@@ -699,7 +747,7 @@ maintenance_print_psymbols (args, from_tty)
int from_tty;
{
char **argv;
GDB_FILE *outfile;
GDB_FILE *outfile;
struct cleanup *cleanups;
char *symname = NULL;
char *filename = DEV_TTY;
@@ -716,7 +764,7 @@ maintenance_print_psymbols (args, from_tty)
{
nomem (0);
}
cleanups = make_cleanup (freeargv, (char *) argv);
cleanups = make_cleanup ((make_cleanup_func) freeargv, (char *) argv);
if (argv[0] != NULL)
{
@@ -734,7 +782,7 @@ maintenance_print_psymbols (args, from_tty)
outfile = gdb_fopen (filename, FOPEN_WT);
if (outfile == 0)
perror_with_name (filename);
make_cleanup (fclose, outfile);
make_cleanup ((make_cleanup_func) gdb_fclose, &outfile);
immediate_quit++;
ALL_PSYMTABS (objfile, ps)
@@ -789,6 +837,9 @@ print_partial_symbols (p, count, what, outfile)
case LOC_STATIC:
fputs_filtered ("static", outfile);
break;
case LOC_INDIRECT:
fputs_filtered ("extern global", outfile);
break;
case LOC_REGISTER:
fputs_filtered ("register", outfile);
break;
@@ -833,10 +884,8 @@ print_partial_symbols (p, count, what, outfile)
break;
}
fputs_filtered (", ", outfile);
/* FIXME-32x64: Need to use SYMBOL_VALUE_ADDRESS, etc.; this
could be 32 bits when some of the other fields in the union
are 64. */
fprintf_filtered (outfile, "0x%lx\n", SYMBOL_VALUE (*p));
print_address_numeric (SYMBOL_VALUE_ADDRESS (*p), 1, outfile);
fprintf_filtered (outfile, "\n");
p++;
}
}
@@ -863,7 +912,7 @@ maintenance_print_msymbols (args, from_tty)
{
nomem (0);
}
cleanups = make_cleanup (freeargv, argv);
cleanups = make_cleanup ((make_cleanup_func) freeargv, argv);
if (argv[0] != NULL)
{
@@ -881,7 +930,7 @@ maintenance_print_msymbols (args, from_tty)
outfile = gdb_fopen (filename, FOPEN_WT);
if (outfile == 0)
perror_with_name (filename);
make_cleanup (fclose, outfile);
make_cleanup ((make_cleanup_func) gdb_fclose, &outfile);
immediate_quit++;
ALL_OBJFILES (objfile)