]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Use wild matching for lookup_name_info::match_any
authorTom Tromey <tom@tromey.com>
Fri, 21 Feb 2025 18:57:48 +0000 (11:57 -0700)
committerTom Tromey <tom@tromey.com>
Sat, 8 Mar 2025 00:15:20 +0000 (17:15 -0700)
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.

gdb/symtab.c

index b6c8456cc9d7f41d25a5cd71f3775ce85ba65a24..aa09706453c120c56195e994df053e81a577a2b1 100644 (file)
@@ -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;