struct symbol *sym;
struct objfile *objfile;
{
- struct minimal_symbol *msym;
-
if (!sym)
return NULL;
struct partial_symbol *psym;
struct objfile *objfile;
{
- struct minimal_symbol *msym;
-
if (!psym)
return NULL;
const char *name;
const namespace_enum namespace;
{
+ extern struct symbol *ref_search_val PARAMS ((struct symbol *sym,
+ CORE_ADDR addr));
register int bot, top, inc;
register struct symbol *sym;
register struct symbol *sym_found = NULL;
if (SYMBOL_NAMESPACE (sym) == namespace &&
SYMBOL_MATCHES_NAME (sym, name))
{
+ /* Given pc, search thu alias list to find the active symbol. */
+ if (SYMBOL_ALIASES (sym))
+ sym = ref_search_val (sym, read_pc ());
+
sym_found = sym;
if (SYMBOL_CLASS (sym) != LOC_ARG &&
SYMBOL_CLASS (sym) != LOC_LOCAL_ARG &&
register struct symtab *best_s = NULL;
register struct partial_symtab *ps;
register struct objfile *objfile;
- int distance = 0;
+ CORE_ADDR distance = 0;
/* Search all symtabs for the one whose file contains our address, and which
is the smallest of all the ones containing the address. This is designed
}
if (p[0] == ':' || p[0] == ' ' || p[0] == '\t')
break;
+ if (p[0] == '.' && strchr (p, ':') == NULL) /* Java qualified method. */
+ {
+ /* Find the *last* '.', since the others are package qualifiers. */
+ for (p1 = p; *p1; p1++)
+ {
+ if (*p1 == '.')
+ p = p1;
+ }
+ break;
+ }
}
while (p[0] == ' ' || p[0] == '\t') p++;
- if ((p[0] == ':') && !has_parens)
+ if ((p[0] == ':' || p[0] == '.') && !has_parens)
{
- /* C++ */
+ /* C++ or Java */
if (is_quoted) *argptr = *argptr+1;
- if (p[1] ==':')
+ if (p[0] == '.' || p[1] ==':')
{
/* Extract the class name. */
p1 = p;
copy[p - *argptr] = 0;
/* Discard the class name from the arg. */
- p = p1 + 2;
+ p = p1 + (p1[0] == ':' ? 2 : 1);
while (*p == ' ' || *p == '\t') p++;
*argptr = p;