On Dec 8, 2011 7:16 PM, "Kai Tietz" wrote: > > * unwind-cxx.h (__cxa_exception): Use for member > exceptionDestructor the _GLIBCXX_DESTRUCTOR_CALLCONVENTION macro.
I think "Use the _GLIBCXX_DESTRUCTOR_CALLCONVENTION macro for the exceptionDestructor member" would make more sense. However ... > Index: gcc/libstdc++-v3/libsupc++/cxxabi.h > =================================================================== > --- gcc.orig/libstdc++-v3/libsupc++/cxxabi.h > +++ gcc/libstdc++-v3/libsupc++/cxxabi.h > @@ -51,6 +51,16 @@ > #include <bits/cxxabi_tweaks.h> > #include <bits/cxxabi_forced.h> > > +// On 32-bit IA native windows target is the used calling-convention > +// for class-member-functions of kind __thiscall. As destructor is > +// also of kind class-member-function, we need to specify for this > +// target proper calling-convention on destructor-function-pointer. > +#if defined (__MINGW32__) && defined (__i386__) > +#define _GLIBCXX_DESTRUCTOR_CALLCONVENTION __thiscall > +#else > +#define _GLIBCXX_DESTRUCTOR_CALLCONVENTION > +#endif Could you define a typedef for void(*)(void*) and adapt that for mingw32 instead of using the macro everywhere? #if defined (__MINGW32__) && defined (__i386__) typedef void (__thiscall *__cxxabi_dtor_type)(void*); #else typedef void (*__cxxabi_dtor_type)(void*); #endif (That would be my preference, but the maintainers of that code might disagree.)