From 1b846cccc633e057ec481250e21ee20461a4e5fd Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Sat, 6 May 2000 15:52:11 +0000 Subject: [PATCH] rtti.c (ptmd_initializer): Set non-public, if class is incomplete. * 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 | 12 ++++++++++++ gcc/cp/inc/cxxabi.h | 5 +++++ gcc/cp/rtti.c | 5 ++++- gcc/cp/tinfo.cc | 2 +- gcc/cp/vec.cc | 8 ++++---- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 636f30ec937..fd182b6c152 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,15 @@ +2000-05-06 Nathan Sidwell + + * 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 * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove. diff --git a/gcc/cp/inc/cxxabi.h b/gcc/cp/inc/cxxabi.h index b85624085e6..959d23fae81 100644 --- a/gcc/cp/inc/cxxabi.h +++ b/gcc/cp/inc/cxxabi.h @@ -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, diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index b16faf7358e..426c5c3eedf 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -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, diff --git a/gcc/cp/tinfo.cc b/gcc/cp/tinfo.cc index a710aab40b5..ec2d26209d0 100644 --- a/gcc/cp/tinfo.cc +++ b/gcc/cp/tinfo.cc @@ -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 diff --git a/gcc/cp/vec.cc b/gcc/cp/vec.cc index 23aef76da0e..e88e48dbcd2 100644 --- a/gcc/cp/vec.cc +++ b/gcc/cp/vec.cc @@ -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, -- 2.30.2