+ else
+ modified_name = (char *) name;
+
+ /* If we are using C++ language, demangle the name before doing a lookup, so
+ we can always binary search. */
+ if (current_language->la_language == language_cplus)
+ {
+ modified_name2 = cplus_demangle (modified_name, DMGL_ANSI | DMGL_PARAMS);
+ if (modified_name2)
+ {
+ modified_name = modified_name2;
+ needtofreename = 1;
+ }
+ }
+
+ returnval = lookup_symbol_aux (modified_name, block, namespace,
+ is_a_field_of_this, symtab);
+ if (needtofreename)
+ free (modified_name2);
+
+ return returnval;
+}
+
+static struct symbol *
+lookup_symbol_aux (const char *name, const struct block *block,
+ const namespace_enum namespace, int *is_a_field_of_this,
+ struct symtab **symtab)
+{
+ register struct symbol *sym;
+ register struct symtab *s = NULL;
+ register struct partial_symtab *ps;
+ register struct blockvector *bv;
+ register struct objfile *objfile = NULL;
+ register struct block *b;
+ register struct minimal_symbol *msymbol;
+