From: Doug Evans Date: Mon, 22 Dec 2014 17:20:50 +0000 (-0800) Subject: cp-namespace.c (cp_lookup_symbol_via_imports): New arg "search_scope_first". X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4bd0864e2124057b312fafd3a86920f9e0a10a57;p=binutils-gdb.git cp-namespace.c (cp_lookup_symbol_via_imports): New arg "search_scope_first". gdb/ChangeLog: * cp-namespace.c (cp_lookup_symbol_via_imports): New arg "search_scope_first". All callers updated. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 74a5e9eb64f..addc48d190c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-12-22 Doug Evans + + * cp-namespace.c (cp_lookup_symbol_via_imports): New arg + "search_scope_first". All callers updated. + 2014-12-22 Doug Evans * cp-namespace.c (cp_lookup_nested_symbol_1): New function. diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index ea326ac9213..c58efa44b78 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -429,13 +429,17 @@ reset_directive_searched (void *data) If SCOPE is "A::B" and SEARCH_PARENTS is true the imports of namespaces X and Y will be considered. If SEARCH_PARENTS is false - only the import of Y is considered. */ + only the import of Y is considered. + + SEARCH_SCOPE_FIRST is an internal implementation detail: Callers must + pass 0 for it. Internally we pass 1 when recursing. */ static struct symbol * cp_lookup_symbol_via_imports (const char *scope, const char *name, const struct block *block, const domain_enum domain, + const int search_scope_first, const int declaration_only, const int search_parents) { @@ -445,8 +449,8 @@ cp_lookup_symbol_via_imports (const char *scope, int directive_match; struct cleanup *searched_cleanup; - /* First, try to find the symbol in the given namespace. */ - if (!declaration_only) + /* First, try to find the symbol in the given namespace if requested. */ + if (search_scope_first) sym = cp_lookup_symbol_in_namespace (scope, name, block, domain, 1); @@ -535,7 +539,7 @@ cp_lookup_symbol_via_imports (const char *scope, towards the imported namespace. */ sym = cp_lookup_symbol_via_imports (current->import_src, name, block, - domain, 0, 0); + domain, 1, 0, 0); } current->searched = 0; discard_cleanups (searched_cleanup); @@ -663,7 +667,7 @@ cp_lookup_symbol_imports_or_template (const char *scope, } } - result = cp_lookup_symbol_via_imports (scope, name, block, domain, 1, 1); + result = cp_lookup_symbol_via_imports (scope, name, block, domain, 0, 1, 1); if (symbol_lookup_debug) { fprintf_unfiltered (gdb_stdlog, @@ -714,7 +718,7 @@ cp_lookup_symbol_namespace (const char *scope, while (block != NULL) { sym = cp_lookup_symbol_via_imports (scope, name, block, - domain, 0, 1); + domain, 0, 0, 1); if (sym) {