[v2,1/4] Fix regression in c-linkage-name.exp with gdb index

Message ID 20221014160849.919621-2-tromey@adacore.com
State Committed
Commit 67e83a0deef78e9e286b663efd5a7144f09dbb95
Headers
Series Fix .gdb_index with Ada |

Commit Message

Tom Tromey Oct. 14, 2022, 4:08 p.m. UTC
  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 | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Patch

diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
index 4827b594994..4f89dfb65f7 100644
--- a/gdb/dwarf2/index-write.c
+++ b/gdb/dwarf2/index-write.c
@@ -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);