Fix regression in c-linkage-name.exp with gdb index
authorTom Tromey <tromey@adacore.com>
Fri, 14 Oct 2022 13:10:08 +0000 (07:10 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 17 Oct 2022 14:01:39 +0000 (08:01 -0600)
c-linkage-name.exp started failing with the gdb-index target board due
to an earlier patch.  The problem here is that some linkage names must
be in the index -- but, based on inspection, not C++ linkage names.
This patch updates the code to exclude only these.

gdb/dwarf2/index-write.c

index 4827b59499430df13f4b7aa640e3808dcac2a1ca..4f89dfb65f7d41bf53b876fbc8cb3188fa2e1de3 100644 (file)
@@ -1111,12 +1111,13 @@ write_cooked_index (cooked_index_vector *table,
 
   for (const cooked_index_entry *entry : table->all_entries ())
     {
-      /* GDB never put linkage names into .gdb_index.  The theory here
-        is that a linkage name will normally be in the minimal
+      /* GDB never put C++ linkage names into .gdb_index.  The theory
+        here is that a linkage name will normally be in the minimal
         symbols anyway, so including it in the index is usually
         redundant -- and the cases where it would not be redundant
         are rare and not worth supporting.  */
-      if ((entry->flags & IS_LINKAGE) != 0)
+      if (entry->per_cu->lang () == language_cplus
+         && (entry->flags & IS_LINKAGE) != 0)
        continue;
 
       const auto it = cu_index_htab.find (entry->per_cu);