GDB (xrefs)
Classes | Macros | Enumerations | Functions | Variables
/tmp/gdb-8.1/gdb/dictionary.c File Reference
#include "defs.h"
#include <ctype.h>
#include "gdb_obstack.h"
#include "symtab.h"
#include "buildsym.h"
#include "dictionary.h"
#include "safe-ctype.h"

Go to the source code of this file.

Classes

struct  dict_vector
 
struct  dictionary_hashed
 
struct  dictionary_hashed_expandable
 
struct  dictionary_linear
 
struct  dictionary_linear_expandable
 
struct  dictionary
 

Macros

#define DICT_VECTOR(d)   (d)->vector
 
#define DICT_LANGUAGE(d)   (d)->language
 
#define DICT_HASHED_NBUCKETS(d)   (d)->data.hashed.nbuckets
 
#define DICT_HASHED_BUCKETS(d)   (d)->data.hashed.buckets
 
#define DICT_HASHED_BUCKET(d, i)   DICT_HASHED_BUCKETS (d) [i]
 
#define DICT_HASHED_EXPANDABLE_NSYMS(d)   (d)->data.hashed_expandable.nsyms
 
#define DICT_LINEAR_NSYMS(d)   (d)->data.linear.nsyms
 
#define DICT_LINEAR_SYMS(d)   (d)->data.linear.syms
 
#define DICT_LINEAR_SYM(d, i)   DICT_LINEAR_SYMS (d) [i]
 
#define DICT_LINEAR_EXPANDABLE_CAPACITY(d)   (d)->data.linear_expandable.capacity
 
#define DICT_EXPANDABLE_INITIAL_CAPACITY   10
 
#define DICT_HASHTABLE_SIZE(n)   ((n)/5 + 1)
 
#define DICT_ITERATOR_DICT(iter)   (iter)->dict
 
#define DICT_ITERATOR_INDEX(iter)   (iter)->index
 
#define DICT_ITERATOR_CURRENT(iter)   (iter)->current
 

Enumerations

enum  dict_type { DICT_HASHED, DICT_HASHED_EXPANDABLE, DICT_LINEAR, DICT_LINEAR_EXPANDABLE }
 

Functions

static void add_symbol_nonexpandable (struct dictionary *dict, struct symbol *sym)
 
static void free_obstack (struct dictionary *dict)
 
static struct symboliterator_first_hashed (const struct dictionary *dict, struct dict_iterator *iterator)
 
static struct symboliterator_next_hashed (struct dict_iterator *iterator)
 
static struct symboliter_match_first_hashed (const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
 
static struct symboliter_match_next_hashed (const lookup_name_info &name, struct dict_iterator *iterator)
 
static int size_hashed (const struct dictionary *dict)
 
static void free_hashed_expandable (struct dictionary *dict)
 
static void add_symbol_hashed_expandable (struct dictionary *dict, struct symbol *sym)
 
static int size_hashed_expandable (const struct dictionary *dict)
 
static struct symboliterator_first_linear (const struct dictionary *dict, struct dict_iterator *iterator)
 
static struct symboliterator_next_linear (struct dict_iterator *iterator)
 
static struct symboliter_match_first_linear (const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
 
static struct symboliter_match_next_linear (const lookup_name_info &name, struct dict_iterator *iterator)
 
static int size_linear (const struct dictionary *dict)
 
static void free_linear_expandable (struct dictionary *dict)
 
static void add_symbol_linear_expandable (struct dictionary *dict, struct symbol *sym)
 
static struct symboliterator_hashed_advance (struct dict_iterator *iter)
 
static void insert_symbol_hashed (struct dictionary *dict, struct symbol *sym)
 
static void expand_hashtable (struct dictionary *dict)
 
struct dictionarydict_create_hashed (struct obstack *obstack, enum language language, const struct pending *symbol_list)
 
struct dictionarydict_create_hashed_expandable (enum language language)
 
struct dictionarydict_create_linear (struct obstack *obstack, enum language language, const struct pending *symbol_list)
 
struct dictionarydict_create_linear_expandable (enum language language)
 
void dict_free (struct dictionary *dict)
 
void dict_add_symbol (struct dictionary *dict, struct symbol *sym)
 
void dict_add_pending (struct dictionary *dict, const struct pending *symbol_list)
 
struct symboldict_iterator_first (const struct dictionary *dict, struct dict_iterator *iterator)
 
struct symboldict_iterator_next (struct dict_iterator *iterator)
 
struct symboldict_iter_match_first (const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
 
struct symboldict_iter_match_next (const lookup_name_info &name, struct dict_iterator *iterator)
 
int dict_size (const struct dictionary *dict)
 
int dict_empty (struct dictionary *dict)
 
unsigned int default_search_name_hash (const char *string0)
 

Variables

static const struct dict_vector dict_hashed_vector
 
static const struct dict_vector dict_hashed_expandable_vector
 
static const struct dict_vector dict_linear_vector
 
static const struct dict_vector dict_linear_expandable_vector
 

Macro Definition Documentation

◆ DICT_EXPANDABLE_INITIAL_CAPACITY

#define DICT_EXPANDABLE_INITIAL_CAPACITY   10

Definition at line 203 of file dictionary.c.

Referenced by dict_create_hashed_expandable(), and dict_create_linear_expandable().

◆ DICT_HASHED_BUCKET

#define DICT_HASHED_BUCKET (   d,
 
)    DICT_HASHED_BUCKETS (d) [i]

Definition at line 188 of file dictionary.c.

Referenced by iter_match_first_hashed(), and iterator_hashed_advance().

◆ DICT_HASHED_BUCKETS

#define DICT_HASHED_BUCKETS (   d)    (d)->data.hashed.buckets

◆ DICT_HASHED_EXPANDABLE_NSYMS

#define DICT_HASHED_EXPANDABLE_NSYMS (   d)    (d)->data.hashed_expandable.nsyms

◆ DICT_HASHED_NBUCKETS

#define DICT_HASHED_NBUCKETS (   d)    (d)->data.hashed.nbuckets

◆ DICT_HASHTABLE_SIZE

#define DICT_HASHTABLE_SIZE (   n)    ((n)/5 + 1)

Definition at line 208 of file dictionary.c.

Referenced by add_symbol_hashed_expandable(), and dict_create_hashed().

◆ DICT_ITERATOR_CURRENT

#define DICT_ITERATOR_CURRENT (   iter)    (iter)->current

◆ DICT_ITERATOR_DICT

#define DICT_ITERATOR_DICT (   iter)    (iter)->dict

◆ DICT_ITERATOR_INDEX

#define DICT_ITERATOR_INDEX (   iter)    (iter)->index

◆ DICT_LANGUAGE

#define DICT_LANGUAGE (   d)    (d)->language

◆ DICT_LINEAR_EXPANDABLE_CAPACITY

#define DICT_LINEAR_EXPANDABLE_CAPACITY (   d)    (d)->data.linear_expandable.capacity

Definition at line 198 of file dictionary.c.

Referenced by add_symbol_linear_expandable(), and dict_create_linear_expandable().

◆ DICT_LINEAR_NSYMS

#define DICT_LINEAR_NSYMS (   d)    (d)->data.linear.nsyms

◆ DICT_LINEAR_SYM

#define DICT_LINEAR_SYM (   d,
 
)    DICT_LINEAR_SYMS (d) [i]

◆ DICT_LINEAR_SYMS

#define DICT_LINEAR_SYMS (   d)    (d)->data.linear.syms

◆ DICT_VECTOR

#define DICT_VECTOR (   d)    (d)->vector

Enumeration Type Documentation

◆ dict_type

enum dict_type
Enumerator
DICT_HASHED 
DICT_HASHED_EXPANDABLE 
DICT_LINEAR 
DICT_LINEAR_EXPANDABLE 

Definition at line 90 of file dictionary.c.

Function Documentation

◆ add_symbol_hashed_expandable()

static void add_symbol_hashed_expandable ( struct dictionary dict,
struct symbol sym 
)
static

◆ add_symbol_linear_expandable()

static void add_symbol_linear_expandable ( struct dictionary dict,
struct symbol sym 
)
static

◆ add_symbol_nonexpandable()

static void add_symbol_nonexpandable ( struct dictionary dict,
struct symbol sym 
)
static

Definition at line 570 of file dictionary.c.

References _, and internal_error().

◆ default_search_name_hash()

unsigned int default_search_name_hash ( const char *  string0)

Definition at line 769 of file dictionary.c.

References hash(), msymbol_hash_iw(), startswith(), string, and SYMBOL_HASH_NEXT.

◆ dict_add_pending()

void dict_add_pending ( struct dictionary dict,
const struct pending symbol_list 
)

◆ dict_add_symbol()

void dict_add_symbol ( struct dictionary dict,
struct symbol sym 
)

Definition at line 481 of file dictionary.c.

References add_symbol(), and DICT_VECTOR.

Referenced by add_symbol(), and dict_add_pending().

◆ dict_create_hashed()

struct dictionary* dict_create_hashed ( struct obstack *  obstack,
enum language language  ,
const struct pending symbol_list 
)

◆ dict_create_hashed_expandable()

struct dictionary* dict_create_hashed_expandable ( enum language language  )

◆ dict_create_linear()

struct dictionary* dict_create_linear ( struct obstack *  obstack,
enum language language  ,
const struct pending symbol_list 
)

◆ dict_create_linear_expandable()

struct dictionary* dict_create_linear_expandable ( enum language language  )

◆ dict_empty()

int dict_empty ( struct dictionary dict)

Definition at line 551 of file dictionary.c.

References dict_iterator::dict, and dict_iterator_first().

◆ dict_free()

void dict_free ( struct dictionary dict)

Definition at line 473 of file dictionary.c.

References DICT_VECTOR, and free().

◆ dict_iter_match_first()

struct symbol* dict_iter_match_first ( const struct dictionary dict,
const lookup_name_info name,
struct dict_iterator iterator 
)

Definition at line 523 of file dictionary.c.

References DICT_VECTOR, and name.

Referenced by block_iter_match_first(), block_iter_match_step(), and block_lookup_symbol_primary().

◆ dict_iter_match_next()

struct symbol* dict_iter_match_next ( const lookup_name_info name,
struct dict_iterator iterator 
)

◆ dict_iterator_first()

struct symbol* dict_iterator_first ( const struct dictionary dict,
struct dict_iterator iterator 
)

Definition at line 506 of file dictionary.c.

References DICT_VECTOR.

Referenced by block_iterator_first(), block_iterator_step(), and dict_empty().

◆ dict_iterator_next()

struct symbol* dict_iterator_next ( struct dict_iterator iterator)

Definition at line 516 of file dictionary.c.

References DICT_ITERATOR_DICT, and DICT_VECTOR.

Referenced by block_iterator_next(), and block_iterator_step().

◆ dict_size()

int dict_size ( const struct dictionary dict)

Definition at line 539 of file dictionary.c.

References DICT_VECTOR.

Referenced by dump_symtab_1().

◆ expand_hashtable()

static void expand_hashtable ( struct dictionary dict)
static

◆ free_hashed_expandable()

static void free_hashed_expandable ( struct dictionary dict)
static

Definition at line 707 of file dictionary.c.

References DICT_HASHED_BUCKETS, and xfree().

◆ free_linear_expandable()

static void free_linear_expandable ( struct dictionary dict)
static

Definition at line 908 of file dictionary.c.

References DICT_LINEAR_SYMS, and xfree().

◆ free_obstack()

static void free_obstack ( struct dictionary dict)
static

Definition at line 564 of file dictionary.c.

◆ insert_symbol_hashed()

static void insert_symbol_hashed ( struct dictionary dict,
struct symbol sym 
)
static

◆ iter_match_first_hashed()

static struct symbol * iter_match_first_hashed ( const struct dictionary dict,
const lookup_name_info name,
struct dict_iterator iterator 
)
static

◆ iter_match_first_linear()

static struct symbol * iter_match_first_linear ( const struct dictionary dict,
const lookup_name_info name,
struct dict_iterator iterator 
)
static

Definition at line 861 of file dictionary.c.

References DICT_ITERATOR_DICT, DICT_ITERATOR_INDEX, iter_match_next_linear(), and name.

◆ iter_match_next_hashed()

static struct symbol * iter_match_next_hashed ( const lookup_name_info name,
struct dict_iterator iterator 
)
static

◆ iter_match_next_linear()

static struct symbol * iter_match_next_linear ( const lookup_name_info name,
struct dict_iterator iterator 
)
static

◆ iterator_first_hashed()

static struct symbol * iterator_first_hashed ( const struct dictionary dict,
struct dict_iterator iterator 
)
static

Definition at line 579 of file dictionary.c.

References DICT_ITERATOR_DICT, DICT_ITERATOR_INDEX, and iterator_hashed_advance().

◆ iterator_first_linear()

static struct symbol * iterator_first_linear ( const struct dictionary dict,
struct dict_iterator iterator 
)
static

◆ iterator_hashed_advance()

static struct symbol * iterator_hashed_advance ( struct dict_iterator iter)
static

◆ iterator_next_hashed()

static struct symbol * iterator_next_hashed ( struct dict_iterator iterator)
static

Definition at line 588 of file dictionary.c.

References DICT_ITERATOR_CURRENT, and iterator_hashed_advance().

◆ iterator_next_linear()

static struct symbol * iterator_next_linear ( struct dict_iterator iterator)
static

◆ size_hashed()

static int size_hashed ( const struct dictionary dict)
static

Definition at line 699 of file dictionary.c.

References DICT_HASHED_NBUCKETS.

◆ size_hashed_expandable()

static int size_hashed_expandable ( const struct dictionary dict)
static

Definition at line 727 of file dictionary.c.

References DICT_HASHED_EXPANDABLE_NSYMS.

◆ size_linear()

static int size_linear ( const struct dictionary dict)
static

Definition at line 900 of file dictionary.c.

References DICT_LINEAR_NSYMS.

Variable Documentation

◆ dict_hashed_expandable_vector

const struct dict_vector dict_hashed_expandable_vector
static
Initial value:
=
{
}
static void free_hashed_expandable(struct dictionary *dict)
Definition: dictionary.c:707
static struct symbol * iterator_next_hashed(struct dict_iterator *iterator)
Definition: dictionary.c:588
static struct symbol * iterator_first_hashed(const struct dictionary *dict, struct dict_iterator *iterator)
Definition: dictionary.c:579
static void add_symbol_hashed_expandable(struct dictionary *dict, struct symbol *sym)
Definition: dictionary.c:714
static int size_hashed_expandable(const struct dictionary *dict)
Definition: dictionary.c:727
static struct symbol * iter_match_first_hashed(const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:626
static struct symbol * iter_match_next_hashed(const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:657

Definition at line 298 of file dictionary.c.

Referenced by dict_create_hashed_expandable().

◆ dict_hashed_vector

const struct dict_vector dict_hashed_vector
static
Initial value:
=
{
}
static struct symbol * iterator_next_hashed(struct dict_iterator *iterator)
Definition: dictionary.c:588
static struct symbol * iterator_first_hashed(const struct dictionary *dict, struct dict_iterator *iterator)
Definition: dictionary.c:579
static struct symbol * iter_match_first_hashed(const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:626
static struct symbol * iter_match_next_hashed(const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:657
static void add_symbol_nonexpandable(struct dictionary *dict, struct symbol *sym)
Definition: dictionary.c:570
static int size_hashed(const struct dictionary *dict)
Definition: dictionary.c:699
static void free_obstack(struct dictionary *dict)
Definition: dictionary.c:564

Definition at line 286 of file dictionary.c.

Referenced by dict_create_hashed().

◆ dict_linear_expandable_vector

const struct dict_vector dict_linear_expandable_vector
static
Initial value:
=
{
}
static struct symbol * iterator_first_linear(const struct dictionary *dict, struct dict_iterator *iterator)
Definition: dictionary.c:841
static void add_symbol_linear_expandable(struct dictionary *dict, struct symbol *sym)
Definition: dictionary.c:916
static int size_linear(const struct dictionary *dict)
Definition: dictionary.c:900
static void free_linear_expandable(struct dictionary *dict)
Definition: dictionary.c:908
static struct symbol * iter_match_next_linear(const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:872
static struct symbol * iter_match_first_linear(const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:861
static struct symbol * iterator_next_linear(struct dict_iterator *iterator)
Definition: dictionary.c:850

Definition at line 322 of file dictionary.c.

Referenced by dict_create_linear_expandable().

◆ dict_linear_vector

const struct dict_vector dict_linear_vector
static
Initial value:
=
{
}
static struct symbol * iterator_first_linear(const struct dictionary *dict, struct dict_iterator *iterator)
Definition: dictionary.c:841
static int size_linear(const struct dictionary *dict)
Definition: dictionary.c:900
static struct symbol * iter_match_next_linear(const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:872
static struct symbol * iter_match_first_linear(const struct dictionary *dict, const lookup_name_info &name, struct dict_iterator *iterator)
Definition: dictionary.c:861
static void add_symbol_nonexpandable(struct dictionary *dict, struct symbol *sym)
Definition: dictionary.c:570
static void free_obstack(struct dictionary *dict)
Definition: dictionary.c:564
static struct symbol * iterator_next_linear(struct dict_iterator *iterator)
Definition: dictionary.c:850

Definition at line 310 of file dictionary.c.

Referenced by dict_create_linear().