/* Must be a reference. Either the symbol has already been defined,
or this is a forward reference to it. */
*string = p;
- return 0;
+ return -1;
}
}
defined symbol, so add it to the alias list of the previously
defined symbol. */
s = string;
- if (refnum = symbol_reference_defined (&s), refnum)
+ refnum = symbol_reference_defined (&s);
+ if (refnum >= 0)
ref_add (refnum, sym, string, SYMBOL_VALUE (sym));
else
resolve_symbol_reference (objfile, sym, string);
/* S..P contains the name of the symbol. We need to store
the correct name into SYMBOL_NAME. */
nlen = p - s;
- if (refnum)
+ if (refnum >= 0)
{
if (nlen > 0)
{
in GDB. E.g. "int" is converted to "function returning int". */
if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
+
+ /* All functions in C++ have prototypes. */
+ if (SYMBOL_LANGUAGE (sym) == language_cplus)
+ TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
+
/* fall into process_prototype_types */
process_prototype_types:
about their actual types (FIXME -- we should remember the whole
function prototype), but the list may define some new types
that we have to remember, so we must scan it now. */
- while (*p == ';') {
- p++;
- read_type (&p, objfile);
- }
+ if (*p == ';')
+ {
+ TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
+
+ while (*p == ';') {
+ p++;
+ read_type (&p, objfile);
+ }
+ }
break;
case 'F':
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu;
#ifdef STATIC_TRANSFORM_NAME
- if (SYMBOL_NAME (sym)[0] == '$')
+ if (IS_STATIC_TRANSFORM_NAME (SYMBOL_NAME (sym)))
{
struct minimal_symbol *msym;
msym = lookup_minimal_symbol (SYMBOL_NAME (sym), NULL, objfile);
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu;
#ifdef STATIC_TRANSFORM_NAME
- if (SYMBOL_NAME (sym)[0] == '$')
+ if (IS_STATIC_TRANSFORM_NAME (SYMBOL_NAME (sym)))
{
struct minimal_symbol *msym;
msym = lookup_minimal_symbol (SYMBOL_NAME (sym), NULL, objfile);
}
/* Is there more to parse? For example LRS/alias information? */
- while (*p && (*p == ';' || *p == ','))
+ while (*p && *p == ';')
{
p++;
if (*p && *p == 'l')