bridges/source/cpp_uno/gcc3_linux_arm/share.hxx | 19 +++++++++++++++++-- bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx | 7 ++++--- 2 files changed, 21 insertions(+), 5 deletions(-)
New commits: commit e88584fed0d4f063ec80b9013f8a6e0cb97aa462 Author: brainbreaker <gautamprajapat...@gmail.com> Date: Tue Jun 13 17:56:37 2017 +0530 Clean up declaration of __cxa_get_globals in linux_arm bridge This is the Linux/arm version of commit 5ba3d1740b03efa394b2d2bf34fb8a8d3db2331d, which did the same for the Linux/x86_64 bridge. Clang rejects the incompatible declarations of the same extern "C" function in different namespaces. This commit redeclares __cxa_get_globals so as to support clang for building Android in future. Change-Id: I4d733d3835d0dea5784701143f4ea1bc5d5ff363 Reviewed-on: https://gerrit.libreoffice.org/38735 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> 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--; ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits