diff options
-rw-r--r-- | gdb/mdebugread.c | 77 |
1 files changed, 22 insertions, 55 deletions
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index 92557d28bff..b5a15c38d7d 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -751,33 +751,6 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, case stProc: /* Procedure, usually goes into global block */ case stStaticProc: /* Static procedure, goes into current block */ - /* Make sure this is a "real" procedure. Otherwise, skip it. */ - if (sh->st == stProc && sh->sc != scText) - { - char *ext_tsym = ext_sh; - int keep_counting = 1; - SYMR tsym; - - while (keep_counting) - { - ext_tsym += external_sym_size; - (*swap_sym_in) (cur_bfd, ext_tsym, &tsym); - count++; - switch (tsym.st) - { - case stParam: - break; - case stEnd: - keep_counting = 0; - break; - default: - complaint (&symfile_complaints, - "unknown symbol type 0x%x", sh->st); - break; - } - } - break; - } s = new_symbol (name); SYMBOL_NAMESPACE (s) = VAR_NAMESPACE; SYMBOL_CLASS (s) = LOC_BLOCK; @@ -3350,34 +3323,6 @@ parse_partial_symbols (struct objfile *objfile) /* FALLTHROUGH */ case stProc: - /* Ignore all parameter symbol records. */ - if (sh.index >= hdr->iauxMax) - { - /* Should not happen, but does when cross-compiling - with the MIPS compiler. FIXME -- pull later. */ - index_complaint (name); - new_sdx = cur_sdx + 1; /* Don't skip at all */ - } - else - new_sdx = AUX_GET_ISYM (fh->fBigendian, - (debug_info->external_aux - + fh->iauxBase - + sh.index)); - - if (new_sdx <= cur_sdx) - { - /* This should not happen either... FIXME. */ - complaint (&symfile_complaints, - "bad proc end in aux found from symbol %s", - name); - new_sdx = cur_sdx + 1; /* Don't skip backward */ - } - - /* Make sure that this stProc entry represents a "real" - procedure. If not, ignore it. */ - if (sh.st == stProc && sh.sc != scText) - goto skip; - /* Usually there is a local and a global stProc symbol for a function. This means that the function name has already been entered into the mimimal symbol table @@ -3400,8 +3345,30 @@ parse_partial_symbols (struct objfile *objfile) &objfile->static_psymbols, 0, sh.value, psymtab_language, objfile); + /* Skip over procedure to next one. */ + if (sh.index >= hdr->iauxMax) + { + /* Should not happen, but does when cross-compiling + with the MIPS compiler. FIXME -- pull later. */ + index_complaint (name); + new_sdx = cur_sdx + 1; /* Don't skip at all */ + } + else + new_sdx = AUX_GET_ISYM (fh->fBigendian, + (debug_info->external_aux + + fh->iauxBase + + sh.index)); procaddr = sh.value; + if (new_sdx <= cur_sdx) + { + /* This should not happen either... FIXME. */ + complaint (&symfile_complaints, + "bad proc end in aux found from symbol %s", + name); + new_sdx = cur_sdx + 1; /* Don't skip backward */ + } + cur_sdx = new_sdx; (*swap_sym_in) (cur_bfd, ((char *) debug_info->external_sym |