From: Tom Tromey Date: Sat, 7 Dec 2024 23:48:45 +0000 (-0700) Subject: Convert ada-lang.c:map_matching_symbols X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7561b2a31ca40b59cc29311836755cc7dfe7bb4;p=thirdparty%2Fbinutils-gdb.git Convert ada-lang.c:map_matching_symbols This converts ada-lang.c:map_matching_symbols to the callback approach, merging the search loop and the call to expand_symtabs_matching. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=16994 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=16998 Acked-By: Simon Marchi --- diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 2b83cbb72ec..0e3cb07c3d3 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -5509,22 +5509,22 @@ map_matching_symbols (struct objfile *objfile, match_data &data) { data.objfile = objfile; - objfile->expand_symtabs_matching (nullptr, &lookup_name, - nullptr, nullptr, - global - ? SEARCH_GLOBAL_BLOCK - : SEARCH_STATIC_BLOCK, - domain); const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK; - for (compunit_symtab *symtab : objfile->compunits ()) + auto callback = [&] (compunit_symtab *symtab) { const struct block *block = symtab->blockvector ()->block (block_kind); - if (!iterate_over_symbols_terminated (block, lookup_name, - domain, data)) - break; - } + return iterate_over_symbols_terminated (block, lookup_name, + domain, data); + }; + + objfile->expand_symtabs_matching (nullptr, &lookup_name, + nullptr, callback, + global + ? SEARCH_GLOBAL_BLOCK + : SEARCH_STATIC_BLOCK, + domain); } /* Add to RESULT all non-local symbols whose name and domain match