/* Routines for name->symbol lookups in GDB.
- Copyright (C) 2003-2019 Free Software Foundation, Inc.
+ Copyright (C) 2003-2021 Free Software Foundation, Inc.
Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
Inc.
unsigned int hash_index = (name.search_name_hash (lang->la_language)
% DICT_HASHED_NBUCKETS (dict));
symbol_name_matcher_ftype *matches_name
- = get_symbol_name_matcher (lang, name);
+ = lang->get_symbol_name_matcher (name);
struct symbol *sym;
DICT_ITERATOR_DICT (iterator) = dict;
{
const language_defn *lang = DICT_LANGUAGE (DICT_ITERATOR_DICT (iterator));
symbol_name_matcher_ftype *matches_name
- = get_symbol_name_matcher (lang, name);
+ = lang->get_symbol_name_matcher (name);
struct symbol *next;
for (next = DICT_ITERATOR_CURRENT (iterator)->hash_next;
/* See dictionary.h. */
unsigned int
-default_search_name_hash (const char *string0)
+language_defn::search_name_hash (const char *string0) const
{
/* The Ada-encoded version of a name P1.P2...Pn has either the form
P1__P2__...Pn<suffix> or _ada_P1__P2__...Pn<suffix> (where the Pi
{
int c = string[2];
+ if (c == 'B' && string[3] == '_')
+ {
+ for (string += 4; ISDIGIT (*string); ++string)
+ ;
+ continue;
+ }
+
if ((c < 'a' || c > 'z') && c != 'O')
return hash;
hash = 0;
const struct dictionary *dict = DICT_ITERATOR_DICT (iterator);
const language_defn *lang = DICT_LANGUAGE (dict);
symbol_name_matcher_ftype *matches_name
- = get_symbol_name_matcher (lang, name);
+ = lang->get_symbol_name_matcher (name);
int i, nsyms = DICT_LINEAR_NSYMS (dict);
struct symbol *sym, *retval = NULL;