diff options
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/coffread.c | 7 | ||||
-rw-r--r-- | gdb/objfiles.c | 29 | ||||
-rw-r--r-- | gdb/objfiles.h | 13 | ||||
-rw-r--r-- | gdb/source.c | 21 | ||||
-rw-r--r-- | gdb/symmisc.c | 56 |
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); } } |