Simplify version check in dw2_symtab_iter_next
authorTom Tromey <tom@tromey.com>
Mon, 22 Nov 2021 23:50:46 +0000 (16:50 -0700)
committerTom Tromey <tom@tromey.com>
Wed, 20 Apr 2022 15:10:03 +0000 (09:10 -0600)
This simplifies the index versio check in dw2_symtab_iter_next, by
passing a reference to the index object to this function.  This avoids
an indirection via the per_bfd object.

gdb/dwarf2/read.c

index 3053ec9b3038d8617b7302da770f6cba239ea91b..f340cd68e67389bd82468eb517d83fe09a7d5059 100644 (file)
@@ -2949,7 +2949,8 @@ dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
 /* Return the next matching CU or NULL if there are no more.  */
 
 static struct dwarf2_per_cu_data *
-dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
+dw2_symtab_iter_next (struct dw2_symtab_iterator *iter,
+                     mapped_index &index)
 {
   dwarf2_per_objfile *per_objfile = iter->per_objfile;
 
@@ -2963,9 +2964,8 @@ dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
         Indices prior to version 7 don't record them,
         and indices >= 7 may elide them for certain symbols
         (gold does this).  */
-      int attrs_valid =
-       (per_objfile->per_bfd->index_table->version >= 7
-        && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
+      int attrs_valid = (index.version >= 7
+                        && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
 
       /* Don't crash on bad data.  */
       if (cu_index >= per_objfile->per_bfd->all_comp_units.size ())
@@ -3141,7 +3141,7 @@ dwarf2_gdb_index::expand_matching_symbols
       struct dwarf2_per_cu_data *per_cu;
 
       dw2_symtab_iter_init (&iter, per_objfile, block_kind, domain, namei);
-      while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
+      while ((per_cu = dw2_symtab_iter_next (&iter, index)) != NULL)
        dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
                                         nullptr);
       return true;