mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
gdb: remove SYMTAB_COMPUNIT macro, add getter/setter
Add a getter and a setter for a symtab's compunit_symtab. Remove the corresponding macro and adjust all callers. For brevity, I chose the name "compunit" instead of "compunit_symtab" the the field, getter and setter names. Since we are already in symtab context, the _symtab suffix seems redundant. Change-Id: I4b9b731c96e3594f7733e75af1e3d01bc0e4fe92
This commit is contained in:
parent
10cc645b6a
commit
c615965258
@ -2474,8 +2474,8 @@ amd64_skip_xmm_prologue (CORE_ADDR pc, CORE_ADDR start_pc)
|
||||
|
||||
start_pc_sal = find_pc_sect_line (start_pc, NULL, 0);
|
||||
if (start_pc_sal.symtab == NULL
|
||||
|| producer_is_gcc_ge_4 (SYMTAB_COMPUNIT
|
||||
(start_pc_sal.symtab)->producer ()) < 6
|
||||
|| producer_is_gcc_ge_4 (start_pc_sal.symtab->compunit ()
|
||||
->producer ()) < 6
|
||||
|| start_pc_sal.pc != start_pc || pc >= start_pc_sal.end)
|
||||
return pc;
|
||||
|
||||
|
@ -9230,7 +9230,7 @@ resolve_sal_pc (struct symtab_and_line *sal)
|
||||
struct symbol *sym;
|
||||
|
||||
bv = blockvector_for_pc_sect (sal->pc, 0, &b,
|
||||
SYMTAB_COMPUNIT (sal->symtab));
|
||||
sal->symtab->compunit ());
|
||||
if (bv != NULL)
|
||||
{
|
||||
sym = block_linkage_function (b);
|
||||
|
@ -43,7 +43,8 @@ sal_macro_scope (struct symtab_and_line sal)
|
||||
|
||||
if (sal.symtab == NULL)
|
||||
return NULL;
|
||||
cust = SYMTAB_COMPUNIT (sal.symtab);
|
||||
|
||||
cust = sal.symtab->compunit ();
|
||||
if (cust->macro_table () == NULL)
|
||||
return NULL;
|
||||
|
||||
|
@ -4502,7 +4502,7 @@ add_block (struct block *b, struct symtab *s)
|
||||
+ BLOCKVECTOR_NBLOCKS (bv)
|
||||
* sizeof (bv->block)));
|
||||
if (bv != SYMTAB_BLOCKVECTOR (s))
|
||||
SYMTAB_COMPUNIT (s)->set_blockvector (bv);
|
||||
s->compunit ()->set_blockvector (bv);
|
||||
|
||||
BLOCKVECTOR_BLOCK (bv, BLOCKVECTOR_NBLOCKS (bv)++) = b;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ mi_cmd_file_list_exec_source_file (const char *command, char **argv, int argc)
|
||||
uiout->field_string ("fullname", symtab_to_fullname (st.symtab));
|
||||
|
||||
uiout->field_signed ("macro-info",
|
||||
SYMTAB_COMPUNIT (st.symtab)->macro_table () != NULL);
|
||||
st.symtab->compunit ()->macro_table () != NULL);
|
||||
}
|
||||
|
||||
/* Implement -file-list-exec-source-files command. */
|
||||
|
@ -471,7 +471,7 @@ or1k_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
|
||||
{
|
||||
struct symtab_and_line prologue_sal = find_pc_line (start_pc, 0);
|
||||
struct compunit_symtab *compunit
|
||||
= SYMTAB_COMPUNIT (prologue_sal.symtab);
|
||||
= prologue_sal.symtab->compunit ();
|
||||
const char *debug_format = compunit->debugformat ();
|
||||
|
||||
if ((NULL != debug_format)
|
||||
|
@ -131,7 +131,7 @@ stpy_get_producer (PyObject *self, void *closure)
|
||||
struct compunit_symtab *cust;
|
||||
|
||||
STPY_REQUIRE_VALID (self, symtab);
|
||||
cust = SYMTAB_COMPUNIT (symtab);
|
||||
cust = symtab->compunit ();
|
||||
if (cust->producer () != nullptr)
|
||||
{
|
||||
const char *producer = cust->producer ();
|
||||
|
@ -711,7 +711,7 @@ info_source_command (const char *ignore, int from_tty)
|
||||
return;
|
||||
}
|
||||
|
||||
cust = SYMTAB_COMPUNIT (s);
|
||||
cust = s->compunit ();
|
||||
printf_filtered (_("Current source file is %s\n"), s->filename);
|
||||
if (SYMTAB_DIRNAME (s) != NULL)
|
||||
printf_filtered (_("Compilation directory is %s\n"), SYMTAB_DIRNAME (s));
|
||||
@ -1184,9 +1184,9 @@ open_source_file (struct symtab *s)
|
||||
|
||||
if (fd.get () < 0)
|
||||
{
|
||||
if (SYMTAB_COMPUNIT (s) != nullptr)
|
||||
if (s->compunit () != nullptr)
|
||||
{
|
||||
const objfile *ofp = SYMTAB_COMPUNIT (s)->objfile ();
|
||||
const objfile *ofp = s->compunit ()->objfile ();
|
||||
|
||||
std::string srcpath;
|
||||
if (IS_ABSOLUTE_PATH (s->filename))
|
||||
|
@ -2807,7 +2807,7 @@ allocate_symtab (struct compunit_symtab *cust, const char *filename)
|
||||
cust->add_filetab (symtab);
|
||||
|
||||
/* Backlink to the containing compunit symtab. */
|
||||
symtab->compunit_symtab = cust;
|
||||
symtab->set_compunit (cust);
|
||||
|
||||
return symtab;
|
||||
}
|
||||
|
@ -329,7 +329,7 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
|
||||
}
|
||||
else
|
||||
{
|
||||
compunit_symtab *compunit = SYMTAB_COMPUNIT (symtab);
|
||||
compunit_symtab *compunit = symtab->compunit ();
|
||||
const char *compunit_filename
|
||||
= symtab_to_filename_for_display (compunit->primary_filetab ());
|
||||
|
||||
@ -342,7 +342,7 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
|
||||
compunit_symtabs included by this one. */
|
||||
if (is_main_symtab_of_compunit_symtab (symtab))
|
||||
{
|
||||
struct compunit_symtab *cust = SYMTAB_COMPUNIT (symtab);
|
||||
struct compunit_symtab *cust = symtab->compunit ();
|
||||
|
||||
if (cust->user != nullptr)
|
||||
{
|
||||
@ -956,14 +956,14 @@ maintenance_print_one_line_table (struct symtab *symtab, void *data)
|
||||
struct linetable *linetable;
|
||||
struct objfile *objfile;
|
||||
|
||||
objfile = symtab->compunit_symtab->objfile ();
|
||||
objfile = symtab->compunit ()->objfile ();
|
||||
printf_filtered (_("objfile: %ps ((struct objfile *) %s)\n"),
|
||||
styled_string (file_name_style.style (),
|
||||
objfile_name (objfile)),
|
||||
host_address_to_string (objfile));
|
||||
printf_filtered (_("compunit_symtab: %s ((struct compunit_symtab *) %s)\n"),
|
||||
symtab->compunit_symtab->name,
|
||||
host_address_to_string (symtab->compunit_symtab));
|
||||
symtab->compunit ()->name,
|
||||
host_address_to_string (symtab->compunit ()));
|
||||
printf_filtered (_("symtab: %ps ((struct symtab *) %s)\n"),
|
||||
styled_string (file_name_style.style (),
|
||||
symtab_to_fullname (symtab)),
|
||||
|
@ -3709,7 +3709,7 @@ find_function_start_sal_1 (CORE_ADDR func_addr, obj_section *section,
|
||||
symtab_and_line sal = find_pc_sect_line (func_addr, section, 0);
|
||||
|
||||
if (funfirstline && sal.symtab != NULL
|
||||
&& (SYMTAB_COMPUNIT (sal.symtab)->locations_valid ()
|
||||
&& (sal.symtab->compunit ()->locations_valid ()
|
||||
|| SYMTAB_LANGUAGE (sal.symtab) == language_asm))
|
||||
{
|
||||
struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
|
||||
@ -3885,7 +3885,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
|
||||
have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not
|
||||
have to be set by the caller so we use SYM instead. */
|
||||
if (sym != NULL
|
||||
&& SYMTAB_COMPUNIT (symbol_symtab (sym))->locations_valid ())
|
||||
&& symbol_symtab (sym)->compunit ()->locations_valid ())
|
||||
force_skip = 0;
|
||||
|
||||
saved_pc = pc;
|
||||
@ -6095,7 +6095,7 @@ collect_file_symbol_completion_matches (completion_tracker &tracker,
|
||||
for symbols which match. */
|
||||
iterate_over_symtabs (srcfile, [&] (symtab *s)
|
||||
{
|
||||
add_symtab_completions (SYMTAB_COMPUNIT (s),
|
||||
add_symtab_completions (s->compunit (),
|
||||
tracker, mode, lookup_name,
|
||||
sym_text, word, TYPE_CODE_UNDEF);
|
||||
return false;
|
||||
|
21
gdb/symtab.h
21
gdb/symtab.h
@ -1373,6 +1373,16 @@ typedef std::vector<CORE_ADDR> section_offsets;
|
||||
|
||||
struct symtab
|
||||
{
|
||||
struct compunit_symtab *compunit () const
|
||||
{
|
||||
return m_compunit;
|
||||
}
|
||||
|
||||
void set_compunit (struct compunit_symtab *compunit)
|
||||
{
|
||||
m_compunit = compunit;
|
||||
}
|
||||
|
||||
/* Unordered chain of all filetabs in the compunit, with the exception
|
||||
that the "main" source file is the first entry in the list. */
|
||||
|
||||
@ -1380,7 +1390,7 @@ struct symtab
|
||||
|
||||
/* Backlink to containing compunit symtab. */
|
||||
|
||||
struct compunit_symtab *compunit_symtab;
|
||||
struct compunit_symtab *m_compunit;
|
||||
|
||||
/* Table mapping core addresses to line numbers for this file.
|
||||
Can be NULL if none. Never shared between different symtabs. */
|
||||
@ -1405,15 +1415,14 @@ struct symtab
|
||||
|
||||
using symtab_range = next_range<symtab>;
|
||||
|
||||
#define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab)
|
||||
#define SYMTAB_LINETABLE(symtab) ((symtab)->linetable)
|
||||
#define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
|
||||
#define SYMTAB_BLOCKVECTOR(symtab) \
|
||||
(SYMTAB_COMPUNIT (symtab)->blockvector ())
|
||||
(symtab->compunit ()->blockvector ())
|
||||
#define SYMTAB_OBJFILE(symtab) \
|
||||
(SYMTAB_COMPUNIT (symtab)->objfile ())
|
||||
(symtab->compunit ()->objfile ())
|
||||
#define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
|
||||
#define SYMTAB_DIRNAME(symtab) (SYMTAB_COMPUNIT (symtab)->dirname ())
|
||||
#define SYMTAB_DIRNAME(symtab) ((symtab)->compunit ()->dirname ())
|
||||
|
||||
/* Compunit symtabs contain the actual "symbol table", aka blockvector, as well
|
||||
as the list of all source files (what gdb has historically associated with
|
||||
@ -1665,7 +1674,7 @@ extern enum language compunit_language (const struct compunit_symtab *cust);
|
||||
static inline bool
|
||||
is_main_symtab_of_compunit_symtab (struct symtab *symtab)
|
||||
{
|
||||
return symtab == SYMTAB_COMPUNIT (symtab)->primary_filetab ();
|
||||
return symtab == symtab->compunit ()->primary_filetab ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -495,7 +495,7 @@ z80_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
|
||||
if (prologue_end != 0)
|
||||
{
|
||||
struct symtab_and_line prologue_sal = find_pc_line (func_addr, 0);
|
||||
struct compunit_symtab *compunit = SYMTAB_COMPUNIT (prologue_sal.symtab);
|
||||
struct compunit_symtab *compunit = prologue_sal.symtab->compunit ();
|
||||
const char *debug_format = compunit->debugformat ();
|
||||
|
||||
if (debug_format != NULL &&
|
||||
|
Loading…
Reference in New Issue
Block a user