* configure.in: Check for working mmap, ansi headers, string.h,

strings.h, and memory.h.
* configure: Regenerated.

* gdb_stat.h: New file, "portable" <sys/stat.h>.
* gdb_string.h: New file, "portable" <string.h>.

* altos-xdep.c, arm-tdep.c, arm-xdep.c, convex-tdep.c,
convex-xdep.c, coredep.c, cxux-nat.c, dbxread.c, exec.c,
gould-xdep.c, hppa-tdep.c, i386aix-nat.c, i386b-nat.c,
i386mach-nat.c, i386v-nat.c, infptrace.c, m88k-nat.c, main.c,
mdebugread.c, objfiles.c, os9kread.c, procfs.c, pyr-xdep.c,
rs6000-nat.c, source.c, standalone.c, stuff.c, sun386-nat.c,
symfile.c, symm-nat.c, symm-tdep.c, symtab.c, top.c, ultra3-nat.c,
ultra3-xdep.c, umax-xdep.c, xcoffread.c: Include "gdb_stat.h"
instead of <sys/stat.h>.

* alpha-tdep.c, breakpoint.c, buildsym.c, c-typeprint.c,
ch-typeprint.c, coffread.c, command.c, core-sol2.c, core-svr4.c,
core.c, corelow.c, cp-valprint.c, dbxread.c, dcache.c, demangle.c,
dpx2-nat.c, dstread.c, dwarfread.c, elfread.c, environ.c, eval.c,
exec.c, f-lang.c, f-typeprint.c, f-valprint.c, findvar.c,
fork-child.c, gdbtypes.c, hpread.c, i386-tdep.c, infcmd.c,
inflow.c, infptrace.c, infrun.c, irix5-nat.c, language.c,
m2-typeprint.c, main.c, mdebugread.c, minsyms.c, mipsread.c,
monitor.c, nlmread.c, objfiles.c, os9kread.c, osfsolib.c, parse.c,
printcmd.c, procfs.c, regex.c, remote-adapt.c, remote-arc.c,
remote-array.c, remote-bug.c, remote-e7000.c, remote-eb.c,
remote-es.c, remote-hms.c, remote-mm.c, remote-os9k.c,
remote-pa.c, remote-sim.c, remote-st.c, remote-udi.c,
remote-utils.c, remote-vx.c, remote-vx29k.c, remote-vx68.c,
remote-vx960.c, remote-vxmips.c, remote-vxsparc.c, remote.c,
solib.c, somread.c, source.c, stabsread.c, stack.c, symfile.c,
symmisc.c, symtab.c, target.c, top.c, typeprint.c, utils.c,
valarith.c, valops.c, valprint.c, values.c, xcoffread.c: Include
"gdb_string.h" instead of <string.h>.
* gdbtk.c: Likewise.

* config/xm-sysv4.h, i386/xm-ptx.h, m68k/xm-sun3os4.h,
sparc/xm-sun4os4.h (HAVE_MMAP): Removed.

* config/xm-lynx.h, config/i386/xm-ptx.h,
config/m68k/nm-apollo68b.h, config/m68k/xm-hp300hpux.h,
config/mips/xm-irix3.h, config/mips/xm-mips.h,
config/mips/xm-news-mips.h, config/mips/xm-riscos.h,
config/pa/hppah.h, config/rs6000/xm-rs6000.h,
config/sparc/xm-sun4os4.h, config/sparc/xm-sun4sol2.h,
config/vax/xm-vaxbsd.h, config/vax/xm-vaxult.h,
config/vax/xm-vaxult2.h (MEM_FNS_DECLARED): Removed.
* config/mips/xm-irix3.h, config/mips/xm-mips.h,
config/pa/xm-hppah.h (memcpy, memset): Removed declarations.
This commit is contained in:
J.T. Conklin 1995-08-01 20:14:27 +00:00
parent a1bdcf913a
commit 2b57629364
137 changed files with 2207 additions and 1157 deletions

View file

@ -1,5 +1,6 @@
/* Do various things to symbol tables (other than lookup), for GDB.
Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
Free Software Foundation, Inc.
This file is part of GDB.
@ -28,7 +29,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "obstack.h"
#include "language.h"
#include <string.h>
#include "gdb_string.h"
#ifndef DEV_TTY
#define DEV_TTY "/dev/tty"
@ -234,6 +235,9 @@ dump_msymbols (objfile, outfile)
case mst_text:
ms_type = 'T';
break;
case mst_solib_trampoline:
ms_type = 'S';
break;
case mst_data:
ms_type = 'D';
break;
@ -262,6 +266,10 @@ dump_msymbols (objfile, outfile)
{
fprintf_filtered (outfile, " %s", SYMBOL_DEMANGLED_NAME (msymbol));
}
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
if (msymbol->filename)
fprintf_filtered (outfile, " %s", msymbol->filename);
#endif
fputs_filtered ("\n", outfile);
}
if (objfile -> minimal_symbol_count != index)
@ -282,7 +290,7 @@ dump_psymtab (objfile, psymtab, outfile)
fprintf_filtered (outfile, "\nPartial symtab for source file %s ",
psymtab -> filename);
fprintf_filtered (outfile, "(object )");
fprintf_filtered (outfile, "(object ");
gdb_print_address (psymtab, outfile);
fprintf_filtered (outfile, ")\n\n");
fprintf_unfiltered (outfile, " Read from object file %s (",
@ -296,22 +304,26 @@ dump_psymtab (objfile, psymtab, outfile)
" Full symtab was read (at ");
gdb_print_address (psymtab->symtab, outfile);
fprintf_filtered (outfile, " by function at ");
gdb_print_address (psymtab->read_symtab, outfile);
gdb_print_address ((PTR)psymtab->read_symtab, outfile);
fprintf_filtered (outfile, ")\n");
}
fprintf_filtered (outfile, " Relocate symbols by ");
for (i = 0; i < psymtab->objfile->num_sections; ++i)
{
if (i != 0)
fprintf_filtered (outfile, ", ");
wrap_here (" ");
print_address_numeric (ANOFFSET (psymtab->section_offsets, i), outfile);
fprintf_filtered (outfile, ", ");
print_address_numeric (ANOFFSET (psymtab->section_offsets, i),
1,
outfile);
}
fprintf_filtered (outfile, "\n");
fprintf_filtered (outfile, " Symbols cover text addresses ");
print_address_numeric (psymtab->textlow, outfile);
print_address_numeric (psymtab->textlow, 1, outfile);
fprintf_filtered (outfile, "-");
print_address_numeric (psymtab->texthigh, outfile);
print_address_numeric (psymtab->texthigh, 1, outfile);
fprintf_filtered (outfile, "\n");
fprintf_filtered (outfile, " Depends on %d other partial symtabs.\n",
psymtab -> number_of_dependencies);
@ -365,7 +377,7 @@ dump_symtab (objfile, symtab, outfile)
for (i = 0; i < len; i++)
{
fprintf_filtered (outfile, " line %d at ", l->item[i].line);
print_address_numeric (l->item[i].pc, outfile);
print_address_numeric (l->item[i].pc, 1, outfile);
fprintf_filtered (outfile, "\n");
}
}
@ -382,9 +394,9 @@ dump_symtab (objfile, symtab, outfile)
gdb_print_address (b, outfile);
fprintf_filtered (outfile, ") ");
fprintf_filtered (outfile, "[");
print_address_numeric (BLOCK_START (b), outfile);
print_address_numeric (BLOCK_START (b), 1, outfile);
fprintf_filtered (outfile, "..");
print_address_numeric (BLOCK_END (b), outfile);
print_address_numeric (BLOCK_END (b), 1, outfile);
fprintf_filtered (outfile, "]");
if (BLOCK_SUPERBLOCK (b))
{
@ -403,7 +415,7 @@ dump_symtab (objfile, symtab, outfile)
}
if (BLOCK_GCC_COMPILED(b))
fprintf_filtered (outfile, " gcc%d compiled", BLOCK_GCC_COMPILED(b));
fprintf_filtered ('\n', outfile);
fprintf_filtered (outfile, "\n");
blen = BLOCK_NSYMS (b);
for (j = 0; j < blen; j++)
{
@ -435,7 +447,8 @@ maintenance_print_symbols (args, from_tty)
if (args == NULL)
{
error ("print-symbols takes an output file name and optional symbol file name");
error ("\
Arguments missing: an output file name and an optional symbol file name");
}
else if ((argv = buildargv (args)) == NULL)
{
@ -486,7 +499,7 @@ print_symbol (args)
if (SYMBOL_NAMESPACE (symbol) == LABEL_NAMESPACE)
{
fprintf_filtered (outfile, "label %s at ", SYMBOL_SOURCE_NAME (symbol));
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), outfile);
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1, outfile);
fprintf_filtered (outfile, "\n");
return 1;
}
@ -546,7 +559,7 @@ print_symbol (args)
case LOC_STATIC:
fprintf_filtered (outfile, "static at ");
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), outfile);
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1,outfile);
fprintf_filtered (outfile, ",");
break;
@ -596,7 +609,7 @@ print_symbol (args)
case LOC_LABEL:
fprintf_filtered (outfile, "label at ");
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), outfile);
print_address_numeric (SYMBOL_VALUE_ADDRESS (symbol), 1, outfile);
break;
case LOC_BLOCK:
@ -604,6 +617,7 @@ print_symbol (args)
gdb_print_address (SYMBOL_BLOCK_VALUE (symbol), outfile);
fprintf_filtered (outfile, ") starting at ");
print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (symbol)),
1,
outfile);
fprintf_filtered (outfile, ",");
break;
@ -834,6 +848,92 @@ maintenance_print_objfiles (ignore, from_tty)
immediate_quit--;
}
/* Check consistency of psymtabs and symtabs. */
void
maintenance_check_symtabs (ignore, from_tty)
char *ignore;
int from_tty;
{
register struct symbol *sym;
register struct partial_symbol *psym;
register struct symtab *s = NULL;
register struct partial_symtab *ps;
struct blockvector *bv;
register struct objfile *objfile;
register struct block *b;
int length;
ALL_PSYMTABS (objfile, ps)
{
s = PSYMTAB_TO_SYMTAB(ps);
if (s == NULL)
continue;
bv = BLOCKVECTOR (s);
b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
psym = ps->objfile->static_psymbols.list + ps->statics_offset;
length = ps->n_static_syms;
while (length--)
{
sym = lookup_block_symbol (b, SYMBOL_NAME (psym),
SYMBOL_NAMESPACE (psym));
if (!sym)
{
printf_filtered ("Static symbol `");
puts_filtered (SYMBOL_NAME (psym));
printf_filtered ("' only found in ");
puts_filtered (ps->filename);
printf_filtered (" psymtab\n");
}
psym++;
}
b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
psym = ps->objfile->global_psymbols.list + ps->globals_offset;
length = ps->n_global_syms;
while (length--)
{
sym = lookup_block_symbol (b, SYMBOL_NAME (psym),
SYMBOL_NAMESPACE (psym));
if (!sym)
{
printf_filtered ("Global symbol `");
puts_filtered (SYMBOL_NAME (psym));
printf_filtered ("' only found in ");
puts_filtered (ps->filename);
printf_filtered (" psymtab\n");
}
psym++;
}
if (ps->texthigh < ps->textlow)
{
printf_filtered ("Psymtab ");
puts_filtered (ps->filename);
printf_filtered (" covers bad range ");
print_address_numeric (ps->textlow, 1, stdout);
printf_filtered (" - ");
print_address_numeric (ps->texthigh, 1, stdout);
printf_filtered ("\n");
continue;
}
if (ps->texthigh == 0)
continue;
if (ps->textlow < BLOCK_START (b) || ps->texthigh > BLOCK_END (b))
{
printf_filtered ("Psymtab ");
puts_filtered (ps->filename);
printf_filtered (" covers ");
print_address_numeric (ps->textlow, 1, stdout);
printf_filtered (" - ");
print_address_numeric (ps->texthigh, 1, stdout);
printf_filtered (" but symtab covers only ");
print_address_numeric (BLOCK_START (b), 1, stdout);
printf_filtered (" - ");
print_address_numeric (BLOCK_END (b), 1, stdout);
printf_filtered ("\n");
}
}
}
/* Return the nexting depth of a block within other blocks in its symtab. */