From 9b379e46d52a4abd030dc2d6b745b36e9a5b2913 Mon Sep 17 00:00:00 2001 From: nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 6 May 2000 15:52:11 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33726 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 636f30ec9379..fd182b6c1520 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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. diff --git a/gcc/cp/inc/cxxabi.h b/gcc/cp/inc/cxxabi.h index b85624085e67..959d23fae81d 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 b16faf7358e5..426c5c3eedfd 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 a710aab40b5b..ec2d26209d09 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 23aef76da0e9..e88e48dbcd20 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, -- GitLab