/* Support routines for building symbol tables in GDB's internal format.
- Copyright (C) 1986-2018 Free Software Foundation, Inc.
+ Copyright (C) 1986-2019 Free Software Foundation, Inc.
This file is part of GDB.
{
if (m_pending_macros == nullptr)
m_pending_macros = new_macro_table (&m_objfile->per_bfd->storage_obstack,
- m_objfile->per_bfd->macro_cache,
+ &m_objfile->per_bfd->macro_cache,
m_compunit_symtab);
return m_pending_macros;
}
if (symbol)
{
- BLOCK_DICT (block)
- = dict_create_linear (&m_objfile->objfile_obstack,
- m_language, *listhead);
+ BLOCK_MULTIDICT (block)
+ = mdict_create_linear (&m_objfile->objfile_obstack, *listhead);
}
else
{
if (expandable)
{
- BLOCK_DICT (block) = dict_create_hashed_expandable (m_language);
- dict_add_pending (BLOCK_DICT (block), *listhead);
+ BLOCK_MULTIDICT (block) = mdict_create_hashed_expandable (m_language);
+ mdict_add_pending (BLOCK_MULTIDICT (block), *listhead);
}
else
{
- BLOCK_DICT (block) =
- dict_create_hashed (&m_objfile->objfile_obstack,
- m_language, *listhead);
+ BLOCK_MULTIDICT (block) =
+ mdict_create_hashed (&m_objfile->objfile_obstack, *listhead);
}
}
if (symbol)
{
struct type *ftype = SYMBOL_TYPE (symbol);
- struct dict_iterator iter;
+ struct mdict_iterator miter;
SYMBOL_BLOCK_VALUE (symbol) = block;
BLOCK_FUNCTION (block) = symbol;
/* Here we want to directly access the dictionary, because
we haven't fully initialized the block yet. */
- ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
+ ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
{
if (SYMBOL_IS_ARGUMENT (sym))
nparams++;
iparams = 0;
/* Here we want to directly access the dictionary, because
we haven't fully initialized the block yet. */
- ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
+ ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
{
if (iparams == nparams)
break;
int section, int expandable)
{
struct compunit_symtab *cu = m_compunit_symtab;
- struct symtab *symtab;
struct blockvector *blockvector;
struct subfile *subfile;
CORE_ADDR end_addr;
/* Allocate a symbol table if necessary. */
if (subfile->symtab == NULL)
subfile->symtab = allocate_symtab (cu, subfile->name);
- symtab = subfile->symtab;
+ struct symtab *symtab = subfile->symtab;
/* Fill in its components. */
main_symtab = m_main_subfile->symtab;
prev_symtab = NULL;
- ALL_COMPUNIT_FILETABS (cu, symtab)
+ for (symtab *symtab : compunit_filetabs (cu))
{
if (symtab == main_symtab)
{
{
/* Reallocate the dirname on the symbol obstack. */
const char *comp_dir = m_comp_dir.get ();
- COMPUNIT_DIRNAME (cu)
- = (const char *) obstack_copy0 (&m_objfile->objfile_obstack,
- comp_dir, strlen (comp_dir));
+ COMPUNIT_DIRNAME (cu) = obstack_strdup (&m_objfile->objfile_obstack,
+ comp_dir);
}
/* Save the debug format string (if any) in the symtab. */
int block_i;
/* The main source file's symtab. */
- symtab = COMPUNIT_FILETABS (cu);
+ struct symtab *symtab = COMPUNIT_FILETABS (cu);
for (block_i = 0; block_i < BLOCKVECTOR_NBLOCKS (blockvector); block_i++)
{
struct block *block = BLOCKVECTOR_BLOCK (blockvector, block_i);
struct symbol *sym;
- struct dict_iterator iter;
+ struct mdict_iterator miter;
/* Inlined functions may have symbols not in the global or
static symbol lists. */
/* Note that we only want to fix up symbols from the local
blocks, not blocks coming from included symtabs. That is why
we use ALL_DICT_SYMBOLS here and not ALL_BLOCK_SYMBOLS. */
- ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
+ ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
if (symbol_symtab (sym) == NULL)
symbol_set_symtab (sym, symtab);
}
to the primary symtab. */
set_missing_symtab (m_file_symbols, cust);
- dict_add_pending (BLOCK_DICT (block), m_file_symbols);
+ mdict_add_pending (BLOCK_MULTIDICT (block), m_file_symbols);
}
if (m_global_symbols != NULL)
to the primary symtab. */
set_missing_symtab (m_global_symbols, cust);
- dict_add_pending (BLOCK_DICT (block),
+ mdict_add_pending (BLOCK_MULTIDICT (block),
m_global_symbols);
}
}