aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2000-05-06 15:52:11 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2000-05-06 15:52:11 +0000
commit1b846cccc633e057ec481250e21ee20461a4e5fd (patch)
treedf6ce9401647fcde37a1205382c2b1b7672eeba9 /gcc/cp
parenta47fed553cca4889ecffc6f6b075b4a403ad0cc5 (diff)
downloadgcc-1b846cccc633e057ec481250e21ee20461a4e5fd.zip
gcc-1b846cccc633e057ec481250e21ee20461a4e5fd.tar.gz
gcc-1b846cccc633e057ec481250e21ee20461a4e5fd.tar.bz2
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
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog12
-rw-r--r--gcc/cp/inc/cxxabi.h5
-rw-r--r--gcc/cp/rtti.c5
-rw-r--r--gcc/cp/tinfo.cc2
-rw-r--r--gcc/cp/vec.cc8
5 files changed, 26 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 636f30e..fd182b6 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 b856240..959d23f 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 b16faf7..426c5c3 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 a710aab..ec2d262 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 23aef76..e88e48d 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,