gdb: move compunit_filetabs to compunit_symtab::filetabs

Make compunit_filetabs, used to iterate a compunit_symtab's filetabs, a
method of compunit_symtab.  The name filetabs conflicts with the current
name of the field.  Rename the field to m_filetabs, since at this point
nothing outside of compunit_symtab uses it, so we should treat it as
private (even though it's not actually private).  Rename the
last_filetab field to m_last_filetab as well (it's only used on
compunit_symtab::add_filetab).

Adjust the COMPUNIT_FILETABS macro to keep its current behavior of
returning the first filetab.

Change-Id: I537b553a44451c52d24b18ee1bfa47e23747cfc3
This commit is contained in:
Simon Marchi 2021-11-19 21:18:05 -05:00 committed by Simon Marchi
parent 36664835fa
commit 102cc23543
7 changed files with 39 additions and 41 deletions

View file

@ -1177,7 +1177,7 @@ coff_symtab_read (minimal_symbol_reader &reader,
{ {
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
patch_opaque_types (s); patch_opaque_types (s);
} }
} }

View file

@ -947,8 +947,8 @@ count_symtabs_and_blocks (int *nr_symtabs_ptr, int *nr_compunit_symtabs_ptr,
{ {
++nr_compunit_symtabs; ++nr_compunit_symtabs;
nr_blocks += BLOCKVECTOR_NBLOCKS (COMPUNIT_BLOCKVECTOR (cu)); nr_blocks += BLOCKVECTOR_NBLOCKS (COMPUNIT_BLOCKVECTOR (cu));
nr_symtabs += std::distance (compunit_filetabs (cu).begin (), nr_symtabs += std::distance (cu->filetabs ().begin (),
compunit_filetabs (cu).end ()); cu->filetabs ().end ());
} }
} }
} }

View file

@ -651,7 +651,7 @@ objfile_relocate1 (struct objfile *objfile,
{ {
for (compunit_symtab *cust : objfile->compunits ()) for (compunit_symtab *cust : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cust)) for (symtab *s : cust->filetabs ())
{ {
struct linetable *l; struct linetable *l;

View file

@ -344,7 +344,7 @@ select_source_symtab (struct symtab *s)
{ {
for (compunit_symtab *cu : ofp->compunits ()) for (compunit_symtab *cu : ofp->compunits ())
{ {
for (symtab *symtab : compunit_filetabs (cu)) for (symtab *symtab : cu->filetabs ())
{ {
const char *name = symtab->filename; const char *name = symtab->filename;
int len = strlen (name); int len = strlen (name);
@ -424,7 +424,7 @@ forget_cached_source_info_for_objfile (struct objfile *objfile)
{ {
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
if (s->fullname != NULL) if (s->fullname != NULL)
{ {

View file

@ -74,7 +74,7 @@ print_objfile_statistics (void)
i = linetables = 0; i = linetables = 0;
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
i++; i++;
if (SYMTAB_LINETABLE (s) != NULL) if (SYMTAB_LINETABLE (s) != NULL)
@ -126,7 +126,7 @@ dump_objfile (struct objfile *objfile)
printf_filtered ("Symtabs:\n"); printf_filtered ("Symtabs:\n");
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *symtab : compunit_filetabs (cu)) for (symtab *symtab : cu->filetabs ())
{ {
printf_filtered ("%s at %s", printf_filtered ("%s at %s",
symtab_to_filename_for_display (symtab), symtab_to_filename_for_display (symtab),
@ -469,7 +469,7 @@ maintenance_print_symbols (const char *args, int from_tty)
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
int print_for_source = 0; int print_for_source = 0;
@ -756,7 +756,7 @@ maintenance_info_symtabs (const char *regexp, int from_tty)
{ {
int printed_compunit_symtab_start = 0; int printed_compunit_symtab_start = 0;
for (symtab *symtab : compunit_filetabs (cust)) for (symtab *symtab : cust->filetabs ())
{ {
QUIT; QUIT;
@ -1025,7 +1025,7 @@ maintenance_info_line_tables (const char *regexp, int from_tty)
{ {
for (compunit_symtab *cust : objfile->compunits ()) for (compunit_symtab *cust : objfile->compunits ())
{ {
for (symtab *symtab : compunit_filetabs (cust)) for (symtab *symtab : cust->filetabs ())
{ {
QUIT; QUIT;

View file

@ -367,15 +367,15 @@ compunit_symtab::set_primary_filetab (symtab *primary_filetab)
symtab *prev_filetab = nullptr; symtab *prev_filetab = nullptr;
/* Move PRIMARY_FILETAB to the head of the filetab list. */ /* Move PRIMARY_FILETAB to the head of the filetab list. */
for (symtab *filetab : compunit_filetabs (this)) for (symtab *filetab : this->filetabs ())
{ {
if (filetab == primary_filetab) if (filetab == primary_filetab)
{ {
if (prev_filetab != nullptr) if (prev_filetab != nullptr)
{ {
prev_filetab->next = primary_filetab->next; prev_filetab->next = primary_filetab->next;
primary_filetab->next = this->filetabs; primary_filetab->next = m_filetabs;
this->filetabs = primary_filetab; m_filetabs = primary_filetab;
} }
break; break;
@ -384,7 +384,7 @@ compunit_symtab::set_primary_filetab (symtab *primary_filetab)
prev_filetab = filetab; prev_filetab = filetab;
} }
gdb_assert (primary_filetab == this->filetabs); gdb_assert (primary_filetab == m_filetabs);
} }
/* See symtab.h. */ /* See symtab.h. */
@ -392,10 +392,10 @@ compunit_symtab::set_primary_filetab (symtab *primary_filetab)
struct symtab * struct symtab *
compunit_symtab::primary_filetab () const compunit_symtab::primary_filetab () const
{ {
gdb_assert (this->filetabs != nullptr); gdb_assert (m_filetabs != nullptr);
/* The primary file symtab is the first one in the list. */ /* The primary file symtab is the first one in the list. */
return this->filetabs; return m_filetabs;
} }
/* See symtab.h. */ /* See symtab.h. */
@ -533,7 +533,7 @@ iterate_over_some_symtabs (const char *name,
for (cust = first; cust != NULL && cust != after_last; cust = cust->next) for (cust = first; cust != NULL && cust != after_last; cust = cust->next)
{ {
for (symtab *s : compunit_filetabs (cust)) for (symtab *s : cust->filetabs ())
{ {
if (compare_filenames_for_search (s->filename, name)) if (compare_filenames_for_search (s->filename, name))
{ {
@ -3282,7 +3282,7 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
They all have the same apriori range, that we found was right; They all have the same apriori range, that we found was right;
but they have different line tables. */ but they have different line tables. */
for (symtab *iter_s : compunit_filetabs (cust)) for (symtab *iter_s : cust->filetabs ())
{ {
/* Find the best line in this symtab. */ /* Find the best line in this symtab. */
l = SYMTAB_LINETABLE (iter_s); l = SYMTAB_LINETABLE (iter_s);
@ -3483,7 +3483,7 @@ find_line_symtab (struct symtab *sym_tab, int line,
{ {
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
struct linetable *l; struct linetable *l;
int ind; int ind;
@ -4531,7 +4531,7 @@ info_sources_worker (struct ui_out *uiout,
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
const char *file = symtab_to_filename_for_display (s); const char *file = symtab_to_filename_for_display (s);
const char *fullname = symtab_to_fullname (s); const char *fullname = symtab_to_fullname (s);
@ -6190,7 +6190,7 @@ make_source_files_completion_list (const char *text, const char *word)
{ {
for (compunit_symtab *cu : objfile->compunits ()) for (compunit_symtab *cu : objfile->compunits ())
{ {
for (symtab *s : compunit_filetabs (cu)) for (symtab *s : cu->filetabs ())
{ {
if (not_interesting_fname (s->filename)) if (not_interesting_fname (s->filename))
continue; continue;

View file

@ -1401,6 +1401,10 @@ struct symtab
char *fullname; char *fullname;
}; };
/* A range adapter to allowing iterating over all the file tables in a list. */
using symtab_range = next_range<symtab>;
#define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab) #define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab)
#define SYMTAB_LINETABLE(symtab) ((symtab)->linetable) #define SYMTAB_LINETABLE(symtab) ((symtab)->linetable)
#define SYMTAB_LANGUAGE(symtab) ((symtab)->language) #define SYMTAB_LANGUAGE(symtab) ((symtab)->language)
@ -1459,17 +1463,22 @@ struct compunit_symtab
m_objfile = objfile; m_objfile = objfile;
} }
symtab_range filetabs () const
{
return symtab_range (m_filetabs);
}
void add_filetab (symtab *filetab) void add_filetab (symtab *filetab)
{ {
if (this->filetabs == nullptr) if (m_filetabs == nullptr)
{ {
this->filetabs = filetab; m_filetabs = filetab;
this->last_filetab = filetab; m_last_filetab = filetab;
} }
else else
{ {
this->last_filetab->next = filetab; m_last_filetab->next = filetab;
this->last_filetab = filetab; m_last_filetab = filetab;
} }
} }
@ -1503,14 +1512,14 @@ struct compunit_symtab
source file (e.g., .c, .cc) is guaranteed to be first. source file (e.g., .c, .cc) is guaranteed to be first.
Each symtab is a file, either the "main" source file (e.g., .c, .cc) Each symtab is a file, either the "main" source file (e.g., .c, .cc)
or header (e.g., .h). */ or header (e.g., .h). */
struct symtab *filetabs; symtab *m_filetabs;
/* Last entry in FILETABS list. /* Last entry in FILETABS list.
Subfiles are added to the end of the list so they accumulate in order, Subfiles are added to the end of the list so they accumulate in order,
with the main source subfile living at the front. with the main source subfile living at the front.
The main reason is so that the main source file symtab is at the head The main reason is so that the main source file symtab is at the head
of the list, and the rest appear in order for debugging convenience. */ of the list, and the rest appear in order for debugging convenience. */
struct symtab *last_filetab; symtab *m_last_filetab;
/* Non-NULL string that identifies the format of the debugging information, /* Non-NULL string that identifies the format of the debugging information,
such as "stabs", "dwarf 1", "dwarf 2", "coff", etc. This is mostly useful such as "stabs", "dwarf 1", "dwarf 2", "coff", etc. This is mostly useful
@ -1568,7 +1577,7 @@ struct compunit_symtab
using compunit_symtab_range = next_range<compunit_symtab>; using compunit_symtab_range = next_range<compunit_symtab>;
#define COMPUNIT_FILETABS(cust) ((cust)->filetabs) #define COMPUNIT_FILETABS(cust) (*(cust)->filetabs ().begin ())
#define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat) #define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat)
#define COMPUNIT_PRODUCER(cust) ((cust)->producer) #define COMPUNIT_PRODUCER(cust) ((cust)->producer)
#define COMPUNIT_DIRNAME(cust) ((cust)->dirname) #define COMPUNIT_DIRNAME(cust) ((cust)->dirname)
@ -1578,17 +1587,6 @@ using compunit_symtab_range = next_range<compunit_symtab>;
#define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid) #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid)
#define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table) #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table)
/* A range adapter to allowing iterating over all the file tables
within a compunit. */
using symtab_range = next_range<symtab>;
static inline symtab_range
compunit_filetabs (compunit_symtab *cu)
{
return symtab_range (cu->filetabs);
}
/* Return the language of CUST. */ /* Return the language of CUST. */
extern enum language compunit_language (const struct compunit_symtab *cust); extern enum language compunit_language (const struct compunit_symtab *cust);