aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2019-07-12 10:45:34 -0600
committerTom Tromey <tromey@adacore.com>2019-09-10 08:30:45 -0600
commit199b4314efbd419d6957e366e13a14cd87cea5e4 (patch)
treef1844b4639994e943190a9e15a9940c8bd7318e4 /gdb/psymtab.c
parentaebcfb76fc165795e67917cb67cf985c4dfdc577 (diff)
downloadbinutils-199b4314efbd419d6957e366e13a14cd87cea5e4.zip
binutils-199b4314efbd419d6957e366e13a14cd87cea5e4.tar.gz
binutils-199b4314efbd419d6957e366e13a14cd87cea5e4.tar.bz2
Change map_matching_symbols to take a symbol_found_callback_ftype
This changes map_matching_symbols to take a symbol_found_callback_ftype, rather than separate callback and data parameters. This enables a future patch to clean up some existing code so that it can more readily be shared. gdb/ChangeLog 2019-09-10 Tom Tromey <tromey@adacore.com> * ada-lang.c (aux_add_nonlocal_symbols): Change type. (add_nonlocal_symbols): Update. * dwarf2read.c (dw2_map_matching_symbols): Change type. * psymtab.c (map_block, psym_map_matching_symbols): Change type. * symfile-debug.c (debug_qf_map_matching_symbols): Change type. * symfile.h (struct quick_symbol_functions) <map_matching_symbols>: Change type of "callback". Remove "data".
Diffstat (limited to 'gdb/psymtab.c')
-rw-r--r--gdb/psymtab.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 70d04f8..cd577bc 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1170,14 +1170,14 @@ psymtab_to_fullname (struct partial_symtab *ps)
/* For all symbols, s, in BLOCK that are in DOMAIN and match NAME
according to the function MATCH, call CALLBACK(BLOCK, s, DATA).
- BLOCK is assumed to come from OBJFILE. Returns 1 iff CALLBACK
- ever returns non-zero, and otherwise returns 0. */
+ BLOCK is assumed to come from OBJFILE. Returns false iff CALLBACK
+ ever returns false, and otherwise returns true. */
-static int
+static bool
map_block (const char *name, domain_enum domain, struct objfile *objfile,
const struct block *block,
- int (*callback) (const struct block *, struct symbol *, void *),
- void *data, symbol_name_match_type match)
+ gdb::function_view<symbol_found_callback_ftype> callback,
+ symbol_name_match_type match)
{
struct block_iterator iter;
struct symbol *sym;
@@ -1191,26 +1191,26 @@ map_block (const char *name, domain_enum domain, struct objfile *objfile,
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
SYMBOL_DOMAIN (sym), domain))
{
- if (callback (block, sym, data))
- return 1;
+ struct block_symbol block_sym = {sym, block};
+ if (!callback (&block_sym))
+ return false;
}
}
- return 0;
+ return true;
}
/* Psymtab version of map_matching_symbols. See its definition in
the definition of quick_symbol_functions in symfile.h. */
static void
-psym_map_matching_symbols (struct objfile *objfile,
- const char *name, domain_enum domain,
- int global,
- int (*callback) (const struct block *,
- struct symbol *, void *),
- void *data,
- symbol_name_match_type match,
- symbol_compare_ftype *ordered_compare)
+psym_map_matching_symbols
+ (struct objfile *objfile,
+ const char *name, domain_enum domain,
+ int global,
+ gdb::function_view<symbol_found_callback_ftype> callback,
+ symbol_name_match_type match,
+ symbol_compare_ftype *ordered_compare)
{
const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
@@ -1227,10 +1227,10 @@ psym_map_matching_symbols (struct objfile *objfile,
if (cust == NULL)
continue;
block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
- if (map_block (name, domain, objfile, block,
- callback, data, match))
+ if (!map_block (name, domain, objfile, block, callback, match))
return;
- if (callback (block, NULL, data))
+ struct block_symbol block_sym = {nullptr, block};
+ if (!callback (&block_sym))
return;
}
}