From 4bd0864e2124057b312fafd3a86920f9e0a10a57 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Mon, 22 Dec 2014 09:20:50 -0800 Subject: 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. --- gdb/ChangeLog | 5 +++++ gdb/cp-namespace.c | 16 ++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 74a5e9e..addc48d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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. (cp_basic_lookup_symbol): Renamed from lookup_symbol_file. Delete arg "search". All callers updated. diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index ea326ac..c58efa4 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) { -- cgit v1.1