]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/symtab] Detect overlapping ranges in create_addrmap_from_gdb_index
authorTom de Vries <tdevries@suse.de>
Sat, 23 Aug 2025 04:11:41 +0000 (06:11 +0200)
committerTom de Vries <tdevries@suse.de>
Sat, 23 Aug 2025 04:11:41 +0000 (06:11 +0200)
In create_addrmap_from_gdb_index, use the return value of
addrmap_mutable::insert_empty to detect overlapping ranges.

Tested on x86_64-linux.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/dwarf2/read-gdb-index.c

index 7db2834f4d328dcb23a53e99e858c9501a51f040..79d19a3abaa361a1811ab5d00e50e1ca41e44848 100644 (file)
@@ -1434,7 +1434,15 @@ create_addrmap_from_gdb_index (dwarf2_per_objfile *per_objfile,
          return false;
        }
 
-      mutable_map.set_empty (lo, hi - 1, index->units[cu_index]);
+      bool full_range_p
+       = mutable_map.set_empty (lo, hi - 1, index->units[cu_index]);
+      if (!full_range_p)
+       {
+         complaint (_(".gdb_index address table has a range (%s - %s) that"
+                      " overlaps with an earlier range"),
+                    hex_string (lo), hex_string (hi));
+         return false;
+       }
     }
 
   index->index_addrmap