aboutsummaryrefslogtreecommitdiff
path: root/gdb/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/block.c')
-rw-r--r--gdb/block.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/gdb/block.c b/gdb/block.c
index 1c343aa..a8075a1 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -595,8 +595,7 @@ block_iterator_next (struct block_iterator *iterator)
static struct symbol *
block_iter_match_step (struct block_iterator *iterator,
- const char *name,
- symbol_compare_ftype *compare,
+ const lookup_name_info &name,
int first)
{
struct symbol *sym;
@@ -618,10 +617,10 @@ block_iter_match_step (struct block_iterator *iterator,
block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
iterator->which);
sym = dict_iter_match_first (BLOCK_DICT (block), name,
- compare, &iterator->dict_iter);
+ &iterator->dict_iter);
}
else
- sym = dict_iter_match_next (name, compare, &iterator->dict_iter);
+ sym = dict_iter_match_next (name, &iterator->dict_iter);
if (sym != NULL)
return sym;
@@ -638,30 +637,27 @@ block_iter_match_step (struct block_iterator *iterator,
struct symbol *
block_iter_match_first (const struct block *block,
- const char *name,
- symbol_compare_ftype *compare,
+ const lookup_name_info &name,
struct block_iterator *iterator)
{
initialize_block_iterator (block, iterator);
if (iterator->which == FIRST_LOCAL_BLOCK)
- return dict_iter_match_first (block->dict, name, compare,
- &iterator->dict_iter);
+ return dict_iter_match_first (block->dict, name, &iterator->dict_iter);
- return block_iter_match_step (iterator, name, compare, 1);
+ return block_iter_match_step (iterator, name, 1);
}
/* See block.h. */
struct symbol *
-block_iter_match_next (const char *name,
- symbol_compare_ftype *compare,
+block_iter_match_next (const lookup_name_info &name,
struct block_iterator *iterator)
{
if (iterator->which == FIRST_LOCAL_BLOCK)
- return dict_iter_match_next (name, compare, &iterator->dict_iter);
+ return dict_iter_match_next (name, &iterator->dict_iter);
- return block_iter_match_step (iterator, name, compare, 0);
+ return block_iter_match_step (iterator, name, 0);
}
/* See block.h.
@@ -682,11 +678,13 @@ block_lookup_symbol (const struct block *block, const char *name,
struct block_iterator iter;
struct symbol *sym;
+ lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+
if (!BLOCK_FUNCTION (block))
{
struct symbol *other = NULL;
- ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
+ ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
{
if (SYMBOL_DOMAIN (sym) == domain)
return sym;
@@ -713,7 +711,7 @@ block_lookup_symbol (const struct block *block, const char *name,
struct symbol *sym_found = NULL;
- ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
+ ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
{
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
SYMBOL_DOMAIN (sym), domain))
@@ -738,14 +736,16 @@ block_lookup_symbol_primary (const struct block *block, const char *name,
struct symbol *sym, *other;
struct dict_iterator dict_iter;
+ lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+
/* Verify BLOCK is STATIC_BLOCK or GLOBAL_BLOCK. */
gdb_assert (BLOCK_SUPERBLOCK (block) == NULL
|| BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) == NULL);
other = NULL;
- for (sym = dict_iter_match_first (block->dict, name, strcmp_iw, &dict_iter);
+ for (sym = dict_iter_match_first (block->dict, lookup_name, &dict_iter);
sym != NULL;
- sym = dict_iter_match_next (name, strcmp_iw, &dict_iter))
+ sym = dict_iter_match_next (lookup_name, &dict_iter))
{
if (SYMBOL_DOMAIN (sym) == domain)
return sym;
@@ -772,11 +772,13 @@ block_find_symbol (const struct block *block, const char *name,
struct block_iterator iter;
struct symbol *sym;
+ lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+
/* Verify BLOCK is STATIC_BLOCK or GLOBAL_BLOCK. */
gdb_assert (BLOCK_SUPERBLOCK (block) == NULL
|| BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) == NULL);
- ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
+ ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
{
/* MATCHER is deliberately called second here so that it never sees
a non-domain-matching symbol. */