summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/mdebugread.c77
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