Make psymtab range adapter a method on objfile
authorTom Tromey <tom@tromey.com>
Wed, 16 Jan 2019 13:37:15 +0000 (06:37 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 17 Jan 2019 22:42:05 +0000 (15:42 -0700)
This removes the objfile_psymtabs class in favor of a method on
objfile and on psymtab_storage.

2019-01-16  Tom Tromey  <tom@tromey.com>

* objfiles.h (struct objfile) <psymtabs>: New method.
(class objfile_psymtabs): Remove.
* psymtab.h (class psymtab_storage) <partial_symtab_range>: New
typedef.
<range>: 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
gdb/dbxread.c
gdb/mdebugread.c
gdb/objfiles.h
gdb/psymtab.c
gdb/psymtab.h

index d3b16f64c512f641de350233959482f7e509fc0f..4e562fc00900c4259d3f1c21cf2b8c004abc166f 100644 (file)
@@ -1,3 +1,16 @@
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
+       * objfiles.h (struct objfile) <psymtabs>: New method.
+       (class objfile_psymtabs): Remove.
+       * psymtab.h (class psymtab_storage) <partial_symtab_range>: New
+       typedef.
+       <range>: 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  <tom@tromey.com>
 
        * symtab.c (lookup_objfile_from_block)
index 25bcc2778c57c100fc1e4c60cfef2c63f1f7f7c4..60d384b27fe533c0b33410a888bea590462df7c7 100644 (file)
@@ -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 ());
     }
index 4bdf9731cfe0a7f4d8f2eaf03f87354bdf66a492..accf07c27804bd29f0080b4d14d84d886c44819b 100644 (file)
@@ -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 ()
index 2cf61957ec1d1a3b534c0acbce71f045a24a653b..5299a3c8e5e8a87b9b2d20c249ac18a7068bfc01 100644 (file)
@@ -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<struct partial_symtab>
-{
-public:
-
-  explicit objfile_psymtabs (struct objfile *objfile)
-    : next_adapter<struct partial_symtab> (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)                                        \
index 776f59c3acb43d4e85076ee02a58a8be41a83229..17db29759c4ca8be592696c23838935a1d9ff6a8 100644 (file)
@@ -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;
 
index 26aeb29646ebf65fae2b77b2421df91fcc8076ce..3ee5eee0b659522aef70f9af6b443027f2788e67 100644 (file)
@@ -92,6 +92,16 @@ public:
 
   struct partial_symtab *allocate_psymtab ();
 
+  typedef next_adapter<struct partial_symtab> 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 */