aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/coffread.c7
-rw-r--r--gdb/objfiles.c29
-rw-r--r--gdb/objfiles.h13
-rw-r--r--gdb/source.c21
-rw-r--r--gdb/symmisc.c56
6 files changed, 81 insertions, 56 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eb6c3a8..d07f2c1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,16 @@
2019-01-09 Tom Tromey <tom@tromey.com>
+ * symmisc.c (print_objfile_statistics, dump_objfile)
+ (maintenance_print_symbols): Use compunit_filetabs.
+ * source.c (forget_cached_source_info_for_objfile): Use
+ compunit_filetabs.
+ * objfiles.h (ALL_OBJFILE_FILETABS): Remove.
+ (ALL_FILETABS): Use compunit_filetabs.
+ * objfiles.c (objfile_relocate1): Use compunit_filetabs.
+ * coffread.c (coff_symtab_read): Use compunit_filetabs.
+
+2019-01-09 Tom Tromey <tom@tromey.com>
+
* symtab.h (ALL_COMPUNIT_FILETABS): Remove.
(compunit_filetabs): New.
* symtab.c (iterate_over_some_symtabs, find_pc_sect_line): Use
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 611febe..4f05295 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -1203,8 +1203,11 @@ coff_symtab_read (minimal_symbol_reader &reader,
/* Patch up any opaque types (references to types that are not defined
in the file where they are referenced, e.g. "struct foo *bar"). */
{
- ALL_OBJFILE_FILETABS (objfile, cu, s)
- patch_opaque_types (s);
+ for (compunit_symtab *cu : objfile_compunits (objfile))
+ {
+ for (symtab *s : compunit_filetabs (cu))
+ patch_opaque_types (s);
+ }
}
coffread_objfile = NULL;
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 659998a..75e041e 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -788,20 +788,23 @@ objfile_relocate1 (struct objfile *objfile,
/* OK, get all the symtabs. */
{
- ALL_OBJFILE_FILETABS (objfile, cust, s)
- {
- struct linetable *l;
+ for (compunit_symtab *cust : objfile_compunits (objfile))
+ {
+ for (symtab *s : compunit_filetabs (cust))
+ {
+ struct linetable *l;
- /* First the line table. */
- l = SYMTAB_LINETABLE (s);
- if (l)
- {
- for (int i = 0; i < l->nitems; ++i)
- l->item[i].pc += ANOFFSET (delta,
- COMPUNIT_BLOCK_LINE_SECTION
- (cust));
- }
- }
+ /* First the line table. */
+ l = SYMTAB_LINETABLE (s);
+ if (l)
+ {
+ for (int i = 0; i < l->nitems; ++i)
+ l->item[i].pc += ANOFFSET (delta,
+ COMPUNIT_BLOCK_LINE_SECTION
+ (cust));
+ }
+ }
+ }
for (compunit_symtab *cust : objfile_compunits (objfile))
{
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index d6a7064..33acb20 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -612,12 +612,6 @@ public:
(obj) != NULL; \
(obj) = (obj)->next)
-/* Traverse all symtabs in one objfile. */
-
-#define ALL_OBJFILE_FILETABS(objfile, cu, s) \
- for (compunit_symtab *cu : objfile_compunits (objfile)) \
- for (symtab *s : compunit_filetabs (cu))
-
/* A range adapter that makes it possible to iterate over all
compunits in one objfile. */
@@ -714,9 +708,10 @@ private:
/* Traverse all symtabs in all objfiles in the current symbol
space. */
-#define ALL_FILETABS(objfile, ps, s) \
- ALL_OBJFILES (objfile) \
- ALL_OBJFILE_FILETABS (objfile, ps, s)
+#define ALL_FILETABS(objfile, ps, s) \
+ ALL_OBJFILES (objfile) \
+ for (compunit_symtab *ps : objfile_compunits (objfile)) \
+ for (symtab *s : compunit_filetabs (cu))
#define ALL_OBJFILE_OSECTIONS(objfile, osect) \
for (osect = objfile->sections; osect < objfile->sections_end; osect++) \
diff --git a/gdb/source.c b/gdb/source.c
index ed0ff4c..14dda01 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -349,17 +349,20 @@ show_directories_command (struct ui_file *file, int from_tty,
void
forget_cached_source_info_for_objfile (struct objfile *objfile)
{
- ALL_OBJFILE_FILETABS (objfile, cu, s)
+ for (compunit_symtab *cu : objfile_compunits (objfile))
{
- if (s->line_charpos != NULL)
+ for (symtab *s : compunit_filetabs (cu))
{
- xfree (s->line_charpos);
- s->line_charpos = NULL;
- }
- if (s->fullname != NULL)
- {
- xfree (s->fullname);
- s->fullname = NULL;
+ if (s->line_charpos != NULL)
+ {
+ xfree (s->line_charpos);
+ s->line_charpos = NULL;
+ }
+ if (s->fullname != NULL)
+ {
+ xfree (s->fullname);
+ s->fullname = NULL;
+ }
}
}
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index f067292..23d232c 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -107,11 +107,14 @@ print_objfile_statistics (void)
if (objfile->sf)
objfile->sf->qf->print_stats (objfile);
i = linetables = 0;
- ALL_OBJFILE_FILETABS (objfile, cu, s)
+ for (compunit_symtab *cu : objfile_compunits (objfile))
{
- i++;
- if (SYMTAB_LINETABLE (s) != NULL)
- linetables++;
+ for (symtab *s : compunit_filetabs (cu))
+ {
+ i++;
+ if (SYMTAB_LINETABLE (s) != NULL)
+ linetables++;
+ }
}
blockvectors = std::distance (objfile_compunits (objfile).begin (),
objfile_compunits (objfile).end ());
@@ -157,16 +160,20 @@ dump_objfile (struct objfile *objfile)
if (objfile->compunit_symtabs != NULL)
{
printf_filtered ("Symtabs:\n");
- ALL_OBJFILE_FILETABS (objfile, cust, symtab)
+ for (compunit_symtab *cu : objfile_compunits (objfile))
{
- printf_filtered ("%s at ", symtab_to_filename_for_display (symtab));
- gdb_print_host_address (symtab, gdb_stdout);
- printf_filtered (", ");
- if (SYMTAB_OBJFILE (symtab) != objfile)
+ for (symtab *symtab : compunit_filetabs (cu))
{
- printf_filtered ("NOT ON CHAIN! ");
+ printf_filtered ("%s at ",
+ symtab_to_filename_for_display (symtab));
+ gdb_print_host_address (symtab, gdb_stdout);
+ printf_filtered (", ");
+ if (SYMTAB_OBJFILE (symtab) != objfile)
+ {
+ printf_filtered ("NOT ON CHAIN! ");
+ }
+ wrap_here (" ");
}
- wrap_here (" ");
}
printf_filtered ("\n\n");
}
@@ -477,21 +484,24 @@ maintenance_print_symbols (const char *args, int from_tty)
if (!print_for_objfile)
continue;
- ALL_OBJFILE_FILETABS (objfile, cu, s)
+ for (compunit_symtab *cu : objfile_compunits (objfile))
{
- int print_for_source = 0;
-
- QUIT;
- if (source_arg != NULL)
+ for (symtab *s : compunit_filetabs (cu))
{
- print_for_source
- = compare_filenames_for_search
- (symtab_to_filename_for_display (s), source_arg);
- found = 1;
+ int print_for_source = 0;
+
+ QUIT;
+ if (source_arg != NULL)
+ {
+ print_for_source
+ = compare_filenames_for_search
+ (symtab_to_filename_for_display (s), source_arg);
+ found = 1;
+ }
+ if (source_arg == NULL
+ || print_for_source)
+ dump_symtab (s, outfile);
}
- if (source_arg == NULL
- || print_for_source)
- dump_symtab (s, outfile);
}
}