[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