* xcoffread.c: Nuke NO_DEFINE_SYMBOL code. There is no going back.

* stabsread.c (define_symbol): 'R' is synonym for 'P', not 'r'.
	xcoffread.c (process_xcoff_symbol, case C_RPSYM):
	Don't muck with SYMBOL_CLASS.
This commit is contained in:
Jim Kingdon 1993-04-19 17:39:24 +00:00
parent b82ea042b4
commit 058eb7667b
3 changed files with 13 additions and 96 deletions

View File

@ -1,3 +1,11 @@
Sun Apr 18 10:39:35 1993 Jim Kingdon (kingdon@cygnus.com)
* xcoffread.c: Nuke NO_DEFINE_SYMBOL code. There is no going back.
* stabsread.c (define_symbol): 'R' is synonym for 'P', not 'r'.
xcoffread.c (process_xcoff_symbol, case C_RPSYM):
Don't muck with SYMBOL_CLASS.
Fri Apr 16 17:38:33 1993 Stu Grossman (grossman@cygnus.com)
* munch: Don't use head command. It doesn't exist everywhere.

View File

@ -833,6 +833,7 @@ define_symbol (valu, string, desc, type, objfile)
#endif /* no BELIEVE_PCC_PROMOTION_TYPE. */
case 'R':
case 'P':
/* acc seems to use P to delare the prototypes of functions that
are referenced by this file. gdb is not prepared to deal
@ -852,7 +853,6 @@ define_symbol (valu, string, desc, type, objfile)
add_symbol_to_list (sym, &local_symbols);
break;
case 'R':
case 'r':
/* Register variable (either global or local). */
SYMBOL_CLASS (sym) = LOC_REGISTER;

View File

@ -54,12 +54,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "coff/rs6000.h" /* FIXME, raw file-format guts of xcoff */
/* Define this if you want gdb use the old xcoff symbol processing. This
way it won't use common `define_symbol()' function and Sun dbx stab
string grammar. And likely it won't be able to do G++ debugging. */
/* #define NO_DEFINE_SYMBOL 1 */
/* Define this if you want gdb to ignore typdef stabs. This was needed for
one of Transarc, to reduce the size of the symbol table. Types won't be
recognized, but tag names will be. */
@ -1384,25 +1378,7 @@ function_entry_point:
case C_FUN:
#ifdef NO_DEFINE_SYMBOL
/* For a function stab, just save its type in `fcn_type_saved', and leave
it for the `.bf' processing. */
{
char *pp = (char*) index (cs->c_name, ':');
if (!pp || ( *(pp+1) != 'F' && *(pp+1) != 'f'))
fatal ("Unrecognized stab");
pp += 2;
if (fcn_type_saved)
fatal ("Unprocessed function type");
fcn_type_saved = lookup_function_type (read_type (&pp, objfile));
}
#else
fcn_stab_saved = *cs;
#endif
break;
@ -1472,26 +1448,10 @@ function_entry_point:
new = push_context (0, fcn_start_addr);
#ifdef NO_DEFINE_SYMBOL
new->name = process_xcoff_symbol (&fcn_cs_saved, objfile);
/* Between a function symbol and `.bf', there always will be a function
stab. We save function type when processing that stab. */
if (fcn_type_saved == NULL) {
printf ("Unknown function type: symbol 0x%x\n", cs->c_symnum);
SYMBOL_TYPE (new->name) = lookup_function_type (builtin_type_int);
}
else {
SYMBOL_TYPE (new->name) = fcn_type_saved;
fcn_type_saved = NULL;
}
#else
new->name = define_symbol
(fcn_cs_saved.c_value, fcn_stab_saved.c_name, 0, 0, objfile);
if (new->name != NULL)
SYMBOL_SECTION (new->name) = cs->c_secnum;
#endif
}
else if (STREQ (cs->c_name, ".ef")) {
@ -1679,7 +1639,7 @@ process_xcoff_symbol (cs, objfile)
case C_DECL: /* a type decleration?? */
#if defined(NO_TYPEDEFS) || defined(NO_DEFINE_SYMBOL)
#if defined(NO_TYPEDEFS)
qq = (char*) strchr (name, ':');
if (!qq) /* skip if there is no ':' */
return NULL;
@ -1716,7 +1676,6 @@ process_xcoff_symbol (cs, objfile)
if (nameless)
return;
#ifdef NO_TYPEDEFS
/* Transarc wants to eliminate type definitions from the symbol table.
Limited debugging capabilities, but faster symbol table processing
and less memory usage. Note that tag definitions (starting with
@ -1732,8 +1691,6 @@ process_xcoff_symbol (cs, objfile)
return;
}
#endif /* !NO_TYPEDEFS */
/* read_type() will return null if type (or tag) definition was
unnnecessarily duplicated. Also, if the symbol doesn't have a name,
there is no need to keep it in symbol table. */
@ -1786,7 +1743,7 @@ process_xcoff_symbol (cs, objfile)
}
break;
#else /* !NO_DEFINE_SYMBOL */
#else /* !NO_TYPEDEFS */
sym = define_symbol (cs->c_value, cs->c_name, 0, 0, objfile);
if (sym != NULL)
SYMBOL_SECTION (sym) = cs->c_secnum;
@ -1800,45 +1757,20 @@ process_xcoff_symbol (cs, objfile)
case C_PSYM:
case C_RPSYM:
#ifdef NO_DEFINE_SYMBOL
if (*name == ':' || (pp = (char *) strchr (name, ':')) == NULL)
return NULL;
SYMBOL_NAME (sym) = obsavestring (name, pp-name, &objfile -> symbol_obstack);
SYMBOL_CLASS (sym) = (cs->c_sclass == C_PSYM) ? LOC_ARG : LOC_REGPARM;
pp += 2;
SYMBOL_TYPE (sym) = read_type (&pp, objfile);
SYMBOL_DUP (sym, sym2);
add_symbol_to_list (sym2, &local_symbols);
break;
#else
sym = define_symbol (cs->c_value, cs->c_name, 0, 0, objfile);
if (sym != NULL)
{
SYMBOL_CLASS (sym) =
(cs->c_sclass == C_PSYM) ? LOC_ARG : LOC_REGPARM;
SYMBOL_SECTION (sym) = cs->c_secnum;
}
return sym;
#endif
case C_STSYM:
#ifdef NO_DEFINE_SYMBOL
if (*name == ':' || (pp = (char *) strchr (name, ':')) == NULL)
return NULL;
SYMBOL_NAME (sym) = obsavestring (name, pp-name, &objfile -> symbol_obstack);
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE (sym) += static_block_base;
pp += 2;
SYMBOL_TYPE (sym) = read_type (&pp, objfile);
SYMBOL_DUP (sym, sym2);
add_symbol_to_list
(sym2, within_function ? &local_symbols : &file_symbols);
break;
#else
/* If we are going to use Sun dbx's define_symbol(), we need to
massage our stab string a little. Change 'V' type to 'S' to be
comparible with Sun. */
/* FIXME: I believe this is to avoid a Sun-specific hack somewhere.
Needs more investigation. */
if (*name == ':' || (pp = (char *) index (name, ':')) == NULL)
return NULL;
@ -1852,7 +1784,6 @@ process_xcoff_symbol (cs, objfile)
SYMBOL_SECTION (sym) = static_block_section;
}
return sym;
#endif
case C_LSYM:
if (*name == ':' || (pp = (char *) strchr (name, ':')) == NULL)
@ -1902,27 +1833,6 @@ process_xcoff_symbol (cs, objfile)
case C_RSYM:
pp = (char*) strchr (name, ':');
#ifdef NO_DEFINE_SYMBOL
SYMBOL_CLASS (sym) = LOC_REGISTER;
SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (cs->c_value);
if (pp) {
SYMBOL_NAME (sym) = obsavestring (name, pp-name, &objfile -> symbol_obstack);
pp += 2;
if (*pp)
SYMBOL_TYPE (sym) = read_type (&pp, objfile);
}
else
/* else this is not a stab entry, suppose the type is either
`int' or `float', depending on the register class. */
SYMBOL_TYPE (sym) = (SYMBOL_VALUE (sym) < 32)
? lookup_fundamental_type (objfile, FT_INTEGER)
: lookup_fundamental_type (objfile, FT_FLOAT);
SYMBOL_DUP (sym, sym2);
add_symbol_to_list (sym2, &local_symbols);
break;
#else
if (pp) {
sym = define_symbol (cs->c_value, cs->c_name, 0, 0, objfile);
if (sym != NULL)
@ -1933,7 +1843,6 @@ process_xcoff_symbol (cs, objfile)
complain (&rsym_complaint, name);
return NULL;
}
#endif
default :
complain (&storclass_complaint, cs->c_sclass);