mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 19:44:11 +08:00
* stabsread.c (define_symbol): If REG_STRUCT_HAS_ADDR, also
convert a LOC_ARG to a LOC_REF_ARG. Update code which combines 'p' and 'r' symbol descriptors into a single symbol to look for a LOC_REF_ARG. * README, config/sparc/tm-sparc.h: Update comments.
This commit is contained in:
parent
27677e75f4
commit
f261371068
@ -28,10 +28,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
not the structure itself. It (under SunOS4) creates two symbols,
|
||||
which we need to combine to a LOC_REGPARM. Gcc version two (as of
|
||||
1.92) behaves like sun cc. REG_STRUCT_HAS_ADDR is smart enough to
|
||||
distinguish between Sun cc, gcc version 1 and gcc version 2.
|
||||
distinguish between Sun cc, gcc version 1 and gcc version 2. */
|
||||
|
||||
This still doesn't work if the argument is not one passed in a
|
||||
register (i.e. it's the 7th or later argument). */
|
||||
#define REG_STRUCT_HAS_ADDR(gcc_p) (gcc_p != 1)
|
||||
|
||||
/* Sun /bin/cc gets this right as of SunOS 4.1.x. We need to define
|
||||
|
@ -989,7 +989,7 @@ define_symbol (valu, string, desc, type, objfile)
|
||||
{
|
||||
struct symbol *prev_sym;
|
||||
prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
|
||||
if (SYMBOL_CLASS (prev_sym) == LOC_ARG
|
||||
if (SYMBOL_CLASS (prev_sym) == LOC_REF_ARG
|
||||
&& STREQ (SYMBOL_NAME (prev_sym), SYMBOL_NAME(sym)))
|
||||
{
|
||||
SYMBOL_CLASS (prev_sym) = LOC_REGPARM;
|
||||
@ -1181,6 +1181,14 @@ define_symbol (valu, string, desc, type, objfile)
|
||||
|| (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)))
|
||||
SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
|
||||
|
||||
/* Likewise for converting LOC_ARG to LOC_REF_ARG (for the 7th and
|
||||
subsequent arguments on the sparc, for example). */
|
||||
if (SYMBOL_CLASS (sym) == LOC_ARG
|
||||
&& REG_STRUCT_HAS_ADDR (processing_gcc_compilation)
|
||||
&& ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT)
|
||||
|| (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)))
|
||||
SYMBOL_CLASS (sym) = LOC_REF_ARG;
|
||||
|
||||
return sym;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user