===================================================================
@@ -9181,6 +9181,16 @@ add_pubtype (tree decl, dw_die_ref die)
}
}
+/* We use one of the reserved bits in the flags byte to tell the linker
+ which index entries do not need to list all CUs that contain the symbol. */
+
+#define GDB_INDEX_RESERVED_SINGLE_CU 8
+#define GDB_INDEX_RESERVED_SET_VALUE(cu_index, value) \
+ do { \
+ (cu_index) |= (((value) & GDB_INDEX_RESERVED_MASK) \
+ << GDB_INDEX_RESERVED_SHIFT); \
+ } while (0)
+
/* Output a single entry in the pubnames table. */
static void
@@ -9227,6 +9237,9 @@ output_pubname (dw_offset die_offset, pu
GDB_INDEX_SYMBOL_STATIC_SET_VALUE(flags, is_static);
break;
case DW_TAG_namespace:
+ GDB_INDEX_SYMBOL_KIND_SET_VALUE(flags, GDB_INDEX_SYMBOL_KIND_TYPE);
+ GDB_INDEX_RESERVED_SET_VALUE(flags, GDB_INDEX_RESERVED_SINGLE_CU);
+ break;
case DW_TAG_imported_declaration:
GDB_INDEX_SYMBOL_KIND_SET_VALUE(flags, GDB_INDEX_SYMBOL_KIND_TYPE);
break;
@@ -9236,6 +9249,7 @@ output_pubname (dw_offset die_offset, pu
case DW_TAG_union_type:
case DW_TAG_enumeration_type:
GDB_INDEX_SYMBOL_KIND_SET_VALUE(flags, GDB_INDEX_SYMBOL_KIND_TYPE);
+ GDB_INDEX_RESERVED_SET_VALUE(flags, GDB_INDEX_RESERVED_SINGLE_CU);
if (!is_cxx () && !is_java ())
GDB_INDEX_SYMBOL_STATIC_SET_VALUE(flags, 1);
break;