+2014-04-22 Marc Glisse <marc.glisse@inria.fr>
+
+ PR libstdc++/43622
+ * c-common.c (registered_builtin_types): Make non-static.
+ * c-common.h (registered_builtin_types): Declare.
+
2014-04-14 Richard Biener <rguenther@suse.de>
Marc Glisse <marc.glisse@inria.fr>
/* Used for communication between c_common_type_for_mode and
c_register_builtin_type. */
-static GTY(()) tree registered_builtin_types;
+tree registered_builtin_types;
/* Return a data type that has machine mode MODE.
If the mode is an integer,
extern vec<tree, va_gc> *make_tree_vector_from_list (tree);
extern vec<tree, va_gc> *make_tree_vector_copy (const vec<tree, va_gc> *);
+/* Used for communication between c_common_type_for_mode and
+ c_register_builtin_type. */
+extern GTY(()) tree registered_builtin_types;
+
/* In c-gimplify.c */
extern void c_genericize (tree);
extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
+2014-04-22 Marc Glisse <marc.glisse@inria.fr>
+
+ PR libstdc++/43622
+ * rtti.c (emit_support_tinfo_1): New function, extracted from
+ emit_support_tinfos.
+ (emit_support_tinfos): Call it and iterate on registered_builtin_types.
+
2014-04-22 Jakub Jelinek <jakub@redhat.com>
PR c/59073
pop_abi_namespace ();
}
+/* Helper for emit_support_tinfos. Emits the type_info descriptor of
+ a single type. */
+
+void
+emit_support_tinfo_1 (tree bltn)
+{
+ tree types[3];
+
+ if (bltn == NULL_TREE)
+ return;
+ types[0] = bltn;
+ types[1] = build_pointer_type (bltn);
+ types[2] = build_pointer_type (cp_build_qualified_type (bltn,
+ TYPE_QUAL_CONST));
+
+ for (int i = 0; i < 3; ++i)
+ {
+ tree tinfo = get_tinfo_decl (types[i]);
+ TREE_USED (tinfo) = 1;
+ mark_needed (tinfo);
+ /* The C++ ABI requires that these objects be COMDAT. But,
+ On systems without weak symbols, initialized COMDAT
+ objects are emitted with internal linkage. (See
+ comdat_linkage for details.) Since we want these objects
+ to have external linkage so that copies do not have to be
+ emitted in code outside the runtime library, we make them
+ non-COMDAT here.
+
+ It might also not be necessary to follow this detail of the
+ ABI. */
+ if (!flag_weak || ! targetm.cxx.library_rtti_comdat ())
+ {
+ gcc_assert (TREE_PUBLIC (tinfo) && !DECL_COMDAT (tinfo));
+ DECL_INTERFACE_KNOWN (tinfo) = 1;
+ }
+ }
+}
+
/* Emit the type_info descriptors which are guaranteed to be in the runtime
support. Generating them here guarantees consistency with the other
structures. We use the following heuristic to determine when the runtime
return;
doing_runtime = 1;
for (ix = 0; fundamentals[ix]; ix++)
- {
- tree bltn = *fundamentals[ix];
- tree types[3];
- int i;
-
- if (bltn == NULL_TREE)
- continue;
- types[0] = bltn;
- types[1] = build_pointer_type (bltn);
- types[2] = build_pointer_type (cp_build_qualified_type (bltn,
- TYPE_QUAL_CONST));
-
- for (i = 0; i < 3; ++i)
- {
- tree tinfo;
-
- tinfo = get_tinfo_decl (types[i]);
- TREE_USED (tinfo) = 1;
- mark_needed (tinfo);
- /* The C++ ABI requires that these objects be COMDAT. But,
- On systems without weak symbols, initialized COMDAT
- objects are emitted with internal linkage. (See
- comdat_linkage for details.) Since we want these objects
- to have external linkage so that copies do not have to be
- emitted in code outside the runtime library, we make them
- non-COMDAT here.
-
- It might also not be necessary to follow this detail of the
- ABI. */
- if (!flag_weak || ! targetm.cxx.library_rtti_comdat ())
- {
- gcc_assert (TREE_PUBLIC (tinfo) && !DECL_COMDAT (tinfo));
- DECL_INTERFACE_KNOWN (tinfo) = 1;
- }
- }
- }
+ emit_support_tinfo_1 (*fundamentals[ix]);
+ for (tree t = registered_builtin_types; t; t = TREE_CHAIN (t))
+ emit_support_tinfo_1 (TREE_VALUE (t));
}
/* Finish a type info decl. DECL_PTR is a pointer to an unemitted
+2014-04-22 Marc Glisse <marc.glisse@inria.fr>
+
+ PR libstdc++/43622
+ * config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
+ * config/abi/pre/gnu-versioned-namespace.ver: New symbols.
+ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
+
2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.host: Remove solaris2.9 handling.
OBJECT:0:CXXABI_1.3.6
OBJECT:0:CXXABI_1.3.7
OBJECT:0:CXXABI_1.3.8
+OBJECT:0:CXXABI_1.3.9
OBJECT:0:CXXABI_TM_1
OBJECT:0:GLIBCXX_3.4
OBJECT:0:GLIBCXX_3.4.1
OBJECT:16:_ZTId@@CXXABI_1.3
OBJECT:16:_ZTIe@@CXXABI_1.3
OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIg@@CXXABI_1.3.9
OBJECT:16:_ZTIh@@CXXABI_1.3
OBJECT:16:_ZTIi@@CXXABI_1.3
OBJECT:16:_ZTIj@@CXXABI_1.3
OBJECT:2:_ZTSd@@CXXABI_1.3
OBJECT:2:_ZTSe@@CXXABI_1.3
OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_1.3.9
OBJECT:2:_ZTSh@@CXXABI_1.3
OBJECT:2:_ZTSi@@CXXABI_1.3
OBJECT:2:_ZTSj@@CXXABI_1.3
OBJECT:2:_ZTSl@@CXXABI_1.3
OBJECT:2:_ZTSm@@CXXABI_1.3
+OBJECT:2:_ZTSn@@CXXABI_1.3.9
+OBJECT:2:_ZTSo@@CXXABI_1.3.9
OBJECT:2:_ZTSs@@CXXABI_1.3
OBJECT:2:_ZTSt@@CXXABI_1.3
OBJECT:2:_ZTSv@@CXXABI_1.3
OBJECT:32:_ZTIPKd@@CXXABI_1.3
OBJECT:32:_ZTIPKe@@CXXABI_1.3
OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKg@@CXXABI_1.3.9
OBJECT:32:_ZTIPKh@@CXXABI_1.3
OBJECT:32:_ZTIPKi@@CXXABI_1.3
OBJECT:32:_ZTIPKj@@CXXABI_1.3
OBJECT:32:_ZTIPd@@CXXABI_1.3
OBJECT:32:_ZTIPe@@CXXABI_1.3
OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPg@@CXXABI_1.3.9
OBJECT:32:_ZTIPh@@CXXABI_1.3
OBJECT:32:_ZTIPi@@CXXABI_1.3
OBJECT:32:_ZTIPj@@CXXABI_1.3
OBJECT:3:_ZTSPd@@CXXABI_1.3
OBJECT:3:_ZTSPe@@CXXABI_1.3
OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_1.3.9
OBJECT:3:_ZTSPh@@CXXABI_1.3
OBJECT:3:_ZTSPi@@CXXABI_1.3
OBJECT:3:_ZTSPj@@CXXABI_1.3
OBJECT:3:_ZTSPl@@CXXABI_1.3
OBJECT:3:_ZTSPm@@CXXABI_1.3
+OBJECT:3:_ZTSPn@@CXXABI_1.3.9
+OBJECT:3:_ZTSPo@@CXXABI_1.3.9
OBJECT:3:_ZTSPs@@CXXABI_1.3
OBJECT:3:_ZTSPt@@CXXABI_1.3
OBJECT:3:_ZTSPv@@CXXABI_1.3
OBJECT:4:_ZTSPKd@@CXXABI_1.3
OBJECT:4:_ZTSPKe@@CXXABI_1.3
OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_1.3.9
OBJECT:4:_ZTSPKh@@CXXABI_1.3
OBJECT:4:_ZTSPKi@@CXXABI_1.3
OBJECT:4:_ZTSPKj@@CXXABI_1.3
OBJECT:4:_ZTSPKl@@CXXABI_1.3
OBJECT:4:_ZTSPKm@@CXXABI_1.3
+OBJECT:4:_ZTSPKn@@CXXABI_1.3.9
+OBJECT:4:_ZTSPKo@@CXXABI_1.3.9
OBJECT:4:_ZTSPKs@@CXXABI_1.3
OBJECT:4:_ZTSPKt@@CXXABI_1.3
OBJECT:4:_ZTSPKv@@CXXABI_1.3
_ZTIPDn;
_ZTIPKDn;
- # typeinfo for __int128 and unsigned __int128
- _ZTI[no];
- _ZTIP[no];
- _ZTIPK[no];
+ # typeinfo for __int128, unsigned __int128 and __float128
+ _ZTI[gno];
+ _ZTIP[gno];
+ _ZTIPK[gno];
# virtual table
_ZTVN10__cxxabiv117__array_type_infoE;
} CXXABI_1.3.7;
+CXXABI_1.3.9 {
+
+ # typeinfo name for __int128, unsigned __int128 and __float128
+ _ZTS[gno];
+ _ZTSP[gno];
+ _ZTSPK[gno];
+
+ # typeinfo for __float128
+ _ZTIg;
+ _ZTIPg;
+ _ZTIPKg;
+
+} CXXABI_1.3.8;
+
# Symbols in the support library (libsupc++) supporting transactional memory.
CXXABI_TM_1 {