forked from Imagelibrary/binutils-gdb
Create and use macros for iterating on symtabs, psymtabs, msymbols.
* minsyms.c (iterate_over_msymbols): Remove; clunky and slow. * symfile.h, symtab.h (iterate_over_msymbols): Remove prototype * coffread.c (coff_symfile_read): iterate_over_symtabs => ALL_SYMTABS. (patch_opaque_types): Avoid dummy args and result. * objfiles.c (have_partial_symbols, have_full_symbols, have_minimal_symbols): explicit iteration => ALL_OBJFILES; simplify. (iterate_over_objfiles, iterate_over_symtabs, iterate_over_psymtabs): Remove, clunky and slow. * objfiles.h: Replace iterate_over_* prototypes with ALL_SYMTABS, ALL_PSYMTABS, and ALL_MSYMBOLS macros. * symmisc.c (dump_symtab, dump_psymtab, dump_msymbols, dump_objfile): Remove dummy args and results. Move filename comparisons to callers. (printsyms_command, printpsyms_command, printmsyms_command, printobjfiles_command): iterate_over_* => ALL_*. Compare filenames. * symtab.c (lookup_symtab_1, lookup_symtab, lookup_partial_symtab, lookup_symbol, find_main_psymtab, find_pc_symtab, sources_info, list_symbols, make_symbol_completion_list): Replace explicit iteration with ALL_SYMTABS, ALL_PSYMTABS, or ALL_MSYMBOLS. Eliminate Dijkstra flag crap, break out of loops with gotos. (lookup_symtab_1): Protect '/' tests from short filenames. (cplus_mangled_symbol): Move inline into lookup_symbol. * xcoffexec.c (relocate_objfile_msymbols): Remove poor hack. (relocate_minimal_symbol): Move inline to vmap_symtab. (vmap_symtab): Replace iteration with ALL_OBJFILES, iterate_over_msymbols with ALL_MSYMBOLS. Misc cleanup prior to release. * dwarfread.c (dwarf_build_psymtabs): Remove mainline test. * mipsread.c (compare_symtabs, compare_psymtabs): Remove, unused. * mipsread.c: Add prototypes for all static functions. * symmisc.c (dump_symtab_lines, dump_symtabs, dump_last_symtab, dump_blockvector, dump_block, dump_addrchass, dump_namespace, dump_symbol, dump_type, dump_linetable, dump_strtbl): Remove, unused. * xcoffread.c (dump_symtab_lines, dump_symtabs, dump_last_symtab, dump_blockvector, dump_block, dump_addrchass, dump_namespace, dump_symbol, dump_type, dump_linetable, dump_strtbl): Remove 2nd unused copy! * buildsym.c (define_symbol): Handle global register variables (from Pierre Willard). Complain if register numbers are too large.
This commit is contained in:
181
gdb/xcoffread.c
181
gdb/xcoffread.c
@@ -313,7 +313,7 @@ struct pending_stabs *stabs;
|
||||
struct symbol *sym = find_symbol_in_list (symbols, name, pp-name);
|
||||
if (!sym) {
|
||||
;
|
||||
/* printf ("ERROR! stab symbol not found!\n"); /* FIXME */
|
||||
/* printf ("ERROR! stab symbol not found!\n"); */ /* FIXME */
|
||||
/* The above is a false alarm. There are cases the we can have
|
||||
a stab, without its symbol. xlc generates this for the extern
|
||||
definitions in inner blocks. */
|
||||
@@ -2387,182 +2387,9 @@ smash_to_pointer_type (type, to_type)
|
||||
|
||||
#else /* IBM6000_HOST */
|
||||
struct type *
|
||||
builtin_type (pp)
|
||||
char **pp;
|
||||
builtin_type (ignore)
|
||||
char **ignore;
|
||||
{
|
||||
fatal ("internals eror: builtin_type called!");
|
||||
fatal ("GDB internal eror: builtin_type called on non-RS/6000!");
|
||||
}
|
||||
#endif /* IBM6000_HOST */
|
||||
|
||||
|
||||
#define DEBUG 1
|
||||
|
||||
#if defined (DEBUG) && defined (IBM6000_HOST) /* Needs both defined */
|
||||
void
|
||||
dump_strtbl ()
|
||||
{
|
||||
int ii;
|
||||
printf ("===STRING TABLE DUMP...\n\n");
|
||||
for ( ii=0; ii < strtbl_len; ++ii )
|
||||
printf ("%c", isprint (*(strtbl+ii)) ? *(strtbl+ii) : ' ');
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
void
|
||||
dump_linetable (ltb)
|
||||
struct linetable *ltb;
|
||||
{
|
||||
int ii;
|
||||
for (ii=0; ii < ltb->nitems; ++ii)
|
||||
printf ("line: %d, addr: 0x%x\n", ltb->item[ii].line, ltb->item[ii].pc);
|
||||
}
|
||||
|
||||
void
|
||||
dump_type (typeP)
|
||||
struct type *typeP;
|
||||
{
|
||||
printf ("0x%x: name: %s\n", typeP, typeP->name ? typeP->name : "(nil)");
|
||||
}
|
||||
|
||||
char *dump_namespace ();
|
||||
char *dump_addrclass ();
|
||||
|
||||
void
|
||||
dump_symbol (pp)
|
||||
struct symbol *pp;
|
||||
{
|
||||
printf (" sym: %s\t%s,\t%s\ttype: 0x%x, val: 0x%x end: 0x%x\n",
|
||||
pp->name, dump_namespace (pp->namespace),
|
||||
dump_addrclass (pp->class), pp->type,
|
||||
SYMBOL_CLASS(pp) == LOC_BLOCK ? BLOCK_START(SYMBOL_BLOCK_VALUE(pp))
|
||||
: pp->value.value,
|
||||
SYMBOL_CLASS(pp) == LOC_BLOCK ? BLOCK_END(SYMBOL_BLOCK_VALUE(pp)) : 0);
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
dump_namespace (ns)
|
||||
int ns;
|
||||
{
|
||||
static char *ns_name [] = {
|
||||
"UNDEF_NS", "VAR_NS", "STRUCT_NS", "LABEL_NS"};
|
||||
|
||||
switch (ns) {
|
||||
case UNDEF_NAMESPACE:
|
||||
case VAR_NAMESPACE:
|
||||
case STRUCT_NAMESPACE:
|
||||
case LABEL_NAMESPACE:
|
||||
return ns_name[ns];
|
||||
}
|
||||
|
||||
return "***ERROR***";
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
dump_addrclass (ac)
|
||||
int ac; /* address class */
|
||||
{
|
||||
static char *ac_name [] = {
|
||||
"LOC_UNDEF",
|
||||
"LOC_CONST",
|
||||
"LOC_STATIC",
|
||||
"LOC_REGISTER",
|
||||
"LOC_ARG",
|
||||
"LOC_REF_ARG",
|
||||
"LOC_REGPARM",
|
||||
"LOC_LOCAL",
|
||||
"LOC_TYPEDEF",
|
||||
"LOC_LABEL",
|
||||
"LOC_BLOCK",
|
||||
"LOC_CONST_BYTES",
|
||||
"LOC_LOCAL_ARG",
|
||||
};
|
||||
switch (ac) {
|
||||
case LOC_UNDEF:
|
||||
case LOC_CONST:
|
||||
case LOC_STATIC:
|
||||
case LOC_REGISTER:
|
||||
case LOC_ARG:
|
||||
case LOC_REF_ARG:
|
||||
case LOC_REGPARM:
|
||||
case LOC_LOCAL:
|
||||
case LOC_TYPEDEF:
|
||||
case LOC_LABEL:
|
||||
case LOC_BLOCK:
|
||||
case LOC_CONST_BYTES:
|
||||
case LOC_LOCAL_ARG:
|
||||
return ac_name [ac];
|
||||
}
|
||||
return "***ERROR***";
|
||||
}
|
||||
|
||||
void
|
||||
dump_block (pp)
|
||||
struct block *pp;
|
||||
{
|
||||
int ii;
|
||||
printf ("BLOCK..: start: 0x%x, end: 0x%x\n", pp->startaddr, pp->endaddr);
|
||||
for (ii=0; ii < pp->nsyms; ++ii)
|
||||
dump_symbol (pp->sym[ii]);
|
||||
}
|
||||
|
||||
void
|
||||
dump_blockvector (pp)
|
||||
struct blockvector *pp;
|
||||
{
|
||||
int ii;
|
||||
for (ii=0; ii < pp->nblocks; ++ii)
|
||||
dump_block (pp->block [ii]);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
dump_last_symtab (pp)
|
||||
struct symtab *pp;
|
||||
{
|
||||
for ( ; pp; pp = pp->next) {
|
||||
if ( pp->next == 0 ) {
|
||||
printf ("SYMTAB NAME: %s\n", pp->filename);
|
||||
dump_blockvector (pp->blockvector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dump_symtabs (pp)
|
||||
struct symtab *pp;
|
||||
{
|
||||
for ( ; pp; pp = pp->next) {
|
||||
printf ("SYMTAB NAME: %s\n", pp->filename ? pp->filename : "(nil)");
|
||||
/* if (pp->linetable)
|
||||
dump_linetable (pp->linetable); */
|
||||
dump_blockvector (pp->blockvector);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dump_symtab_lines (pp)
|
||||
struct symtab *pp;
|
||||
{
|
||||
for ( ; pp; pp = pp->next) {
|
||||
printf ("SYMTAB NAME: %s\n", pp->filename ? pp->filename : "(nil)");
|
||||
if (pp->linetable)
|
||||
dump_linetable (pp->linetable);
|
||||
/* dump_blockvector (pp->blockvector); */
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dump_msymbols (of)
|
||||
struct objfile *of;
|
||||
{
|
||||
int ii;
|
||||
for (ii=0; ii < of->minimal_symbol_count; ++ii)
|
||||
printf ("name: %s, addr: 0x%x, info: 0x%x\n",
|
||||
of->msymbols[ii].name,
|
||||
of->msymbols[ii].address,
|
||||
of->msymbols[ii].info );
|
||||
}
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
Reference in New Issue
Block a user