(char *) alloca (strlen (name) + sizeof ("standard__"));
strcpy (expanded_name, "standard__");
strcat (expanded_name, name);
- sym = ada_lookup_symbol (expanded_name, NULL, VAR_DOMAIN, NULL).symbol;
+ sym = ada_lookup_symbol (expanded_name, NULL, VAR_DOMAIN).symbol;
if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
type = SYMBOL_TYPE (sym);
}
VAR_DOMAIN, &syms);
encoded_name[tail_index] = terminator;
- /* A single symbol may rename a package or object. */
-
- /* This should go away when we move entirely to new version.
- FIXME pnh 7/20/2007. */
- if (nsyms == 1)
- {
- struct symbol *ren_sym =
- ada_find_renaming_symbol (syms[0].symbol, syms[0].block);
-
- if (ren_sym != NULL)
- syms[0].symbol = ren_sym;
- }
-
type_sym = select_possible_type_sym (syms);
if (type_sym != NULL)
return val;
xsnprintf (name, sizeof (name), "QU%02x", (int) val);
+ size_t len = strlen (name);
for (f = 0; f < TYPE_NFIELDS (type); f += 1)
{
- if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0)
+ /* Check the suffix because an enum constant in a package will
+ have a name like "pkg__QUxx". This is safe enough because we
+ already have the correct type, and because mangling means
+ there can't be clashes. */
+ const char *ename = TYPE_FIELD_NAME (type, f);
+ size_t elen = strlen (ename);
+
+ if (elen >= len && strcmp (name, ename + elen - len) == 0)
return TYPE_FIELD_ENUMVAL (type, f);
}
return val;