In mangle.cc there is:

/* Return an identifier for a construction vtable group.  TYPE is
   the most derived class in the hierarchy; BINFO is the base
   subobject for which this construction vtable group will be used.

   This mangling isn't part of the ABI specification; in the ABI
   specification, the vtable group is dumped in the same COMDAT as the
   main vtable, and is referenced only from that vtable, so it doesn't
   need an external name.  For binary formats without COMDAT sections,
   though, we need external names for the vtable groups.

   We use the production

    <special-name> ::= CT <type> <offset number> _ <base type>  */

tree
mangle_ctor_vtbl_for_type (const tree type, const tree binfo)
{
  tree result;

  start_mangling (type);

  write_string ("_Z");
  write_string ("TC");


So it seems there is an obvious typo in the comment which says "CT"
but the actual mangling is "TC".

If ok I would apply the following patch to trunk:


diff --git a/gcc/cp/mangle.cc b/gcc/cp/mangle.cc
index 8c67b67b197..d368359dccd 100644
--- a/gcc/cp/mangle.cc
+++ b/gcc/cp/mangle.cc
@@ -5131,7 +5131,7 @@ mangle_decomp (const tree decl, vec<tree> &decls)

    We use the production

-    <special-name> ::= CT <type> <offset number> _ <base type>  */
+    <special-name> ::= TC <type> <offset number> _ <base type>  */

 tree
 mangle_ctor_vtbl_for_type (const tree type, const tree binfo)


Johann

Reply via email to