From f252c6d5dc49cb27838e153e863f16ea7895859e Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 16 Jan 2019 06:37:15 -0700 Subject: [PATCH] Make psymtab range adapter a method on objfile This removes the objfile_psymtabs class in favor of a method on objfile and on psymtab_storage. 2019-01-16 Tom Tromey * objfiles.h (struct objfile) : New method. (class objfile_psymtabs): Remove. * psymtab.h (class psymtab_storage) : New typedef. : New method. (require_partial_symbols): Change return type. * psymtab.c (require_partial_symbols) (psym_expand_symtabs_matching): Update. * mdebugread.c (parse_partial_symbols): Update. * dbxread.c (dbx_end_psymtab): Update. --- gdb/ChangeLog | 13 +++++++++++++ gdb/dbxread.c | 2 +- gdb/mdebugread.c | 2 +- gdb/objfiles.h | 21 ++++++++------------- gdb/psymtab.c | 6 +++--- gdb/psymtab.h | 15 ++++++++++++--- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d3b16f6..4e562fc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2019-01-16 Tom Tromey + + * objfiles.h (struct objfile) : New method. + (class objfile_psymtabs): Remove. + * psymtab.h (class psymtab_storage) : New + typedef. + : New method. + (require_partial_symbols): Change return type. + * psymtab.c (require_partial_symbols) + (psym_expand_symtabs_matching): Update. + * mdebugread.c (parse_partial_symbols): Update. + * dbxread.c (dbx_end_psymtab): Update. + 2019-01-15 Tom Tromey * symtab.c (lookup_objfile_from_block) diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 25bcc27..60d384b 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -2011,7 +2011,7 @@ dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst, address, set it to our starting address. Take care to not set our own ending address to our starting address. */ - for (partial_symtab *p1 : objfile_psymtabs (objfile)) + for (partial_symtab *p1 : objfile->psymtabs ()) if (!p1->text_high_valid && p1->text_low_valid && p1 != pst) p1->set_text_high (pst->raw_text_low ()); } diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index 4bdf973..accf07c 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -3684,7 +3684,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, && save_pst->text_low_valid && !(objfile->flags & OBJF_REORDERED)) { - for (partial_symtab *iter : objfile_psymtabs (objfile)) + for (partial_symtab *iter : objfile->psymtabs ()) { if (save_pst != iter && save_pst->raw_text_low () >= iter->raw_text_low () diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 2cf6195..5299a3c 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -293,6 +293,14 @@ struct objfile DISABLE_COPY_AND_ASSIGN (objfile); + /* A range adapter that makes it possible to iterate over all + psymtabs in one objfile. */ + + psymtab_storage::partial_symtab_range psymtabs () + { + return partial_symtabs->range (); + } + /* Reset the storage for the partial symbol tables. */ void reset_psymtabs () @@ -642,19 +650,6 @@ private: struct objfile *m_objfile; }; -/* A range adapter that makes it possible to iterate over all - psymtabs in one objfile. */ - -class objfile_psymtabs : public next_adapter -{ -public: - - explicit objfile_psymtabs (struct objfile *objfile) - : next_adapter (objfile->partial_symtabs->psymtabs) - { - } -}; - #define ALL_OBJFILE_OSECTIONS(objfile, osect) \ for (osect = objfile->sections; osect < objfile->sections_end; osect++) \ if (osect->the_bfd_section == NULL) \ diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 776f59c..17db297 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -104,7 +104,7 @@ psymtab_storage::allocate_psymtab () /* See psymtab.h. */ -objfile_psymtabs +psymtab_storage::partial_symtab_range require_partial_symbols (struct objfile *objfile, int verbose) { if ((objfile->flags & OBJF_PSYMTABS_READ) == 0) @@ -129,7 +129,7 @@ require_partial_symbols (struct objfile *objfile, int verbose) } } - return objfile_psymtabs (objfile); + return objfile->psymtabs (); } /* Helper function for psym_map_symtabs_matching_filename that @@ -1341,7 +1341,7 @@ psym_expand_symtabs_matching for (partial_symtab *ps : require_partial_symbols (objfile, 1)) ps->searched_flag = PST_NOT_SEARCHED; - for (partial_symtab *ps : objfile_psymtabs (objfile)) + for (partial_symtab *ps : objfile->psymtabs ()) { QUIT; diff --git a/gdb/psymtab.h b/gdb/psymtab.h index 26aeb29..3ee5eee 100644 --- a/gdb/psymtab.h +++ b/gdb/psymtab.h @@ -92,6 +92,16 @@ public: struct partial_symtab *allocate_psymtab (); + typedef next_adapter partial_symtab_range; + + /* A range adapter that makes it possible to iterate over all + psymtabs in one objfile. */ + + partial_symtab_range range () + { + return partial_symtab_range (psymtabs); + } + /* Each objfile points to a linked list of partial symtabs derived from this file, one partial symtab structure for each compilation unit @@ -144,8 +154,7 @@ extern const struct quick_symbol_functions dwarf2_debug_names_functions; are loaded. This function returns a range adapter suitable for iterating over the psymtabs of OBJFILE. */ -class objfile_psymtabs; -extern objfile_psymtabs require_partial_symbols (struct objfile *objfile, - int verbose); +extern psymtab_storage::partial_symtab_range require_partial_symbols + (struct objfile *objfile, int verbose); #endif /* PSYMTAB_H */ -- 2.7.4