revert: re PR target/51135 (SIGSEGV during exception cleanup on win32)
2011-12-12 Paolo Carlini <paolo.carlini@oracle.com> 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. From-SVN: r182250
This commit is contained in:
parent
7252b079fc
commit
60f3dad78d
6 changed files with 16 additions and 24 deletions
|
@ -1,6 +1,18 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -65,12 +65,4 @@
|
|||
// 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
|
||||
|
||||
#endif
|
||||
|
|
|
@ -65,12 +65,4 @@
|
|||
// 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
|
||||
|
||||
#endif
|
||||
|
|
|
@ -51,10 +51,6 @@
|
|||
#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
|
||||
{
|
||||
|
@ -600,7 +596,7 @@ namespace __cxxabiv1
|
|||
|
||||
// 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.
|
||||
|
|
|
@ -59,7 +59,7 @@ __gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc)
|
|||
|
||||
extern "C" void
|
||||
__cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo,
|
||||
__cxa_dtor_type dest)
|
||||
void (*dest) (void *))
|
||||
{
|
||||
// Definitely a primary.
|
||||
__cxa_refcounted_exception *header
|
||||
|
|
|
@ -51,7 +51,7 @@ struct __cxa_exception
|
|||
{
|
||||
// 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.
|
||||
|
|
Loading…
Add table
Reference in a new issue