Add dwarf2_per_cu_data::addresses_seen
authorTom Tromey <tom@tromey.com>
Fri, 11 Jun 2021 19:23:28 +0000 (13:23 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 12 Apr 2022 15:31:15 +0000 (09:31 -0600)
This adds a new member to dwarf2_per_cu_data that indicates whether
addresses have been seen for this CU.  This is then set by the
.debug_aranges reader.  The idea here is to detect when a CU does not
have address information, so that the new indexer will know to do
extra scanning in that case.

gdb/dwarf2/read.c
gdb/dwarf2/read.h

index 425244358a71062aab96a2fa9038b0125b89485b..e0ae73307328b94c1fd88fe896c7dc658578856a 100644 (file)
@@ -2740,6 +2740,8 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
                 - baseaddr);
          addrmap_set_empty (mutable_map, start, end - 1, per_cu);
        }
+
+      per_cu->addresses_seen = true;
     }
 
   return true;
index effeaabc4af7fc6c61c445e233b43a3599af0658..58f6a673e69b96704c6f88c78adeb05a162e1905 100644 (file)
@@ -104,6 +104,7 @@ struct dwarf2_per_cu_data
       reading_dwo_directly (false),
       tu_read (false),
       m_header_read_in (false),
+      addresses_seen (false),
       unit_type {},
       lang (language_unknown)
   {
@@ -154,6 +155,10 @@ struct dwarf2_per_cu_data
      it private at the moment.  */
   mutable bool m_header_read_in : 1;
 
+  /* If addresses have been read for this CU (usually from
+     .debug_aranges), then this flag is set.  */
+  bool addresses_seen : 1;
+
   /* The unit type of this CU.  */
   ENUM_BITFIELD (dwarf_unit_type) unit_type : 8;