Replace symbol_symtab with symbol::symtab

This turns symbol_symtab into a method on symbol.  It also replaces
symbol_set_symtab with a method.
This commit is contained in:
Tom Tromey 2022-04-17 20:00:59 -06:00
parent bcd6845e2b
commit 4206d69e96
20 changed files with 76 additions and 76 deletions

View file

@ -3681,7 +3681,7 @@ See set/show multiple-symbol."));
struct symtab *symtab = NULL; struct symtab *symtab = NULL;
if (syms[i].symbol->is_objfile_owned ()) if (syms[i].symbol->is_objfile_owned ())
symtab = symbol_symtab (syms[i].symbol); symtab = syms[i].symbol->symtab ();
if (syms[i].symbol->line () != 0 && symtab != NULL) if (syms[i].symbol->line () != 0 && symtab != NULL)
{ {
@ -4712,9 +4712,9 @@ cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
the symbol is local or not, we check the block where we found it the symbol is local or not, we check the block where we found it
against the global and static blocks of its associated symtab. */ against the global and static blocks of its associated symtab. */
if (sym if (sym
&& BLOCKVECTOR_BLOCK (symbol_symtab (sym)->compunit ()->blockvector (), && BLOCKVECTOR_BLOCK (sym->symtab ()->compunit ()->blockvector (),
GLOBAL_BLOCK) != block GLOBAL_BLOCK) != block
&& BLOCKVECTOR_BLOCK (symbol_symtab (sym)->compunit ()->blockvector (), && BLOCKVECTOR_BLOCK (sym->symtab ()->compunit ()->blockvector (),
STATIC_BLOCK) != block) STATIC_BLOCK) != block)
return; return;

View file

@ -102,7 +102,7 @@ ftrace_print_filename (const struct btrace_function *bfun)
sym = bfun->sym; sym = bfun->sym;
if (sym != NULL) if (sym != NULL)
filename = symtab_to_filename_for_display (symbol_symtab (sym)); filename = symtab_to_filename_for_display (sym->symtab ());
else else
filename = "<unknown>"; filename = "<unknown>";
@ -210,8 +210,8 @@ ftrace_function_switched (const struct btrace_function *bfun,
return 1; return 1;
/* Check the location of those functions, as well. */ /* Check the location of those functions, as well. */
bfname = symtab_to_fullname (symbol_symtab (sym)); bfname = symtab_to_fullname (sym->symtab ());
fname = symtab_to_fullname (symbol_symtab (fun)); fname = symtab_to_fullname (fun->symtab ());
if (filename_cmp (fname, bfname) != 0) if (filename_cmp (fname, bfname) != 0)
return 1; return 1;
} }

View file

@ -1006,15 +1006,15 @@ buildsym_compunit::end_compunit_symtab_with_blockvector
/* Inlined functions may have symbols not in the global or /* Inlined functions may have symbols not in the global or
static symbol lists. */ static symbol lists. */
if (BLOCK_FUNCTION (block) != NULL) if (BLOCK_FUNCTION (block) != NULL)
if (symbol_symtab (BLOCK_FUNCTION (block)) == NULL) if (BLOCK_FUNCTION (block)->symtab () == NULL)
symbol_set_symtab (BLOCK_FUNCTION (block), symtab); BLOCK_FUNCTION (block)->set_symtab (symtab);
/* Note that we only want to fix up symbols from the local /* Note that we only want to fix up symbols from the local
blocks, not blocks coming from included symtabs. That is why blocks, not blocks coming from included symtabs. That is why
we use ALL_DICT_SYMBOLS here and not ALL_BLOCK_SYMBOLS. */ we use ALL_DICT_SYMBOLS here and not ALL_BLOCK_SYMBOLS. */
ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym) ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
if (symbol_symtab (sym) == NULL) if (sym->symtab () == NULL)
symbol_set_symtab (sym, symtab); sym->set_symtab (symtab);
} }
} }
@ -1114,8 +1114,8 @@ set_missing_symtab (struct pending *pending_list,
{ {
for (i = 0; i < pending->nsyms; ++i) for (i = 0; i < pending->nsyms; ++i)
{ {
if (symbol_symtab (pending->symbol[i]) == NULL) if (pending->symbol[i]->symtab () == NULL)
symbol_set_symtab (pending->symbol[i], cu->primary_filetab ()); pending->symbol[i]->set_symtab (cu->primary_filetab ());
} }
} }
} }

View file

@ -57,7 +57,7 @@ convert_one_symbol (compile_c_instance *context,
int is_local) int is_local)
{ {
gcc_type sym_type; gcc_type sym_type;
const char *filename = symbol_symtab (sym.symbol)->filename; const char *filename = sym.symbol->symtab ()->filename;
unsigned short line = sym.symbol->line (); unsigned short line = sym.symbol->line ();
context->error_symbol_once (sym.symbol); context->error_symbol_once (sym.symbol);

View file

@ -48,7 +48,7 @@ convert_one_symbol (compile_cplus_instance *instance,
{ {
/* Squash compiler warning. */ /* Squash compiler warning. */
gcc_type sym_type = 0; gcc_type sym_type = 0;
const char *filename = symbol_symtab (sym.symbol)->filename; const char *filename = sym.symbol->symtab ()->filename;
unsigned short line = sym.symbol->line (); unsigned short line = sym.symbol->line ();
instance->error_symbol_once (sym.symbol); instance->error_symbol_once (sym.symbol);

View file

@ -625,7 +625,7 @@ compile_cplus_convert_struct_or_union_members
we can do but ignore this member. */ we can do but ignore this member. */
continue; continue;
} }
const char *filename = symbol_symtab (sym.symbol)->filename; const char *filename = sym.symbol->symtab ()->filename;
unsigned int line = sym.symbol->line (); unsigned int line = sym.symbol->line ();
physaddr = sym.symbol->value_address (); physaddr = sym.symbol->value_address ();
@ -764,7 +764,7 @@ compile_cplus_convert_struct_or_union_methods (compile_cplus_instance *instance,
continue; continue;
} }
const char *filename = symbol_symtab (sym.symbol)->filename; const char *filename = sym.symbol->symtab ()->filename;
unsigned int line = sym.symbol->line (); unsigned int line = sym.symbol->line ();
CORE_ADDR address = BLOCK_START (sym.symbol->value_block ()); CORE_ADDR address = BLOCK_START (sym.symbol->value_block ());
const char *kind; const char *kind;

View file

@ -421,7 +421,7 @@ get_out_value_type (struct symbol *func_sym, struct objfile *objfile,
lookup_name_info func_matcher (GCC_FE_WRAPPER_FUNCTION, lookup_name_info func_matcher (GCC_FE_WRAPPER_FUNCTION,
symbol_name_match_type::SEARCH_NAME); symbol_name_match_type::SEARCH_NAME);
bv = symbol_symtab (func_sym)->compunit ()->blockvector (); bv = func_sym->symtab ()->compunit ()->blockvector ();
nblocks = BLOCKVECTOR_NBLOCKS (bv); nblocks = BLOCKVECTOR_NBLOCKS (bv);
gdb_ptr_type_sym = NULL; gdb_ptr_type_sym = NULL;

View file

@ -7810,9 +7810,9 @@ fixup_go_packaging (struct dwarf2_cu *cu)
struct objfile *objfile = cu->per_objfile->objfile; struct objfile *objfile = cu->per_objfile->objfile;
if (strcmp (package_name.get (), this_package_name.get ()) != 0) if (strcmp (package_name.get (), this_package_name.get ()) != 0)
complaint (_("Symtab %s has objects from two different Go packages: %s and %s"), complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
(symbol_symtab (sym) != NULL (sym->symtab () != NULL
? symtab_to_filename_for_display ? symtab_to_filename_for_display
(symbol_symtab (sym)) (sym->symtab ())
: objfile_name (objfile)), : objfile_name (objfile)),
this_package_name.get (), package_name.get ()); this_package_name.get (), package_name.get ());
} }
@ -12081,7 +12081,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
of gdb assume that symbols do, and this is reasonably of gdb assume that symbols do, and this is reasonably
true. */ true. */
for (symbol *sym : template_args) for (symbol *sym : template_args)
symbol_set_symtab (sym, symbol_symtab (templ_func)); sym->set_symtab (templ_func->symtab ());
} }
/* In C++, we can have functions nested inside functions (e.g., when /* In C++, we can have functions nested inside functions (e.g., when
@ -14977,7 +14977,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct symtab *symtab; struct symtab *symtab;
if (sym != nullptr) if (sym != nullptr)
symtab = symbol_symtab (sym); symtab = sym->symtab ();
else if (cu->line_header != nullptr) else if (cu->line_header != nullptr)
{ {
/* Any related symtab will do. */ /* Any related symtab will do. */
@ -15001,7 +15001,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
other parts of gdb assume that symbols do, and this is other parts of gdb assume that symbols do, and this is
reasonably true. */ reasonably true. */
for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i) for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab); TYPE_TEMPLATE_ARGUMENT (type, i)->set_symtab (symtab);
} }
} }
} }
@ -20667,7 +20667,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
if (fe == NULL) if (fe == NULL)
complaint (_("file index out of range")); complaint (_("file index out of range"));
else else
symbol_set_symtab (sym, fe->symtab); sym->set_symtab (fe->symtab);
} }
switch (die->tag) switch (die->tag)

View file

@ -2701,7 +2701,7 @@ find_frame_sal (frame_info *frame)
symtab_and_line sal; symtab_and_line sal;
if (sym->line () != 0) if (sym->line () != 0)
{ {
sal.symtab = symbol_symtab (sym); sal.symtab = sym->symtab ();
sal.line = sym->line (); sal.line = sym->line ();
} }
else else

View file

@ -364,7 +364,7 @@ gdbscm_symbol_symtab (SCM self)
if (!symbol->is_objfile_owned ()) if (!symbol->is_objfile_owned ())
return SCM_BOOL_F; return SCM_BOOL_F;
return stscm_scm_from_symtab (symbol_symtab (symbol)); return stscm_scm_from_symtab (symbol->symtab ());
} }
/* (symbol-name <gdb:symbol>) -> string */ /* (symbol-name <gdb:symbol>) -> string */

View file

@ -589,7 +589,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
/* The name. */ /* The name. */
block_name->set_domain (VAR_DOMAIN); block_name->set_domain (VAR_DOMAIN);
block_name->set_aclass_index (LOC_BLOCK); block_name->set_aclass_index (LOC_BLOCK);
symbol_set_symtab (block_name, filetab); block_name->set_symtab (filetab);
block_name->set_type (lookup_function_type (block_type)); block_name->set_type (lookup_function_type (block_type));
block_name->set_value_block (new_block); block_name->set_value_block (new_block);

View file

@ -2188,7 +2188,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec *ls)
for (const auto &sym : ls->labels.label_symbols) for (const auto &sym : ls->labels.label_symbols)
{ {
struct program_space *pspace struct program_space *pspace
= symbol_symtab (sym.symbol)->compunit ()->objfile ()->pspace; = sym.symbol->symtab ()->compunit ()->objfile ()->pspace;
if (symbol_to_sal (&sal, state->funfirstline, sym.symbol) if (symbol_to_sal (&sal, state->funfirstline, sym.symbol)
&& maybe_add_address (state->addr_set, pspace, sal.pc)) && maybe_add_address (state->addr_set, pspace, sal.pc))
@ -2210,7 +2210,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec *ls)
for (const auto &sym : ls->function_symbols) for (const auto &sym : ls->function_symbols)
{ {
program_space *pspace program_space *pspace
= symbol_symtab (sym.symbol)->compunit ()->objfile ()->pspace; = sym.symbol->symtab ()->compunit ()->objfile ()->pspace;
set_current_program_space (pspace); set_current_program_space (pspace);
/* Don't skip to the first line of the function if we /* Don't skip to the first line of the function if we
@ -3483,8 +3483,8 @@ compare_symbols (const block_symbol &a, const block_symbol &b)
{ {
uintptr_t uia, uib; uintptr_t uia, uib;
uia = (uintptr_t) symbol_symtab (a.symbol)->compunit ()->objfile ()->pspace; uia = (uintptr_t) a.symbol->symtab ()->compunit ()->objfile ()->pspace;
uib = (uintptr_t) symbol_symtab (b.symbol)->compunit ()->objfile ()->pspace; uib = (uintptr_t) b.symbol->symtab ()->compunit ()->objfile ()->pspace;
if (uia < uib) if (uia < uib)
return true; return true;
@ -3608,7 +3608,7 @@ find_method (struct linespec_state *self,
/* Program spaces that are executing startup should have /* Program spaces that are executing startup should have
been filtered out earlier. */ been filtered out earlier. */
pspace = symbol_symtab (sym)->compunit ()->objfile ()->pspace; pspace = sym->symtab ()->compunit ()->objfile ()->pspace;
gdb_assert (!pspace->executing_startup); gdb_assert (!pspace->executing_startup);
set_current_program_space (pspace); set_current_program_space (pspace);
t = check_typedef (sym->type ()); t = check_typedef (sym->type ());
@ -3619,7 +3619,7 @@ find_method (struct linespec_state *self,
sure not to miss the last batch. */ sure not to miss the last batch. */
if (ix == sym_classes->size () - 1 if (ix == sym_classes->size () - 1
|| (pspace || (pspace
!= (symbol_symtab (sym_classes->at (ix + 1).symbol) != (sym_classes->at (ix + 1).symbol->symtab ()
->compunit ()->objfile ()->pspace))) ->compunit ()->objfile ()->pspace)))
{ {
/* If we did not find a direct implementation anywhere in /* If we did not find a direct implementation anywhere in
@ -3985,7 +3985,7 @@ find_label_symbols (struct linespec_state *self,
{ {
fn_sym = elt.symbol; fn_sym = elt.symbol;
set_current_program_space set_current_program_space
(symbol_symtab (fn_sym)->compunit ()->objfile ()->pspace); (fn_sym->symtab ()->compunit ()->objfile ()->pspace);
block = fn_sym->value_block (); block = fn_sym->value_block ();
find_label_symbols_in_block (block, name, fn_sym, completion_mode, find_label_symbols_in_block (block, name, fn_sym, completion_mode,
@ -4380,7 +4380,7 @@ symbol_to_sal (struct symtab_and_line *result,
if (sym->aclass () == LOC_LABEL && sym->value_address () != 0) if (sym->aclass () == LOC_LABEL && sym->value_address () != 0)
{ {
*result = {}; *result = {};
result->symtab = symbol_symtab (sym); result->symtab = sym->symtab ();
result->symbol = sym; result->symbol = sym;
result->line = sym->line (); result->line = sym->line ();
result->pc = sym->value_address (); result->pc = sym->value_address ();
@ -4396,7 +4396,7 @@ symbol_to_sal (struct symtab_and_line *result,
{ {
/* We know its line number. */ /* We know its line number. */
*result = {}; *result = {};
result->symtab = symbol_symtab (sym); result->symtab = sym->symtab ();
result->symbol = sym; result->symbol = sym;
result->line = sym->line (); result->line = sym->line ();
result->pc = sym->value_address (); result->pc = sym->value_address ();

View file

@ -4486,7 +4486,7 @@ mylookup_symbol (const char *name, const struct block *block,
static void static void
add_symbol (struct symbol *s, struct symtab *symtab, struct block *b) add_symbol (struct symbol *s, struct symtab *symtab, struct block *b)
{ {
symbol_set_symtab (s, symtab); s->set_symtab (symtab);
mdict_add_symbol (BLOCK_MULTIDICT (b), s); mdict_add_symbol (BLOCK_MULTIDICT (b), s);
} }

View file

@ -132,7 +132,7 @@ mi_symbol_info (enum search_domain kind, const char *name_regexp,
/* As long as we have debug symbols... */ /* As long as we have debug symbols... */
while (i < symbols.size () && symbols[i].msymbol.minsym == nullptr) while (i < symbols.size () && symbols[i].msymbol.minsym == nullptr)
{ {
symtab *symtab = symbol_symtab (symbols[i].symbol); symtab *symtab = symbols[i].symbol->symtab ();
ui_out_emit_tuple symtab_tuple_emitter (uiout, nullptr); ui_out_emit_tuple symtab_tuple_emitter (uiout, nullptr);
uiout->field_string ("filename", uiout->field_string ("filename",
@ -144,7 +144,7 @@ mi_symbol_info (enum search_domain kind, const char *name_regexp,
/* As long as we have debug symbols from this symtab... */ /* As long as we have debug symbols from this symtab... */
for (; (i < symbols.size () for (; (i < symbols.size ()
&& symbols[i].msymbol.minsym == nullptr && symbols[i].msymbol.minsym == nullptr
&& symbol_symtab (symbols[i].symbol) == symtab); && symbols[i].symbol->symtab () == symtab);
++i) ++i)
{ {
symbol_search &s = symbols[i]; symbol_search &s = symbols[i];
@ -256,7 +256,7 @@ output_module_symbols_in_single_module_and_file
/* The symbol for the first result, and the symtab in which it resides. */ /* The symbol for the first result, and the symtab in which it resides. */
const symbol *first_result_symbol = iter->second.symbol; const symbol *first_result_symbol = iter->second.symbol;
symtab *first_symbtab = symbol_symtab (first_result_symbol); symtab *first_symbtab = first_result_symbol->symtab ();
/* Formatted output. */ /* Formatted output. */
ui_out_emit_tuple current_file (uiout, nullptr); ui_out_emit_tuple current_file (uiout, nullptr);
@ -269,7 +269,7 @@ output_module_symbols_in_single_module_and_file
we change module, or we change symtab. */ we change module, or we change symtab. */
for (; (iter != end for (; (iter != end
&& first_module_symbol == iter->first.symbol && first_module_symbol == iter->first.symbol
&& first_symbtab == symbol_symtab (iter->second.symbol)); && first_symbtab == iter->second.symbol->symtab ());
++iter) ++iter)
output_debug_symbol (uiout, kind, iter->second.symbol, output_debug_symbol (uiout, kind, iter->second.symbol,
iter->second.block); iter->second.block);

View file

@ -91,7 +91,7 @@ sympy_get_symtab (PyObject *self, void *closure)
if (!symbol->is_objfile_owned ()) if (!symbol->is_objfile_owned ())
Py_RETURN_NONE; Py_RETURN_NONE;
return symtab_to_symtab_object (symbol_symtab (symbol)); return symtab_to_symtab_object (symbol->symtab ());
} }
static PyObject * static PyObject *
@ -303,7 +303,7 @@ set_symbol (symbol_object *obj, struct symbol *symbol)
obj->symbol = symbol; obj->symbol = symbol;
obj->prev = NULL; obj->prev = NULL;
if (symbol->is_objfile_owned () if (symbol->is_objfile_owned ()
&& symbol_symtab (symbol) != NULL) && symbol->symtab () != NULL)
{ {
struct objfile *objfile = symbol->objfile (); struct objfile *objfile = symbol->objfile ();
@ -349,7 +349,7 @@ sympy_dealloc (PyObject *obj)
sym_obj->prev->next = sym_obj->next; sym_obj->prev->next = sym_obj->next;
else if (sym_obj->symbol != NULL else if (sym_obj->symbol != NULL
&& sym_obj->symbol->is_objfile_owned () && sym_obj->symbol->is_objfile_owned ()
&& symbol_symtab (sym_obj->symbol) != NULL) && sym_obj->symbol->symtab () != NULL)
{ {
set_objfile_data (sym_obj->symbol->objfile (), set_objfile_data (sym_obj->symbol->objfile (),
sympy_objfile_data_key, sym_obj->next); sympy_objfile_data_key, sym_obj->next);

View file

@ -831,7 +831,7 @@ gdbpy_rbreak (PyObject *self, PyObject *args, PyObject *kw)
if (p.msymbol.minsym == NULL) if (p.msymbol.minsym == NULL)
{ {
struct symtab *symtab = symbol_symtab (p.symbol); struct symtab *symtab = p.symbol->symtab ();
const char *fullname = symtab_to_fullname (symtab); const char *fullname = symtab_to_fullname (symtab);
symbol_name = fullname; symbol_name = fullname;

View file

@ -1067,7 +1067,7 @@ btrace_compute_src_line_range (const struct btrace_function *bfun,
if (sym == NULL) if (sym == NULL)
goto out; goto out;
symtab = symbol_symtab (sym); symtab = sym->symtab ();
for (const btrace_insn &insn : bfun->insn) for (const btrace_insn &insn : bfun->insn)
{ {
@ -1100,7 +1100,7 @@ btrace_call_history_src_line (struct ui_out *uiout,
return; return;
uiout->field_string ("file", uiout->field_string ("file",
symtab_to_filename_for_display (symbol_symtab (sym)), symtab_to_filename_for_display (sym->symtab ()),
file_name_style.style ()); file_name_style.style ());
btrace_compute_src_line_range (bfun, &begin, &end); btrace_compute_src_line_range (bfun, &begin, &end);

View file

@ -329,7 +329,7 @@ select_source_symtab (struct symtab *s)
if (sal.symtab == NULL) if (sal.symtab == NULL)
/* We couldn't find the location of `main', possibly due to missing /* We couldn't find the location of `main', possibly due to missing
line number info, fall back to line 1 in the corresponding file. */ line number info, fall back to line 1 in the corresponding file. */
loc->set (symbol_symtab (bsym.symbol), 1); loc->set (bsym.symbol->symtab (), 1);
else else
loc->set (sal.symtab, std::max (sal.line - (lines_to_list - 1), 1)); loc->set (sal.symtab, std::max (sal.line - (lines_to_list - 1), 1));
return; return;

View file

@ -1803,7 +1803,7 @@ fixup_symbol_section (struct symbol *sym, struct objfile *objfile)
/* We either have an OBJFILE, or we can get at it from the sym's /* We either have an OBJFILE, or we can get at it from the sym's
symtab. Anything else is a bug. */ symtab. Anything else is a bug. */
gdb_assert (objfile || symbol_symtab (sym)); gdb_assert (objfile || sym->symtab ());
if (objfile == NULL) if (objfile == NULL)
objfile = sym->objfile (); objfile = sym->objfile ();
@ -3940,7 +3940,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not
have to be set by the caller so we use SYM instead. */ have to be set by the caller so we use SYM instead. */
if (sym != NULL if (sym != NULL
&& symbol_symtab (sym)->compunit ()->locations_valid ()) && sym->symtab ()->compunit ()->locations_valid ())
force_skip = 0; force_skip = 0;
saved_pc = pc; saved_pc = pc;
@ -4020,7 +4020,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
is aligned. */ is aligned. */
if (!force_skip && sym && start_sal.symtab == NULL) if (!force_skip && sym && start_sal.symtab == NULL)
{ {
pc = skip_prologue_using_lineinfo (pc, symbol_symtab (sym)); pc = skip_prologue_using_lineinfo (pc, sym->symtab ());
/* Recalculate the line number. */ /* Recalculate the line number. */
start_sal = find_pc_sect_line (pc, section, 0); start_sal = find_pc_sect_line (pc, section, 0);
} }
@ -4052,7 +4052,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
&& BLOCK_FUNCTION (function_block)->line () != 0) && BLOCK_FUNCTION (function_block)->line () != 0)
{ {
sal->line = BLOCK_FUNCTION (function_block)->line (); sal->line = BLOCK_FUNCTION (function_block)->line ();
sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block)); sal->symtab = BLOCK_FUNCTION (function_block)->symtab ();
} }
} }
@ -4692,8 +4692,8 @@ symbol_search::compare_search_syms (const symbol_search &sym_a,
{ {
int c; int c;
c = FILENAME_CMP (symbol_symtab (sym_a.symbol)->filename, c = FILENAME_CMP (sym_a.symbol->symtab ()->filename,
symbol_symtab (sym_b.symbol)->filename); sym_b.symbol->symtab ()->filename);
if (c != 0) if (c != 0)
return c; return c;
@ -4873,7 +4873,7 @@ global_symbol_searcher::add_matching_symbols
ALL_BLOCK_SYMBOLS (b, iter, sym) ALL_BLOCK_SYMBOLS (b, iter, sym)
{ {
struct symtab *real_symtab = symbol_symtab (sym); struct symtab *real_symtab = sym->symtab ();
QUIT; QUIT;
@ -5146,7 +5146,7 @@ print_symbol_info (enum search_domain kind,
int block, const char *last) int block, const char *last)
{ {
scoped_switch_to_sym_language_if_auto l (sym); scoped_switch_to_sym_language_if_auto l (sym);
struct symtab *s = symbol_symtab (sym); struct symtab *s = sym->symtab ();
if (last != NULL) if (last != NULL)
{ {
@ -5266,7 +5266,7 @@ symtab_symbol_info (bool quiet, bool exclude_minsyms,
p.block, p.block,
last_filename); last_filename);
last_filename last_filename
= symtab_to_filename_for_display (symbol_symtab (p.symbol)); = symtab_to_filename_for_display (p.symbol->symtab ());
} }
} }
} }
@ -5486,7 +5486,7 @@ rbreak_command (const char *regexp, int from_tty)
{ {
if (p.msymbol.minsym == NULL) if (p.msymbol.minsym == NULL)
{ {
struct symtab *symtab = symbol_symtab (p.symbol); struct symtab *symtab = p.symbol->symtab ();
const char *fullname = symtab_to_fullname (symtab); const char *fullname = symtab_to_fullname (symtab);
string = string_printf ("%s:'%s'", fullname, string = string_printf ("%s:'%s'", fullname,
@ -6612,19 +6612,19 @@ symbol::arch () const
/* See symtab.h. */ /* See symtab.h. */
struct symtab * struct symtab *
symbol_symtab (const struct symbol *symbol) symbol::symtab () const
{ {
gdb_assert (symbol->is_objfile_owned ()); gdb_assert (is_objfile_owned ());
return symbol->owner.symtab; return owner.symtab;
} }
/* See symtab.h. */ /* See symtab.h. */
void void
symbol_set_symtab (struct symbol *symbol, struct symtab *symtab) symbol::set_symtab (struct symtab *symtab)
{ {
gdb_assert (symbol->is_objfile_owned ()); gdb_assert (is_objfile_owned ());
symbol->owner.symtab = symtab; owner.symtab = symtab;
} }
/* See symtab.h. */ /* See symtab.h. */
@ -6870,7 +6870,7 @@ info_module_subcommand (bool quiet, const char *module_regexp,
print_symbol_info (FUNCTIONS_DOMAIN, q.symbol, q.block, print_symbol_info (FUNCTIONS_DOMAIN, q.symbol, q.block,
last_filename); last_filename);
last_filename last_filename
= symtab_to_filename_for_display (symbol_symtab (q.symbol)); = symtab_to_filename_for_display (q.symbol->symtab ());
} }
} }

View file

@ -1386,6 +1386,18 @@ struct symbol : public general_symbol_info, public allocate_on_obstack
struct gdbarch *arch () const; struct gdbarch *arch () const;
/* Return the symtab of this symbol. It is an error to call this if
is_objfile_owned is false, which only happens for
architecture-provided types. */
struct symtab *symtab () const;
/* Set the symtab of this symbol to SYMTAB. It is an error to call
this if is_objfile_owned is false, which only happens for
architecture-provided types. */
void set_symtab (struct symtab *symtab);
/* Data type of value */ /* Data type of value */
struct type *m_type = nullptr; struct type *m_type = nullptr;
@ -1502,18 +1514,6 @@ extern int register_symbol_block_impl (enum address_class aclass,
extern int register_symbol_register_impl (enum address_class, extern int register_symbol_register_impl (enum address_class,
const struct symbol_register_ops *); const struct symbol_register_ops *);
/* Return the SYMTAB of SYMBOL.
It is an error to call this if symbol.is_objfile_owned is false, which
only happens for architecture-provided types. */
extern struct symtab *symbol_symtab (const struct symbol *symbol);
/* Set the symtab of SYMBOL to SYMTAB.
It is an error to call this if symbol.is_objfile_owned is false, which
only happens for architecture-provided types. */
extern void symbol_set_symtab (struct symbol *symbol, struct symtab *symtab);
/* An instance of this type is used to represent a C++ template /* An instance of this type is used to represent a C++ template
function. A symbol is really of this type iff function. A symbol is really of this type iff
symbol::is_cplus_template_function is true. */ symbol::is_cplus_template_function is true. */