diff options
author | Tom Tromey <tom@tromey.com> | 2023-09-19 17:51:36 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2024-01-28 10:58:17 -0700 |
commit | 415ea5e3e5115ff4a2c5d793761af913765a9f36 (patch) | |
tree | 6343638fac5fbddba9ba26f79331816539e009bc | |
parent | 6cd92f3b86f510c3e321b922ca77cd42c83b7826 (diff) | |
download | gdb-415ea5e3e5115ff4a2c5d793761af913765a9f36.zip gdb-415ea5e3e5115ff4a2c5d793761af913765a9f36.tar.gz gdb-415ea5e3e5115ff4a2c5d793761af913765a9f36.tar.bz2 |
Refine search in cp_search_static_and_baseclasses
This changes cp_search_static_and_baseclasses to only search for
types, functions, and modules. The latter two cases were discovered
by regression testing. I found it somewhat surprising the Fortran
name lookup ends up in this code, but did not attempt to change this.
-rw-r--r-- | gdb/cp-namespace.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 593340a..41ab52d 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -268,14 +268,19 @@ cp_search_static_and_baseclasses (const char *name, const char *nested = name + prefix_len + 2; /* Lookup the scope symbol. If none is found, there is nothing more - that can be done. SCOPE could be a namespace, so always look in - VAR_DOMAIN. This works for classes too because of - symbol_matches_domain (which should be replaced with something - else, but it's what we have today). */ - block_symbol scope_sym = lookup_symbol_in_static_block (scope.c_str (), - block, SEARCH_VFT); + that can be done. SCOPE could be a namespace, a class, or even a + function. This code is also used by Fortran, so modules are + included in the search as well. */ + block_symbol scope_sym + = lookup_symbol_in_static_block (scope.c_str (), block, + SEARCH_TYPE_DOMAIN + | SEARCH_FUNCTION_DOMAIN + | SEARCH_MODULE_DOMAIN); if (scope_sym.symbol == NULL) - scope_sym = lookup_global_symbol (scope.c_str (), block, SEARCH_VFT); + scope_sym = lookup_global_symbol (scope.c_str (), block, + SEARCH_TYPE_DOMAIN + | SEARCH_FUNCTION_DOMAIN + | SEARCH_MODULE_DOMAIN); if (scope_sym.symbol == NULL) return {}; |