[gdb/symtab] Fix assertion in write_debug_names
authorTom de Vries <tdevries@suse.de>
Thu, 10 Aug 2023 13:46:30 +0000 (15:46 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 10 Aug 2023 13:46:30 +0000 (15:46 +0200)
When running test-case gdb.dwarf2/pr13961.exp with target-board
cc-with-debug-names, I run into:
...
Running gdb.dwarf2/pr13961.exp ...
gdb compile failed, gdb/dwarf2/index-write.c:1305: internal-error: \
  write_debug_names: Assertion `counter == per_bfd->all_units.size ()' failed.
...

This is a regression since commit 542a33e348a ("Only use the per-BFD object to
 write a DWARF index"), which did:
...
-  gdb_assert (counter == per_objfile->per_bfd->all_comp_units.size ());
+  gdb_assert (counter == per_bfd->all_units.size ());
...

Fix this by reverting to using all_comp_units:
...
  gdb_assert (counter == per_bfd->all_comp_units.size ());
...

Tested on x86_64-linux, using target boards unix and cc-with-debug-names.

PR symtab/30741
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30741

gdb/dwarf2/index-write.c

index 66c5378d6770e12d6b809d9e071b7ce4b4533b65..fdc3b97968aa34b1391fdc2830394e5c8e4e466b 100644 (file)
@@ -1302,7 +1302,7 @@ write_debug_names (dwarf2_per_bfd *per_bfd, cooked_index *table,
     }
 
    /* Verify that all units are represented.  */
-  gdb_assert (counter == per_bfd->all_units.size ());
+  gdb_assert (counter == per_bfd->all_comp_units.size ());
   gdb_assert (types_counter == per_bfd->all_type_units.size ());
 
   for (const cooked_index_entry *entry : table->all_entries ())