mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
* ada-lang.c (ada_lookup_symbol_list_worker): New function, contents
of old ada_lookup_symbol_list. In !full_search case, don't search superblocks. (ada_lookup_symbol_list): Delete arg full_search, all callers updated. Call ada_lookup_symbol_list_worker. (ada_iterate_over_symbols): Call ada_lookup_symbol_list_worker. * ada-lang.h (ada_lookup_symbol_list): Update. * language.h (language_defn): Update comment for la_iterate_over_symbols. * linespec.c (iterate_over_file_blocks): New function. (iterate_over_all_matching_symtabs): Call it. (lookup_prefix_sym): Ditto. (get_current_search_block): New function. (get_search_block): Delete. (find_label_symbols): Call get_current_search_block. (add_matching_symbols_to_info): Call iterate_over_file_blocks. * symtab.c (iterate_over_symbols): Don't search superblocks.
This commit is contained in:
32
gdb/symtab.c
32
gdb/symtab.c
@ -2023,16 +2023,13 @@ lookup_block_symbol (const struct block *block, const char *name,
|
||||
}
|
||||
}
|
||||
|
||||
/* Iterate over the symbols named NAME, matching DOMAIN, starting with
|
||||
BLOCK.
|
||||
/* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
|
||||
|
||||
For each symbol that matches, CALLBACK is called. The symbol and
|
||||
DATA are passed to the callback.
|
||||
|
||||
If CALLBACK returns zero, the iteration ends. Otherwise, the
|
||||
search continues. This function iterates upward through blocks.
|
||||
When the outermost block has been finished, the function
|
||||
returns. */
|
||||
search continues. */
|
||||
|
||||
void
|
||||
iterate_over_symbols (const struct block *block, const char *name,
|
||||
@ -2040,24 +2037,19 @@ iterate_over_symbols (const struct block *block, const char *name,
|
||||
symbol_found_callback_ftype *callback,
|
||||
void *data)
|
||||
{
|
||||
while (block)
|
||||
struct block_iterator iter;
|
||||
struct symbol *sym;
|
||||
|
||||
for (sym = block_iter_name_first (block, name, &iter);
|
||||
sym != NULL;
|
||||
sym = block_iter_name_next (name, &iter))
|
||||
{
|
||||
struct block_iterator iter;
|
||||
struct symbol *sym;
|
||||
|
||||
for (sym = block_iter_name_first (block, name, &iter);
|
||||
sym != NULL;
|
||||
sym = block_iter_name_next (name, &iter))
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain))
|
||||
{
|
||||
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
|
||||
SYMBOL_DOMAIN (sym), domain))
|
||||
{
|
||||
if (!callback (sym, data))
|
||||
return;
|
||||
}
|
||||
if (!callback (sym, data))
|
||||
return;
|
||||
}
|
||||
|
||||
block = BLOCK_SUPERBLOCK (block);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user