summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
7a01742)
Revert:
2011-12-12 Kai Tietz <ktietz@redhat.com>
PR libstdc++/51135
* libsupc++/cxxabi.h (__cxa_dtor_type): New type.
(__cxa_throw): Use it for destructor-argument.
* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
* libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
exceptionDestructor to __cxa_dtor_type.
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
Define.
(__cxa_dtor_type): Declare target secific type variant.
* config/os/mingw32/os_defines.h: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182250
138bc75d-0d04-0410-961f-
82ee72b054a4
2011-12-12 Paolo Carlini <paolo.carlini@oracle.com>
2011-12-12 Paolo Carlini <paolo.carlini@oracle.com>
- * Revert the last commit.
+ Revert:
+ 2011-12-12 Kai Tietz <ktietz@redhat.com>
+
+ PR libstdc++/51135
+ * libsupc++/cxxabi.h (__cxa_dtor_type): New type.
+ (__cxa_throw): Use it for destructor-argument.
+ * libsupc++/eh_throw.cc (__cxa_throw): Likewise.
+ * libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
+ exceptionDestructor to __cxa_dtor_type.
+ * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
+ Define.
+ (__cxa_dtor_type): Declare target secific type variant.
+ * config/os/mingw32/os_defines.h: Likewise.
2011-12-12 Kai Tietz <ktietz@redhat.com>
2011-12-12 Kai Tietz <ktietz@redhat.com>
// ioctlsocket function doesn't work for normal file-descriptors.
#define _GLIBCXX_NO_IOCTL 1
// ioctlsocket function doesn't work for normal file-descriptors.
#define _GLIBCXX_NO_IOCTL 1
-// See libstdc++/51135
-// Class constructors/destructors have __thiscall calling-convention
-// for IA 32-bit target.
-#if defined (__i386__)
-#define _GLIBCXX_USE_THISCALL_ON_DTOR 1
-typedef void (__thiscall *__cxa_dtor_type) (void *);
-#endif
-
// ioctlsocket function doesn't work for normal file-descriptors.
#define _GLIBCXX_NO_IOCTL 1
// ioctlsocket function doesn't work for normal file-descriptors.
#define _GLIBCXX_NO_IOCTL 1
-// See libstdc++/51135
-// Class constructors/destructors have __thiscall calling-convention
-// for IA 32-bit target.
-#if defined (__i386__)
-#define _GLIBCXX_USE_THISCALL_ON_DTOR 1
-typedef void (__thiscall *__cxa_dtor_type) (void *);
-#endif
-
#include <bits/cxxabi_tweaks.h>
#include <bits/cxxabi_forced.h>
#include <bits/cxxabi_tweaks.h>
#include <bits/cxxabi_forced.h>
-#ifndef _GLIBCXX_USE_THISCALL_ON_DTOR
-typedef void (*__cxa_dtor_type) (void *);
-#endif
-
#ifdef __cplusplus
namespace __cxxabiv1
{
#ifdef __cplusplus
namespace __cxxabiv1
{
// Throw the exception.
void
// Throw the exception.
void
- __cxa_throw(void*, std::type_info*, __cxa_dtor_type)
+ __cxa_throw(void*, std::type_info*, void (*) (void *))
__attribute__((__noreturn__));
// Used to implement exception handlers.
__attribute__((__noreturn__));
// Used to implement exception handlers.
extern "C" void
__cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo,
extern "C" void
__cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo,
{
// Definitely a primary.
__cxa_refcounted_exception *header
{
// Definitely a primary.
__cxa_refcounted_exception *header
{
// Manage the exception object itself.
std::type_info *exceptionType;
{
// Manage the exception object itself.
std::type_info *exceptionType;
- __cxa_dtor_type exceptionDestructor;
+ void (*exceptionDestructor)(void *);
// The C++ standard has entertaining rules wrt calling set_terminate
// and set_unexpected in the middle of the exception cleanup process.
// The C++ standard has entertaining rules wrt calling set_terminate
// and set_unexpected in the middle of the exception cleanup process.