diff options
author | Doug Evans <xdje42@gmail.com> | 2014-12-22 09:20:50 -0800 |
---|---|---|
committer | Doug Evans <xdje42@gmail.com> | 2014-12-22 09:20:50 -0800 |
commit | 4bd0864e2124057b312fafd3a86920f9e0a10a57 (patch) | |
tree | 1d2beba68a2087262c3f6fbab3f410c831095ce6 | |
parent | 6f27419a4d739346db2909d4258dea86e8ed0693 (diff) | |
download | gdb-4bd0864e2124057b312fafd3a86920f9e0a10a57.zip gdb-4bd0864e2124057b312fafd3a86920f9e0a10a57.tar.gz gdb-4bd0864e2124057b312fafd3a86920f9e0a10a57.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <xdje42@gmail.com> + * cp-namespace.c (cp_lookup_symbol_via_imports): New arg + "search_scope_first". All callers updated. + +2014-12-22 Doug Evans <xdje42@gmail.com> + * 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) { |