rtti.c (ptmd_initializer): Set non-public, if class is incomplete.
authorNathan Sidwell <nathan@codesourcery.com>
Sat, 6 May 2000 15:52:11 +0000 (15:52 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Sat, 6 May 2000 15:52:11 +0000 (15:52 +0000)
* rtti.c (ptmd_initializer): Set non-public, if class is
incomplete.

* inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
(__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
__cxa_vec_delete): Likewise.
* tinfo.cc (__dynamic_cast): Likewise.
* vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
__cxa_vec_delete): Likewise.

From-SVN: r33726

gcc/cp/ChangeLog
gcc/cp/inc/cxxabi.h
gcc/cp/rtti.c
gcc/cp/tinfo.cc
gcc/cp/vec.cc

index 636f30ec93797d178b44defc807610807472f34d..fd182b6c15202c7ea357cc87f72a204d5a47871d 100644 (file)
@@ -1,3 +1,15 @@
+2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * rtti.c (ptmd_initializer): Set non-public, if class is
+       incomplete.
+       
+       * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
+       (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
+       __cxa_vec_delete): Likewise.
+       * tinfo.cc (__dynamic_cast): Likewise.
+       * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
+       __cxa_vec_delete): Likewise.
+
 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
 
        * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
index b85624085e676a4fa6d4ac28a0f79e3ee8b93f18..959d23fae81d1845184a378cda4335d72e2a0d06 100644 (file)
@@ -394,6 +394,7 @@ protected:
 };
 
 /* dynamic cast runtime */
+extern "C++"
 void *__dynamic_cast (const void *__src_ptr,    /* object started from */
                       const __class_type_info *__src_type, /* static type of object */
                       const __class_type_info *__dst_type, /* desired target type */
@@ -409,6 +410,7 @@ void *__dynamic_cast (const void *__src_ptr,    /* object started from */
 /* array ctor/dtor routines */
 
 /* allocate and construct array */
+extern "C++"
 void *__cxa_vec_new (size_t __element_count,
                      size_t __element_size,
                      size_t __padding_size,
@@ -416,6 +418,7 @@ void *__cxa_vec_new (size_t __element_count,
                      void (*__destructor) (void *));
 
 /* construct array */
+extern "C++"
 void __cxa_vec_ctor (void *__array_address,
                      size_t __element_count,
                      size_t __element_size,
@@ -423,12 +426,14 @@ void __cxa_vec_ctor (void *__array_address,
                      void (*__destructor) (void *));
 
 /* destruct array */
+extern "C++"
 void __cxa_vec_dtor (void *__array_address,
                      size_t __element_count,
                      size_t __element_size,
                      void (*__destructor) (void *));
 
 /* destruct and release array */
+extern "C++"
 void __cxa_vec_delete (void *__array_address,
                        size_t __element_size,
                        size_t __padding_size,
index b16faf7358e5ab69ab0901b9392e73b3c0e8be1a..426c5c3eedfd364efb4d25a66e2f897e317d6564 100644 (file)
@@ -1440,7 +1440,10 @@ ptmd_initializer (desc, target, non_public_ptr)
       *non_public_ptr = 1;
     }
   if (!COMPLETE_TYPE_P (klass))
-    flags |= 0x10;
+    {
+      flags |= 0x10;
+      *non_public_ptr = 1;
+    }
   init = tree_cons (NULL_TREE, build_int_2 (flags, 0), init);
   init = tree_cons (NULL_TREE,
                     build_unary_op (ADDR_EXPR,
index a710aab40b5b0fb219dac627e6f2736f044e61b8..ec2d26209d095eab710fa62b59405a3e9c756bb1 100644 (file)
@@ -1137,7 +1137,7 @@ __do_upcast (__sub_kind access_path,
 }
 
 // this is the external interface to the dynamic cast machinery
-void *
+extern "C++" void *
 __dynamic_cast (const void *src_ptr,    // object started from
                 const __class_type_info *src_type, // type of the starting object
                 const __class_type_info *dst_type, // desired target type
index 23aef76da0e9462fb1bf877e5af3c9552fac2ec5..e88e48dbcd20a1514de66acd5c9fc69b56acd477 100644 (file)
@@ -40,7 +40,7 @@ namespace __cxxabiv1
 {
 
 /* allocate and construct array */
-void *
+extern "C++" void *
 __cxa_vec_new (size_t element_count,
                size_t element_size,
                size_t padding_size,
@@ -70,7 +70,7 @@ __cxa_vec_new (size_t element_count,
 }
 
 /* construct array */
-void
+extern "C++" void
 __cxa_vec_ctor (void *array_address,
                 size_t element_count,
                 size_t element_size,
@@ -95,7 +95,7 @@ __cxa_vec_ctor (void *array_address,
 }
 
 /* destruct array */
-void
+extern "C++" void
 __cxa_vec_dtor (void *array_address,
                 size_t element_count,
                 size_t element_size,
@@ -131,7 +131,7 @@ __cxa_vec_dtor (void *array_address,
 }
 
 /* destruct and release array */
-void
+extern "C++" void
 __cxa_vec_delete (void *array_address,
                   size_t element_size,
                   size_t padding_size,