* mipsread.c (parse_symbol): Put stStaticProc symbols in minimal

symbols as mst_file_text.
This commit is contained in:
Jim Kingdon 1993-07-26 20:33:35 +00:00
parent 8f22c1af21
commit 1c8961dd35
2 changed files with 54 additions and 26 deletions

View File

@ -1,5 +1,8 @@
Mon Jul 26 13:17:36 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mipsread.c (parse_symbol): Put stStaticProc symbols in minimal
symbols as mst_file_text.
* hppa-tdep.c (pc_in_linker_stub): Return 0 if can't read memory.
* stabsread.c (rs6000_builtin_type): Make logical types be

View File

@ -817,8 +817,14 @@ parse_symbol (sh, ax, ext_sh, bigend)
add_symbol (s, top_stack->cur_block);
break;
case stStaticProc:
/* I believe this is used only for file-local functions.
The comment in symconst.h ("load time only static procs") isn't
particularly clear on this point. */
prim_record_minimal_symbol (name, sh->value, mst_file_text);
/* FALLTHROUGH */
case stProc: /* Procedure, usually goes into global block */
case stStaticProc: /* Static procedure, goes into current block */
s = new_symbol (name);
SYMBOL_NAMESPACE (s) = VAR_NAMESPACE;
SYMBOL_CLASS (s) = LOC_BLOCK;
@ -922,11 +928,12 @@ parse_symbol (sh, ax, ext_sh, bigend)
ecoff_swap_sym_in (cur_bfd, ext_tsym, &tsym);
if (tsym.st == stEnd)
break;
if (tsym.st == stMember)
switch (tsym.st)
{
case stEnd:
goto end_of_fields;
case stMember:
if (nfields == 0 && type_code == TYPE_CODE_UNDEF)
/* If the type of the member is Nil (or Void),
without qualifiers, assume the tag is an
@ -945,14 +952,28 @@ parse_symbol (sh, ax, ext_sh, bigend)
nfields++;
if (tsym.value > max_value)
max_value = tsym.value;
}
else if (tsym.st == stBlock
|| tsym.st == stUnion
|| tsym.st == stEnum
|| tsym.st == stStruct
|| tsym.st == stParsed)
break;
case stTypedef:
case stConstant:
case stStaticProc:
complain (&block_member_complaint, tsym.st);
/* These are said to show up in cfront-generated programs.
Apparently processing them like the following prevents
core dumps. */
/* FALLTHROUGH */
case stBlock:
case stUnion:
case stEnum:
case stStruct:
case stParsed:
{
#if 0
/* This is a no-op; is it trying to tell us something
we should be checking? */
if (tsym.sc == scVariant); /*UNIMPLEMENTED*/
#endif
if (tsym.index != 0)
{
/* This is something like a struct within a
@ -965,9 +986,13 @@ parse_symbol (sh, ax, ext_sh, bigend)
- 1);
}
}
else
break;
default:
complain (&block_member_complaint, tsym.st);
}
}
end_of_fields:;
/* In an stBlock, there is no way to distinguish structs,
unions, and enums at this point. This is a bug in the