diff options
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_arm/share.hxx | 19 | ||||
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx | 7 |
2 files changed, 21 insertions, 5 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/share.hxx b/bridges/source/cpp_uno/gcc3_linux_arm/share.hxx index 99cf7766a0c4..459db19ef4b3 100644 --- a/bridges/source/cpp_uno/gcc3_linux_arm/share.hxx +++ b/bridges/source/cpp_uno/gcc3_linux_arm/share.hxx @@ -18,13 +18,21 @@ */ #ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_GCC3_LINUX_ARM_SHARE_HXX #define INCLUDED_BRIDGES_SOURCE_CPP_UNO_GCC3_LINUX_ARM_SHARE_HXX -#include "uno/mapping.h" +#include "sal/config.h" #include <typeinfo> #include <exception> #include <cstddef> #include <unwind.h> +#include <cxxabi.h> +#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h +#define _GLIBCXX_CDTOR_CALLABI +#endif + +#include "config_cxxabi.h" +#include "uno/mapping.h" + namespace CPPU_CURRENT_NAMESPACE { @@ -70,9 +78,16 @@ namespace CPPU_CURRENT_NAMESPACE __cxa_exception *propagatingExceptions; #endif }; - extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); +} +#if !HAVE_CXXABI_H_CXA_GET_GLOBALS +namespace __cxxabiv1 { + extern "C" __cxa_eh_globals * __cxa_get_globals() throw(); +} +#endif +namespace CPPU_CURRENT_NAMESPACE +{ void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); void fillUnoException( diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx index 8942d1f948bd..ee8c17fc62a5 100644 --- a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx @@ -569,10 +569,11 @@ static void cpp_call( } catch (...) { -// __asm__ __volatile__ ("sub sp, sp, #2048\n"); - // fill uno exception - fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); + fillUnoException( + reinterpret_cast< CPPU_CURRENT_NAMESPACE::__cxa_eh_globals * >( + __cxxabiv1::__cxa_get_globals())->caughtExceptions, + *ppUnoExc, pThis->getBridge()->getCpp2Uno()); // temporary params for ( ; nTempIndices--; ) |