Fix latent bug in read_addrmap_from_aranges
authorTom Tromey <tom@tromey.com>
Tue, 16 Nov 2021 21:25:08 +0000 (14:25 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 12 Apr 2022 15:31:15 +0000 (09:31 -0600)
Tom de Vries found a failure that we tracked down to a latent bug in
read_addrmap_from_aranges (previously create_addrmap_from_aranges).
The bug is that this code can erroneously reject .debug_aranges when
dwz is in use, due to CUs at duplicate offsets.  Because aranges can't
refer to a CU coming from the dwz file, the fix is to simply skip such
CUs in the loop.

gdb/dwarf2/read.c

index 9c78097bc450ef2af10dc61bb7d55acf5cae838e..425244358a71062aab96a2fa9038b0125b89485b 100644 (file)
@@ -2602,8 +2602,9 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
     {
       /* A TU will not need aranges, and skipping them here is an easy
         way of ignoring .debug_types -- and possibly seeing a
-        duplicate section offset -- entirely.  */
-      if (per_cu->is_debug_types)
+        duplicate section offset -- entirely.  The same applies to
+        units coming from a dwz file.  */
+      if (per_cu->is_debug_types || per_cu->is_dwz)
        continue;
 
       const auto insertpair