Fix wrong configure test for abi::__forced_unwind in previous commit.

The previous commit was accidental and contained an initial version of the
patch which didn't test for NPTL abi::__forced_unwind correctly and just
tested whether cxxabi.h header was available.

Tighten the check to work on the other systems and check for __forced_unwind
existence itself.

Also check for cxxabi.h before testing for __cxa_demangle as there is no need
to try to compile another test program if we already know that this entire
header is unavailable anyhow.

See #14626.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-09-20 23:12:28 +00:00
parent e02ea2030c
commit 89b3361ec2
4 changed files with 109 additions and 25 deletions

View File

@@ -54,7 +54,7 @@
#include <thread.h>
#endif
#ifdef HAVE_CXXABI_H
#ifdef HAVE_ABI_FORCEDUNWIND
#include <cxxabi.h>
#endif
@@ -861,7 +861,7 @@ void *wxThreadInternal::PthreadStart(wxThread *thread)
wxT("Thread %p Entry() returned %lu."),
THR_ID(pthread), wxPtrToUInt(pthread->m_exitcode));
}
#ifdef HAVE_CXXABI_H
#ifdef HAVE_ABI_FORCEDUNWIND
// When using common C++ ABI under Linux we must always rethrow this
// special exception used to unwind the stack when the thread was
// cancelled, otherwise the thread library would simply terminate the
@@ -872,7 +872,7 @@ void *wxThreadInternal::PthreadStart(wxThread *thread)
pthread->SetState(STATE_EXITED);
throw;
}
#endif // HAVE_CXXABI_H
#endif // HAVE_ABI_FORCEDUNWIND
wxCATCH_ALL( wxTheApp->OnUnhandledException(); )
{