[binutils-gdb] Use wild matching for lookup_name_info::match_any
Tom Tromey
tromey@sourceware.org
Sat Mar 8 00:15:33 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d519282866163864fff3fe0ab7227ff0339cad67
commit d519282866163864fff3fe0ab7227ff0339cad67
Author: Tom Tromey <tom@tromey.com>
Date: Fri Feb 21 11:57:48 2025 -0700
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:
---
gdb/symtab.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
More information about the Gdb-cvs
mailing list