mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-30 05:23:49 +08:00
* mipsread.c (parse_symbol): Put stStaticProc symbols in minimal
symbols as mst_file_text.
This commit is contained in:
parent
8f22c1af21
commit
1c8961dd35
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user