Refine range check in create_addrmap_from_gdb_index

PR symtab/33247 points out that this check in
create_addrmap_from_gdb_index:

      if (lo > hi)
	{
	  complaint (_(".gdb_index address table has invalid range (%s - %s)"),
		     hex_string (lo), hex_string (hi));

... should probably use ">=" instead.  Reading a bit further the
reason seems obvious:

      mutable_map.set_empty (lo, hi - 1, index->units[cu_index]);

Here if lo==hi, then this will insert a "reversed" range into the
addrmap.

Apparently some LLVM tool can erroneously create a .gdb_index like
this.

No test because it seems like more trouble to write than it's worth.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33247
Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
Tom Tromey
2025-08-13 10:16:46 -06:00
parent 73dcc5e15b
commit 421c4a00d9

View File

@@ -1419,7 +1419,7 @@ create_addrmap_from_gdb_index (dwarf2_per_objfile *per_objfile,
cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
iter += 4;
if (lo > hi)
if (lo >= hi)
{
complaint (_(".gdb_index address table has invalid range (%s - %s)"),
hex_string (lo), hex_string (hi));