* mdebugread.c (psymtab_to_symtab_1): Handle new live range stabs

entries.

        * dbxread.c: More comment cleanups.
        * stabsread.c: Fix various violations of the GNU coding and
        formatting standards.  Update/add comments to make code clearer.
        (resolve_reference): Delete unused function.
        (ref_search_val): Remove function.  It didn't belong in stabsread.c
        (resolve_live_range): No longer returns a value.  Do not add it
        to the live range list until the entire range stab has been parsed.
        (get_substring): Remove duplicate declaration.
        (resolve_symbol_reference): Now static.  Remove unnecessary code
        to deal with cleanups.
         (ref_add): Use xrealloc instea of realloc.
        (process_reference): Reorganize slightly to make clearer.
        * stabsread.h (resolve_symbol_reference): Remove declaration.
        (resolve_reference): Likewise.
        * symtab.c (find_active_alias): New function.
        (lookup_block_symbol): Use find_active_alias.
        * symtab.h (struct range_list): Fix dangling struct live_range
        reference.
        (ref_search_val): Remove decl.

        * symtab.h (struct range_list): Renamed from struct live_range.
        (struct symbol): Remove struct live_range_info substruct.
        Bring the alias list and range list fields up to the toplevel
        as "aliases" and "ranges".
        (SYMBOL_ALIASES, SYMBOL_RANGES): Corresponding changes.
        (SYMBOL_RANGE_START, SYMBOL_RANGE_END, SYMBOL_RANGE_NEXT): Delete.
        * stabsread.c: Corresponding changes.
Bring first round of cleanups over from r5900 branch.
This commit is contained in:
Jeff Law 1997-10-22 23:28:30 +00:00
parent 01c655cc45
commit b84b918329
5 changed files with 176 additions and 149 deletions

View File

@ -1,5 +1,36 @@
Wed Oct 22 13:04:52 1997 Jeffrey A Law (law@cygnus.com) Wed Oct 22 13:04:52 1997 Jeffrey A Law (law@cygnus.com)
* mdebugread.c (psymtab_to_symtab_1): Handle new live range stabs
entries.
* dbxread.c: More comment cleanups.
* stabsread.c: Fix various violations of the GNU coding and
formatting standards. Update/add comments to make code clearer.
(resolve_reference): Delete unused function.
(ref_search_val): Remove function. It didn't belong in stabsread.c
(resolve_live_range): No longer returns a value. Do not add it
to the live range list until the entire range stab has been parsed.
(get_substring): Remove duplicate declaration.
(resolve_symbol_reference): Now static. Remove unnecessary code
to deal with cleanups.
(ref_add): Use xrealloc instea of realloc.
(process_reference): Reorganize slightly to make clearer.
* stabsread.h (resolve_symbol_reference): Remove declaration.
(resolve_reference): Likewise.
* symtab.c (find_active_alias): New function.
(lookup_block_symbol): Use find_active_alias.
* symtab.h (struct range_list): Fix dangling struct live_range
reference.
(ref_search_val): Remove decl.
* symtab.h (struct range_list): Renamed from struct live_range.
(struct symbol): Remove struct live_range_info substruct.
Bring the alias list and range list fields up to the toplevel
as "aliases" and "ranges".
(SYMBOL_ALIASES, SYMBOL_RANGES): Corresponding changes.
(SYMBOL_RANGE_START, SYMBOL_RANGE_END, SYMBOL_RANGE_NEXT): Delete.
* stabsread.c: Corresponding changes.
* dbxread.c: Fix various violations of the GNU coding and * dbxread.c: Fix various violations of the GNU coding and
formatting standards. Update/add comments to make code formatting standards. Update/add comments to make code
clearer. clearer.

View File

@ -2411,10 +2411,6 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
char *s; char *s;
int refnum; int refnum;
/* If defined, store away a pointer to the symbol;
we'll use it later when we resolve references in
"resolve_symbol_reference". */
/* If this stab defines a new reference ID that is not on the /* If this stab defines a new reference ID that is not on the
reference list, then put it on the reference list. reference list, then put it on the reference list.

View File

@ -3297,7 +3297,8 @@ psymtab_to_symtab_1 (pst, filename)
&sh); &sh);
name = debug_info->ss + fh->issBase + sh.iss; name = debug_info->ss + fh->issBase + sh.iss;
valu = sh.value; valu = sh.value;
if (ECOFF_IS_STAB (&sh)) /* XXX This is a hack. It will go away! */
if (ECOFF_IS_STAB (&sh) || (name[0] == '#'))
{ {
int type_code = ECOFF_UNMARK_STAB (sh.index); int type_code = ECOFF_UNMARK_STAB (sh.index);
@ -3309,6 +3310,12 @@ psymtab_to_symtab_1 (pst, filename)
process_one_symbol (type_code, 0, valu, name, process_one_symbol (type_code, 0, valu, name,
pst->section_offsets, pst->objfile); pst->section_offsets, pst->objfile);
} }
/* Similarly a hack. */
else if (name[0] == '#')
{
process_one_symbol (N_SLINE, 0, valu, name,
pst->section_offsets, pst->objfile);
}
if (type_code == N_FUN) if (type_code == N_FUN)
{ {
/* Make up special symbol to contain /* Make up special symbol to contain

View File

@ -176,7 +176,7 @@ static void
add_live_range PARAMS ((struct objfile *, struct symbol *, add_live_range PARAMS ((struct objfile *, struct symbol *,
CORE_ADDR, CORE_ADDR)); CORE_ADDR, CORE_ADDR));
static int static void
resolve_live_range PARAMS ((struct objfile *, struct symbol *, char *)); resolve_live_range PARAMS ((struct objfile *, struct symbol *, char *));
static int static int
@ -188,8 +188,8 @@ ref_search_value PARAMS ((int refnum));
static void static void
ref_init PARAMS ((void)); ref_init PARAMS ((void));
static char * static int
get_substring PARAMS ((char ** p, int c)); resolve_symbol_reference PARAMS ((struct objfile *, struct symbol *, char *));
static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' }; static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' };
static const char vb_name[] = { '_','v','b',CPLUS_MARKER,'\0' }; static const char vb_name[] = { '_','v','b',CPLUS_MARKER,'\0' };
@ -1043,24 +1043,21 @@ resolve_cfront_continuation (objfile, sym, p)
/* End of code added to support parsing of ARM/Cfront stabs strings */ /* End of code added to support parsing of ARM/Cfront stabs strings */
/* This routine fixes up symbol references to point to the original /* This routine fixes up symbol references/aliases to point to the original
symbol definition. symbol definition. */
The main need for this function is to add information for supporting
live range splitting. static int
eg: p : "#7=", "#2=z:r(0,1)" "#2:r(0,1);l(#5,#6),l(#7,#4)" */
int
resolve_symbol_reference (objfile, sym, p) resolve_symbol_reference (objfile, sym, p)
struct objfile * objfile; struct objfile *objfile;
struct symbol * sym; struct symbol *sym;
char * p; char *p;
{ {
int refnum; int refnum;
struct symbol * ref_sym=0; struct symbol *ref_sym=0;
struct cleanup *back_to; struct alias_list *alias;
back_to = make_cleanup (null_cleanup, 0); /* If this is not a symbol reference return now. */
if (*p != '#')
if (*p != '#') /* symbol ref id */
return 0; return 0;
/* Use "#<num>" as the name; we'll fix the name later. /* Use "#<num>" as the name; we'll fix the name later.
@ -1075,11 +1072,16 @@ resolve_symbol_reference (objfile, sym, p)
/*---------------------------------------------------------*/ /*---------------------------------------------------------*/
/* This gets reference name from string. sym may not have a name. */ /* This gets reference name from string. sym may not have a name. */
/* Get the reference number associated with the reference id in the
gdb stab string. From that reference number, get the main/primary
symbol for this alias. */
refnum = process_reference (&p); refnum = process_reference (&p);
ref_sym = ref_search (refnum); ref_sym = ref_search (refnum);
if (!ref_sym) if (!ref_sym)
error ("error: symbol for reference not found.\n"); error ("error: symbol for reference not found.\n");
/* Parse the stab of the referencing symbol /* Parse the stab of the referencing symbol
now that we have the referenced symbol. now that we have the referenced symbol.
Add it as a new symbol and a link back to the referenced symbol. Add it as a new symbol and a link back to the referenced symbol.
@ -1107,8 +1109,30 @@ resolve_symbol_reference (objfile, sym, p)
/*--------------------------------------------------*/ /*--------------------------------------------------*/
/* Add this symbol to the reference list. */ /* Add this symbol to the reference list. */
/*--------------------------------------------------*/ /*--------------------------------------------------*/
SYMBOL_ALIASES (sym) = SYMBOL_ALIASES (ref_sym);
SYMBOL_ALIASES (ref_sym) = sym; alias = (struct alias_list *) obstack_alloc (&objfile->type_obstack,
sizeof (struct alias_list));
if (!alias)
error ("Unable to allocate alias list memory");
alias->next = 0;
alias->sym = sym;
if (!SYMBOL_ALIASES (ref_sym))
{
SYMBOL_ALIASES (ref_sym) = alias;
}
else
{
struct alias_list *temp;
/* Get to the end of the list. */
for (temp = SYMBOL_ALIASES (ref_sym);
temp->next;
temp = temp->next);
;
temp->next = alias;
}
/* Want to fix up name so that other functions (eg. valops) /* Want to fix up name so that other functions (eg. valops)
will correctly print the name. will correctly print the name.
@ -1117,35 +1141,9 @@ resolve_symbol_reference (objfile, sym, p)
SYMBOL_NAME (sym) = SYMBOL_NAME (ref_sym); SYMBOL_NAME (sym) = SYMBOL_NAME (ref_sym);
/* Done! */ /* Done! */
do_cleanups (back_to);
return 0; return 0;
} }
/* Get range symbol reference. eg. "#2),l(#3,#5)"
postpone resolve_reference until after we're done reading symbols. */
struct symbol *
resolve_reference (p)
char *p;
{
char sym_refid[32];
struct symbol *sym = 0;
char *s = p;
int len;
if (!s || *s != '#')
return 0;
p = strchr (s, ')');
if (!p || p == s)
return 0;
len = p - s + 1;
strncpy (sym_refid, s, len);
sym_refid[len] = '\0';
sym = lookup_symbol (sym_refid, 0, VAR_NAMESPACE, 0, 0);
return sym;
}
#define MAX_CHUNK_REFS 100 #define MAX_CHUNK_REFS 100
#define REF_CHUNK_SIZE \ #define REF_CHUNK_SIZE \
MAX_CHUNK_REFS * sizeof (struct ref_map_s) MAX_CHUNK_REFS * sizeof (struct ref_map_s)
@ -1168,11 +1166,7 @@ static int ref_count = 0;
static int ref_chunk = 0; static int ref_chunk = 0;
/* Initialize our list of references. /* Initialize our list of references.
This should be called before any symbol table is read. This should be called before any symbol table is read. */
FIXME: Will reference numbers be unique only to objects? If so, we may
need to add something to disambiguate the refids. Or, it might be OK to
leave as is, as long as we read and process an object's symbol table all
at once. */
static void static void
ref_init () ref_init ()
@ -1200,7 +1194,7 @@ ref_add (refnum, sym, stabs, value)
{ {
int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS; int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS;
int new_chunks = new_slots / MAX_CHUNK_REFS + 1; int new_chunks = new_slots / MAX_CHUNK_REFS + 1;
ref_map = realloc (ref_map, REF_MAP_SIZE(ref_chunk + new_chunks)); ref_map = xrealloc (ref_map, REF_MAP_SIZE(ref_chunk + new_chunks));
if (!ref_map) if (!ref_map)
error ("no more free slots in chain\n"); error ("no more free slots in chain\n");
memset (ref_map + REF_MAP_SIZE(ref_chunk), 0, new_chunks * REF_CHUNK_SIZE); memset (ref_map + REF_MAP_SIZE(ref_chunk), 0, new_chunks * REF_CHUNK_SIZE);
@ -1211,7 +1205,7 @@ ref_add (refnum, sym, stabs, value)
ref_map[refnum].value = value; ref_map[refnum].value = value;
} }
/* Return defined sym for the reference "refnum" */ /* Return defined sym for the reference REFNUM. */
struct symbol * struct symbol *
ref_search (refnum) ref_search (refnum)
int refnum; int refnum;
@ -1221,7 +1215,8 @@ ref_search (refnum)
return ref_map[refnum].sym; return ref_map[refnum].sym;
} }
/* Return value for the reference "refnum" */ /* Return value for the reference REFNUM. */
static CORE_ADDR static CORE_ADDR
ref_search_value (refnum) ref_search_value (refnum)
int refnum; int refnum;
@ -1231,9 +1226,8 @@ ref_search_value (refnum)
return ref_map[refnum].value; return ref_map[refnum].value;
} }
/* Parse reference id and advance string to the next character following /* Parse a reference id in STRING and return the resulting
the string. reference number. Move STRING beyond the reference id. */
Return the reference number. */
static int static int
process_reference (string) process_reference (string)
@ -1245,8 +1239,10 @@ process_reference (string)
if (**string != '#') if (**string != '#')
return 0; return 0;
/* Advance beyond the initial '#'. */
p = *string + 1;
/* Read number as reference id. */ /* Read number as reference id. */
p = *string + 1; /* Advance beyond '#' */
while (*p && isdigit (*p)) while (*p && isdigit (*p))
{ {
refnum = refnum * 10 + *p - '0'; refnum = refnum * 10 + *p - '0';
@ -1256,9 +1252,9 @@ process_reference (string)
return refnum; return refnum;
} }
/* If string defines a reference, store away a pointer to the reference /* If STRING defines a reference, store away a pointer to the reference
definition for fast lookup when we "process_later", definition for later use. Return the reference number. */
and return the reference number. */
int int
symbol_reference_defined (string) symbol_reference_defined (string)
char **string; char **string;
@ -1272,7 +1268,6 @@ symbol_reference_defined (string)
if (*p == '=') if (*p == '=')
{ {
/* Symbol is being defined here. */ /* Symbol is being defined here. */
*string = p + 1; *string = p + 1;
return refnum; return refnum;
} }
@ -1280,9 +1275,8 @@ symbol_reference_defined (string)
{ {
/* Must be a reference. Either the symbol has already been defined, /* Must be a reference. Either the symbol has already been defined,
or this is a forward reference to it. */ or this is a forward reference to it. */
*string = p; *string = p;
return 0; /* Not defined here */ return 0;
} }
} }
@ -1394,37 +1388,42 @@ define_symbol (valu, string, desc, type, objfile)
char *s; char *s;
int refnum, nlen; int refnum, nlen;
/* Initialize symbol references and determine if this is /* If STRING defines a new reference id, then add it to the
a definition. If symbol reference is being defined, go reference map. Else it must be referring to a previously
ahead and add it. Otherwise, just return sym. */ defined symbol, so add it to the alias list of the previously
defined symbol. */
s = string; s = string;
if (refnum = symbol_reference_defined (&s), refnum) if (refnum = symbol_reference_defined (&s), refnum)
ref_add (refnum, sym, string, SYMBOL_VALUE (sym)); ref_add (refnum, sym, string, SYMBOL_VALUE (sym));
else else
process_later (sym, string, resolve_symbol_reference); resolve_symbol_reference (objfile, sym, string);
/* s is after refid... advance string there /* S..P contains the name of the symbol. We need to store
so that the symbol name will not include the refid. */ the correct name into SYMBOL_NAME. */
nlen = p - s; nlen = p - s;
if (nlen > 0) if (refnum)
{ {
SYMBOL_NAME (sym) = (char *) if (nlen > 0)
obstack_alloc (&objfile -> symbol_obstack, nlen); {
strncpy (SYMBOL_NAME (sym), s, nlen); SYMBOL_NAME (sym) = (char *)
SYMBOL_NAME (sym)[nlen] = '\0'; obstack_alloc (&objfile -> symbol_obstack, nlen);
SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack); strncpy (SYMBOL_NAME (sym), s, nlen);
} SYMBOL_NAME (sym)[nlen] = '\0';
else SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack);
/* FIXME! Want SYMBOL_NAME (sym) = 0; }
Get error if leave name 0. So give it something. */ else
{ /* FIXME! Want SYMBOL_NAME (sym) = 0;
nlen = p - string; Get error if leave name 0. So give it something. */
SYMBOL_NAME (sym) = (char *) {
obstack_alloc (&objfile -> symbol_obstack, nlen); nlen = p - string;
strncpy (SYMBOL_NAME (sym), string, nlen); SYMBOL_NAME (sym) = (char *)
SYMBOL_NAME (sym)[nlen] = '\0'; obstack_alloc (&objfile -> symbol_obstack, nlen);
SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack); strncpy (SYMBOL_NAME (sym), string, nlen);
} SYMBOL_NAME (sym)[nlen] = '\0';
SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack);
}
}
/* Advance STRING beyond the reference id. */
string = s; string = s;
} }
else else
@ -2108,7 +2107,7 @@ define_symbol (valu, string, desc, type, objfile)
} }
} }
/* Is there more to parse? eg. ";l(#1,#2);l(#3,#5)" */ /* Is there more to parse? For example LRS/alias information? */
while (*p && (*p == ';' || *p == ',')) while (*p && (*p == ';' || *p == ','))
{ {
p++; p++;
@ -2117,8 +2116,8 @@ define_symbol (valu, string, desc, type, objfile)
/* GNU extensions for live range splitting may be appended to /* GNU extensions for live range splitting may be appended to
the end of the stab string. eg. "l(#1,#2);l(#3,#5)" */ the end of the stab string. eg. "l(#1,#2);l(#3,#5)" */
/* Fix up ranges later. */ /* Resolve the live range and add it to SYM's live range list. */
process_later (sym, p, resolve_live_range); resolve_live_range (objfile, sym, p);
/* Find end of live range info. */ /* Find end of live range info. */
p = strchr (p, ')'); p = strchr (p, ')');
@ -2130,18 +2129,18 @@ define_symbol (valu, string, desc, type, objfile)
return sym; return sym;
} }
/* Add the live range found in P to the symbol SYM in objfile OBJFILE. */
/* Add live range information to symbol. (eg. p is l(#1,#2)...) */ static void
static int
resolve_live_range (objfile, sym, p) resolve_live_range (objfile, sym, p)
struct objfile * objfile; struct objfile * objfile;
struct symbol *sym; struct symbol *sym;
char *p; char *p;
{ {
char *s=p;
int refnum; int refnum;
CORE_ADDR start, end; CORE_ADDR start, end;
/* Sanity check the beginning of the stabs string. */
if (!*p || *p != 'l') if (!*p || *p != 'l')
error ("Internal error: live range string.\n"); error ("Internal error: live range string.\n");
p++; p++;
@ -2150,8 +2149,10 @@ resolve_live_range (objfile, sym, p)
error ("Internal error: live range string.\n"); error ("Internal error: live range string.\n");
p++; p++;
/* Get starting value of range symbol reference. eg. "#1,#2),l(#3,#5)" /* Get starting value of range and advance P past the reference id.
and advance p past the refid. */
?!? In theory, the process_reference should never fail, but we should
catch that case just in case the compiler scrogged the stabs. */
refnum = process_reference (&p); refnum = process_reference (&p);
start = ref_search_value (refnum); start = ref_search_value (refnum);
if (!start) if (!start)
@ -2161,76 +2162,59 @@ resolve_live_range (objfile, sym, p)
error ("Internal error: live range string.\n"); error ("Internal error: live range string.\n");
p++; p++;
/* Get ending value of range symbol reference. eg. "#2),l(#3,#5)" */ /* Get ending value of range and advance P past the reference id.
?!? In theory, the process_reference should never fail, but we should
catch that case just in case the compiler scrogged the stabs. */
refnum = process_reference (&p); refnum = process_reference (&p);
end = ref_search_value (refnum); end = ref_search_value (refnum);
if (!end) if (!end)
error ("Internal error: live range symbol not found.\n"); error ("Internal error: live range symbol not found.\n");
add_live_range (objfile, sym, start, end);
if (!*p || *p != ')') if (!*p || *p != ')')
error ("Internal error: live range string.\n"); error ("Internal error: live range string.\n");
p++;
return 0; /* Now that we know the bounds of the range, add it to the
symbol. */
add_live_range (objfile, sym, start, end);
} }
/* Add a new live range defined by START and END to the symbol SYM
in objfile OBJFILE. */
static void static void
add_live_range (objfile, sym, start, end) add_live_range (objfile, sym, start, end)
struct objfile *objfile; struct objfile *objfile;
struct symbol *sym; struct symbol *sym;
CORE_ADDR start, end; CORE_ADDR start, end;
{ {
struct live_range *r, *rs; struct range_list *r, *rs;
if (start >= end) if (start >= end)
error ("Internal error: end of live range follows start.\n"); error ("Internal error: end of live range follows start.\n");
/* Alloc new live range structure. */ /* Alloc new live range structure. */
r = (struct live_range *) r = (struct range_list *)
obstack_alloc (&objfile->type_obstack, obstack_alloc (&objfile->type_obstack,
sizeof (struct live_range)); sizeof (struct range_list));
r->start = start; r->start = start;
r->end = end; r->end = end;
r->next = 0; r->next = 0;
/* Append this range to the symbol's range list. */ /* Append this range to the symbol's range list. */
if (!SYMBOL_RANGE (sym)) if (!SYMBOL_RANGES (sym))
{ {
SYMBOL_RANGE (sym) = r; SYMBOL_RANGES (sym) = r;
} }
else else
{ {
/* Get the last range for the symbol. */ /* Get the last range for the symbol. */
for (rs = SYMBOL_RANGE (sym); rs->next; rs = rs->next) for (rs = SYMBOL_RANGES (sym); rs->next; rs = rs->next)
; ;
rs->next = r; rs->next = r;
} }
} }
/* Given addr, Search thu alias list to find the one active. */
struct symbol *
ref_search_val (sym, addr)
struct symbol *sym;
CORE_ADDR addr;
{
struct live_range *r;
while (sym)
{
if (!SYMBOL_RANGE (sym))
return sym;
for (r = SYMBOL_RANGE (sym); r; r = r->next)
{
if (r->start <= addr
&& r->end > addr)
return sym;
}
sym = SYMBOL_ALIASES (sym);
}
return 0;
}
/* Skip rest of this symbol and return an error type. /* Skip rest of this symbol and return an error type.
@ -4973,6 +4957,9 @@ scan_file_globals (objfile)
if (SYMBOL_NAME (msymbol)[0] == SYMBOL_NAME (sym)[0] && if (SYMBOL_NAME (msymbol)[0] == SYMBOL_NAME (sym)[0] &&
STREQ(SYMBOL_NAME (msymbol) + 1, SYMBOL_NAME (sym) + 1)) STREQ(SYMBOL_NAME (msymbol) + 1, SYMBOL_NAME (sym) + 1))
{ {
struct alias_list *aliases;
/* Splice this symbol out of the hash chain and /* Splice this symbol out of the hash chain and
assign the value we have to it. */ assign the value we have to it. */
if (prev) if (prev)
@ -4994,19 +4981,30 @@ scan_file_globals (objfile)
/* FIXME: Maybe should have added aliases to the global chain, resolved symbol name, then treated aliases as normal /* FIXME: Maybe should have added aliases to the global chain, resolved symbol name, then treated aliases as normal
symbols? Still, we wouldn't want to add_to_list. */ symbols? Still, we wouldn't want to add_to_list. */
/* Now do the same for each alias of this symbol */ /* Now do the same for each alias of this symbol */
for (rsym = sym; rsym; rsym = SYMBOL_ALIASES (rsym)) rsym = sym;
aliases = SYMBOL_ALIASES (sym);
while (rsym)
{ {
if (SYMBOL_CLASS (rsym) == LOC_BLOCK) if (SYMBOL_CLASS (rsym) == LOC_BLOCK)
{ {
fix_common_block (rsym, SYMBOL_VALUE_ADDRESS (msymbol)); fix_common_block (rsym,
} SYMBOL_VALUE_ADDRESS (msymbol));
}
else else
{ {
SYMBOL_VALUE_ADDRESS (rsym) SYMBOL_VALUE_ADDRESS (rsym)
= SYMBOL_VALUE_ADDRESS (msymbol); = SYMBOL_VALUE_ADDRESS (msymbol);
} }
SYMBOL_SECTION (rsym) = SYMBOL_SECTION (msymbol); SYMBOL_SECTION (rsym) = SYMBOL_SECTION (msymbol);
if (aliases)
{
rsym = aliases->sym;
aliases = aliases->next;
}
else
rsym = NULL;
} }
if (prev) if (prev)
{ {

View File

@ -243,11 +243,6 @@ extern void ref_add PARAMS ((int, struct symbol *, char *, CORE_ADDR));
extern struct symbol * ref_search PARAMS ((int)); extern struct symbol * ref_search PARAMS ((int));
extern struct symbol * resolve_reference PARAMS ((char *p));
extern int resolve_symbol_reference
PARAMS ((struct objfile * objfile, struct symbol * sym, char * p));
extern int resolve_cfront_continuation extern int resolve_cfront_continuation
PARAMS ((struct objfile * objfile, struct symbol * sym, char * p)); PARAMS ((struct objfile * objfile, struct symbol * sym, char * p));