From: Tom Tromey Date: Fri, 21 Feb 2025 18:57:48 +0000 (-0700) Subject: Use wild matching for lookup_name_info::match_any X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d519282866163864fff3fe0ab7227ff0339cad67;p=thirdparty%2Fbinutils-gdb.git Use wild matching for lookup_name_info::match_any Currently, lookup_name_info::match_any symbol_name_match_type::FULL. However, this seems wrong. Consider the expand_symtabs_matching implementation of the cooked index: it compares name components, and then if all the components match, it checks: if ((match_type == symbol_name_match_type::FULL || (lang != language_ada && match_type == symbol_name_match_type::EXPRESSION))) { if (parent != nullptr) continue; That is, if the component-matching loop did not finish, and a full match is requested, then fail to match. This handles cases where the index is asked to look up "b::c" but finds "a::b::c". However, match_any should match, well, any. So, it seems to me that checking any parent matches is irrelevant -- and therefore this should use wild matching. --- diff --git a/gdb/symtab.c b/gdb/symtab.c index b6c8456cc9d..aa09706453c 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1911,7 +1911,7 @@ lookup_name_info::match_any () { /* Lookup any symbol that "" would complete. I.e., this matches all symbol names. */ - static const lookup_name_info lookup_name ("", symbol_name_match_type::FULL, + static const lookup_name_info lookup_name ("", symbol_name_match_type::WILD, true); return lookup_name;