cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place of std::size_t and...

* inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
	of std::size_t and std::ptrdiff_t respectively.
	* tinfo.cc: Likewise.
	* vec.cc: Likewise.

From-SVN: r33759
This commit is contained in:
Nathan Sidwell 2000-05-07 09:40:34 +00:00 committed by Nathan Sidwell
parent b8f4101008
commit 9ad3ca3499
4 changed files with 67 additions and 56 deletions

View File

@ -1,3 +1,10 @@
2000-05-07 Nathan Sidwell <nathan@codesourcery.com>
* inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
of std::size_t and std::ptrdiff_t respectively.
* tinfo.cc: Likewise.
* vec.cc: Likewise.
2000-05-06 Richard Henderson <rth@cygnus.com> 2000-05-06 Richard Henderson <rth@cygnus.com>
* typeck.c (build_c_cast): Don't warn integer->pointer size * typeck.c (build_c_cast): Don't warn integer->pointer size

View File

@ -49,10 +49,14 @@
#ifdef __cplusplus #ifdef __cplusplus
// We use the compiler builtins __SIZE__TYPE__ and __PTRDIFF_TYPE__ instead of
// std::size_t and std::ptrdiff_t respectively. This makes us independant of
// the conformance level of <cstddef> and whether -fhonor-std was supplied.
// <cstddef> is not currently available during compiler building anyway.
// including <stddef.h> would be wrong, as that would rudely place size_t in
// the global namespace.
#include <typeinfo> #include <typeinfo>
// This should really be cstddef, but that currently is not available when
// building the runtime.
#include <stddef.h>
namespace __cxxabiv1 namespace __cxxabiv1
{ {
@ -207,11 +211,11 @@ public:
{ return vmi_offset_flags & virtual_mask; } { return vmi_offset_flags & virtual_mask; }
bool __is_public_p () const bool __is_public_p () const
{ return vmi_offset_flags & public_mask; } { return vmi_offset_flags & public_mask; }
std::ptrdiff_t __offset () const __PTRDIFF_TYPE__ __offset () const
{ {
// This shift, being of a signed type, is implementation defined. GCC // This shift, being of a signed type, is implementation defined. GCC
// implements such shifts as arithmetic, which is what we want. // implements such shifts as arithmetic, which is what we want.
return std::ptrdiff_t (vmi_offset_flags) >> offset_shift; return __PTRDIFF_TYPE__ (vmi_offset_flags) >> offset_shift;
} }
}; };
@ -277,7 +281,7 @@ public:
within this type. If SRC_PTR is one of our SRC_TYPE bases, indicate the within this type. If SRC_PTR is one of our SRC_TYPE bases, indicate the
virtuality. Returns not_contained for non containment or private virtuality. Returns not_contained for non containment or private
containment. */ containment. */
inline __sub_kind __find_public_src (std::ptrdiff_t __src2dst, inline __sub_kind __find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__src_ptr) const; const void *__src_ptr) const;
@ -289,7 +293,7 @@ public:
indicates the static type started from and SRC_PTR points to that base indicates the static type started from and SRC_PTR points to that base
within the most derived object. Fill in RESULT with what we find. Return within the most derived object. Fill in RESULT with what we find. Return
true if we have located an ambiguous match. */ true if we have located an ambiguous match. */
virtual bool __do_dyncast (std::ptrdiff_t __src2dst, virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
__sub_kind __access_path, __sub_kind __access_path,
const __class_type_info *__dst_type, const __class_type_info *__dst_type,
const void *__obj_ptr, const void *__obj_ptr,
@ -301,7 +305,7 @@ public:
inherited by the type started from -- which is not necessarily the inherited by the type started from -- which is not necessarily the
current type. The current type will be a base of the destination type. current type. The current type will be a base of the destination type.
OBJ_PTR points to the current base. */ OBJ_PTR points to the current base. */
virtual __sub_kind __do_find_public_src (std::ptrdiff_t __src2dst, virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__src_ptr) const; const void *__src_ptr) const;
@ -326,14 +330,14 @@ public:
/* implementation defined member functions */ /* implementation defined member functions */
protected: protected:
virtual bool __do_dyncast (std::ptrdiff_t __src2dst, virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
__sub_kind __access_path, __sub_kind __access_path,
const __class_type_info *__dst_type, const __class_type_info *__dst_type,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__src_ptr, const void *__src_ptr,
__dyncast_result &__result) const; __dyncast_result &__result) const;
virtual __sub_kind __do_find_public_src (std::ptrdiff_t __src2dst, virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__sub_ptr) const; const void *__sub_ptr) const;
@ -376,14 +380,14 @@ public:
/* implementation defined member functions */ /* implementation defined member functions */
protected: protected:
virtual bool __do_dyncast (std::ptrdiff_t __src2dst, virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
__sub_kind __access_path, __sub_kind __access_path,
const __class_type_info *__dst_type, const __class_type_info *__dst_type,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__src_ptr, const void *__src_ptr,
__dyncast_result &__result) const; __dyncast_result &__result) const;
virtual __sub_kind __do_find_public_src (std::ptrdiff_t __src2dst, virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr, const void *__obj_ptr,
const __class_type_info *__src_type, const __class_type_info *__src_type,
const void *__src_ptr) const; const void *__src_ptr) const;
@ -398,7 +402,7 @@ extern "C++"
void *__dynamic_cast (const void *__src_ptr, /* object started from */ void *__dynamic_cast (const void *__src_ptr, /* object started from */
const __class_type_info *__src_type, /* static type of object */ const __class_type_info *__src_type, /* static type of object */
const __class_type_info *__dst_type, /* desired target type */ const __class_type_info *__dst_type, /* desired target type */
std::ptrdiff_t __src2dst); /* how src and dst are related */ __PTRDIFF_TYPE__ __src2dst); /* how src and dst are related */
/* src2dst has the following possible values /* src2dst has the following possible values
>= 0: src_type is a unique public non-virtual base of dst_type >= 0: src_type is a unique public non-virtual base of dst_type
@ -411,32 +415,32 @@ void *__dynamic_cast (const void *__src_ptr, /* object started from */
/* allocate and construct array */ /* allocate and construct array */
extern "C++" extern "C++"
void *__cxa_vec_new (size_t __element_count, void *__cxa_vec_new (__SIZE_TYPE__ __element_count,
size_t __element_size, __SIZE_TYPE__ __element_size,
size_t __padding_size, __SIZE_TYPE__ __padding_size,
void (*__constructor) (void *), void (*__constructor) (void *),
void (*__destructor) (void *)); void (*__destructor) (void *));
/* construct array */ /* construct array */
extern "C++" extern "C++"
void __cxa_vec_ctor (void *__array_address, void __cxa_vec_ctor (void *__array_address,
size_t __element_count, __SIZE_TYPE__ __element_count,
size_t __element_size, __SIZE_TYPE__ __element_size,
void (*__constructor) (void *), void (*__constructor) (void *),
void (*__destructor) (void *)); void (*__destructor) (void *));
/* destruct array */ /* destruct array */
extern "C++" extern "C++"
void __cxa_vec_dtor (void *__array_address, void __cxa_vec_dtor (void *__array_address,
size_t __element_count, __SIZE_TYPE__ __element_count,
size_t __element_size, __SIZE_TYPE__ __element_size,
void (*__destructor) (void *)); void (*__destructor) (void *));
/* destruct and release array */ /* destruct and release array */
extern "C++" extern "C++"
void __cxa_vec_delete (void *__array_address, void __cxa_vec_delete (void *__array_address,
size_t __element_size, __SIZE_TYPE__ __element_size,
size_t __padding_size, __SIZE_TYPE__ __padding_size,
void (*__destructor) (void *)); void (*__destructor) (void *));
} /* namespace __cxxabiv1 */ } /* namespace __cxxabiv1 */

View File

@ -579,14 +579,14 @@ using namespace abi;
// initial part of a vtable, this structure is used with offsetof, so we don't // initial part of a vtable, this structure is used with offsetof, so we don't
// have to keep alignments consistent manually. // have to keep alignments consistent manually.
struct vtable_prefix { struct vtable_prefix {
ptrdiff_t whole_object; // offset to most derived object __PTRDIFF_TYPE__ whole_object; // offset to most derived object
const __class_type_info *whole_type; // pointer to most derived type_info const __class_type_info *whole_type; // pointer to most derived type_info
const void *origin; // what a class's vptr points to const void *origin; // what a class's vptr points to
}; };
template <typename T> template <typename T>
inline const T * inline const T *
adjust_pointer (const void *base, ptrdiff_t offset) adjust_pointer (const void *base, __PTRDIFF_TYPE__ offset)
{ {
return reinterpret_cast <const T *> return reinterpret_cast <const T *>
(reinterpret_cast <const char *> (base) + offset); (reinterpret_cast <const char *> (base) + offset);
@ -595,13 +595,13 @@ adjust_pointer (const void *base, ptrdiff_t offset)
// ADDR is a pointer to an object. Convert it to a pointer to a base, // ADDR is a pointer to an object. Convert it to a pointer to a base,
// using OFFSET. IS_VIRTUAL is true, if we are getting a virtual base. // using OFFSET. IS_VIRTUAL is true, if we are getting a virtual base.
inline void const * inline void const *
convert_to_base (void const *addr, bool is_virtual, ptrdiff_t offset) convert_to_base (void const *addr, bool is_virtual, __PTRDIFF_TYPE__ offset)
{ {
if (is_virtual) if (is_virtual)
{ {
const void *vtable = *static_cast <const void *const *> (addr); const void *vtable = *static_cast <const void *const *> (addr);
offset = *adjust_pointer<ptrdiff_t> (vtable, offset); offset = *adjust_pointer<__PTRDIFF_TYPE__> (vtable, offset);
} }
return adjust_pointer<void> (addr, offset); return adjust_pointer<void> (addr, offset);
@ -716,7 +716,7 @@ __do_upcast (const __class_type_info *dst_type,
} }
inline __class_type_info::__sub_kind __class_type_info:: inline __class_type_info::__sub_kind __class_type_info::
__find_public_src (ptrdiff_t src2dst, __find_public_src (__PTRDIFF_TYPE__ src2dst,
const void *obj_ptr, const void *obj_ptr,
const __class_type_info *src_type, const __class_type_info *src_type,
const void *src_ptr) const const void *src_ptr) const
@ -730,7 +730,7 @@ __find_public_src (ptrdiff_t src2dst,
} }
__class_type_info::__sub_kind __class_type_info:: __class_type_info::__sub_kind __class_type_info::
__do_find_public_src (ptrdiff_t, __do_find_public_src (__PTRDIFF_TYPE__,
const void *obj_ptr, const void *obj_ptr,
const __class_type_info *, const __class_type_info *,
const void *src_ptr) const const void *src_ptr) const
@ -742,7 +742,7 @@ __do_find_public_src (ptrdiff_t,
} }
__class_type_info::__sub_kind __si_class_type_info:: __class_type_info::__sub_kind __si_class_type_info::
__do_find_public_src (ptrdiff_t src2dst, __do_find_public_src (__PTRDIFF_TYPE__ src2dst,
const void *obj_ptr, const void *obj_ptr,
const __class_type_info *src_type, const __class_type_info *src_type,
const void *src_ptr) const const void *src_ptr) const
@ -753,7 +753,7 @@ __do_find_public_src (ptrdiff_t src2dst,
} }
__class_type_info::__sub_kind __vmi_class_type_info:: __class_type_info::__sub_kind __vmi_class_type_info::
__do_find_public_src (ptrdiff_t src2dst, __do_find_public_src (__PTRDIFF_TYPE__ src2dst,
const void *obj_ptr, const void *obj_ptr,
const __class_type_info *src_type, const __class_type_info *src_type,
const void *src_ptr) const const void *src_ptr) const
@ -761,13 +761,13 @@ __do_find_public_src (ptrdiff_t src2dst,
if (obj_ptr == src_ptr && *this == *src_type) if (obj_ptr == src_ptr && *this == *src_type)
return __contained_public; return __contained_public;
for (size_t i = vmi_base_count; i--;) for (__SIZE_TYPE__ i = vmi_base_count; i--;)
{ {
if (!vmi_bases[i].__is_public_p ()) if (!vmi_bases[i].__is_public_p ())
continue; // Not public, can't be here. continue; // Not public, can't be here.
const void *base = obj_ptr; const void *base = obj_ptr;
ptrdiff_t offset = vmi_bases[i].__offset (); __PTRDIFF_TYPE__ offset = vmi_bases[i].__offset ();
bool is_virtual = vmi_bases[i].__is_virtual_p (); bool is_virtual = vmi_bases[i].__is_virtual_p ();
if (is_virtual) if (is_virtual)
@ -791,7 +791,7 @@ __do_find_public_src (ptrdiff_t src2dst,
} }
bool __class_type_info:: bool __class_type_info::
__do_dyncast (ptrdiff_t, __do_dyncast (__PTRDIFF_TYPE__,
__sub_kind access_path, __sub_kind access_path,
const __class_type_info *dst_type, const __class_type_info *dst_type,
const void *obj_ptr, const void *obj_ptr,
@ -817,7 +817,7 @@ __do_dyncast (ptrdiff_t,
} }
bool __si_class_type_info:: bool __si_class_type_info::
__do_dyncast (ptrdiff_t src2dst, __do_dyncast (__PTRDIFF_TYPE__ src2dst,
__sub_kind access_path, __sub_kind access_path,
const __class_type_info *dst_type, const __class_type_info *dst_type,
const void *obj_ptr, const void *obj_ptr,
@ -857,7 +857,7 @@ __do_dyncast (ptrdiff_t src2dst,
// work by filling in things lazily (when we know we need the information), // work by filling in things lazily (when we know we need the information),
// and opportunisticly take early success or failure results. // and opportunisticly take early success or failure results.
bool __vmi_class_type_info:: bool __vmi_class_type_info::
__do_dyncast (ptrdiff_t src2dst, __do_dyncast (__PTRDIFF_TYPE__ src2dst,
__sub_kind access_path, __sub_kind access_path,
const __class_type_info *dst_type, const __class_type_info *dst_type,
const void *obj_ptr, const void *obj_ptr,
@ -884,12 +884,12 @@ __do_dyncast (ptrdiff_t src2dst,
return false; return false;
} }
bool result_ambig = false; bool result_ambig = false;
for (size_t i = vmi_base_count; i--;) for (__SIZE_TYPE__ i = vmi_base_count; i--;)
{ {
__dyncast_result result2; __dyncast_result result2;
void const *base = obj_ptr; void const *base = obj_ptr;
__sub_kind base_access = access_path; __sub_kind base_access = access_path;
ptrdiff_t offset = vmi_bases[i].__offset (); __PTRDIFF_TYPE__ offset = vmi_bases[i].__offset ();
bool is_virtual = vmi_bases[i].__is_virtual_p (); bool is_virtual = vmi_bases[i].__is_virtual_p ();
if (is_virtual) if (is_virtual)
@ -1071,12 +1071,12 @@ __do_upcast (__sub_kind access_path,
if (src_details & __flags_unknown_mask) if (src_details & __flags_unknown_mask)
src_details = vmi_flags; src_details = vmi_flags;
for (size_t i = vmi_base_count; i--;) for (__SIZE_TYPE__ i = vmi_base_count; i--;)
{ {
__upcast_result result2 (src_details); __upcast_result result2 (src_details);
const void *base = obj_ptr; const void *base = obj_ptr;
__sub_kind sub_access = access_path; __sub_kind sub_access = access_path;
ptrdiff_t offset = vmi_bases[i].__offset (); __PTRDIFF_TYPE__ offset = vmi_bases[i].__offset ();
bool is_virtual = vmi_bases[i].__is_virtual_p (); bool is_virtual = vmi_bases[i].__is_virtual_p ();
if (!vmi_bases[i].__is_public_p ()) if (!vmi_bases[i].__is_public_p ())
@ -1141,12 +1141,12 @@ extern "C++" void *
__dynamic_cast (const void *src_ptr, // object started from __dynamic_cast (const void *src_ptr, // object started from
const __class_type_info *src_type, // type of the starting object const __class_type_info *src_type, // type of the starting object
const __class_type_info *dst_type, // desired target type const __class_type_info *dst_type, // desired target type
ptrdiff_t src2dst) // how src and dst are related __PTRDIFF_TYPE__ src2dst) // how src and dst are related
{ {
const void *vtable = *static_cast <const void *const *> (src_ptr); const void *vtable = *static_cast <const void *const *> (src_ptr);
const vtable_prefix *prefix = const vtable_prefix *prefix =
adjust_pointer <vtable_prefix> (vtable, adjust_pointer <vtable_prefix>
-offsetof (vtable_prefix, origin)); (vtable, -__PTRDIFF_TYPE__(static_cast <vtable_prefix *> (NULL)->origin));
const void *whole_ptr = const void *whole_ptr =
adjust_pointer <void> (src_ptr, prefix->whole_object); adjust_pointer <void> (src_ptr, prefix->whole_object);
const __class_type_info *whole_type = prefix->whole_type; const __class_type_info *whole_type = prefix->whole_type;

View File

@ -41,19 +41,19 @@ namespace __cxxabiv1
/* allocate and construct array */ /* allocate and construct array */
extern "C++" void * extern "C++" void *
__cxa_vec_new (size_t element_count, __cxa_vec_new (__SIZE_TYPE__ element_count,
size_t element_size, __SIZE_TYPE__ element_size,
size_t padding_size, __SIZE_TYPE__ padding_size,
void (*constructor) (void *), void (*constructor) (void *),
void (*destructor) (void *)) void (*destructor) (void *))
{ {
size_t size = element_count * element_size + padding_size; __SIZE_TYPE__ size = element_count * element_size + padding_size;
char *base = static_cast <char *> (operator new[] (size)); char *base = static_cast <char *> (operator new[] (size));
if (padding_size) if (padding_size)
{ {
base += padding_size; base += padding_size;
reinterpret_cast <size_t *> (base)[-1] = element_count; reinterpret_cast <__SIZE_TYPE__ *> (base)[-1] = element_count;
} }
try try
{ {
@ -72,12 +72,12 @@ __cxa_vec_new (size_t element_count,
/* construct array */ /* construct array */
extern "C++" void extern "C++" void
__cxa_vec_ctor (void *array_address, __cxa_vec_ctor (void *array_address,
size_t element_count, __SIZE_TYPE__ element_count,
size_t element_size, __SIZE_TYPE__ element_size,
void (*constructor) (void *), void (*constructor) (void *),
void (*destructor) (void *)) void (*destructor) (void *))
{ {
size_t ix = 0; __SIZE_TYPE__ ix = 0;
char *ptr = static_cast <char *> (array_address); char *ptr = static_cast <char *> (array_address);
try try
@ -97,14 +97,14 @@ __cxa_vec_ctor (void *array_address,
/* destruct array */ /* destruct array */
extern "C++" void extern "C++" void
__cxa_vec_dtor (void *array_address, __cxa_vec_dtor (void *array_address,
size_t element_count, __SIZE_TYPE__ element_count,
size_t element_size, __SIZE_TYPE__ element_size,
void (*destructor) (void *)) void (*destructor) (void *))
{ {
if (destructor) if (destructor)
{ {
char *ptr = static_cast <char *> (array_address); char *ptr = static_cast <char *> (array_address);
size_t ix = element_count; __SIZE_TYPE__ ix = element_count;
bool unwinding = std::uncaught_exception (); bool unwinding = std::uncaught_exception ();
ptr += element_count * element_size; ptr += element_count * element_size;
@ -133,15 +133,15 @@ __cxa_vec_dtor (void *array_address,
/* destruct and release array */ /* destruct and release array */
extern "C++" void extern "C++" void
__cxa_vec_delete (void *array_address, __cxa_vec_delete (void *array_address,
size_t element_size, __SIZE_TYPE__ element_size,
size_t padding_size, __SIZE_TYPE__ padding_size,
void (*destructor) (void *)) void (*destructor) (void *))
{ {
char *base = static_cast <char *> (array_address); char *base = static_cast <char *> (array_address);
if (padding_size) if (padding_size)
{ {
size_t element_count = reinterpret_cast <size_t *> (base)[-1]; __SIZE_TYPE__ element_count = reinterpret_cast <__SIZE_TYPE__ *> (base)[-1];
base -= padding_size; base -= padding_size;
try try
{ {