From 17f1b0f551dbacc24fe5e2c90d5f00e5578ab9e7 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Fri, 27 Dec 2013 14:00:51 +0200 Subject: Using pre-cached type_infos provided by the typeid operator seems to work now Apparently there was no problem in this after all. The reason it seemed not to work earlier was because of the unwinding failure due to the missing .cfi_startproc and .cfi_endproc thingies in helper.s The hack in ucbhelper is now not needed after all. Change-Id: If9fec5c502d4c9d0c44709ad9c2729f812e882e2 --- bridges/source/cpp_uno/gcc3_ios_arm/except.cxx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'bridges/source/cpp_uno') diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx index 22026ccfff57..2f1df7a85adb 100644 --- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx +++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -171,12 +172,21 @@ public: RTTI::RTTI() SAL_THROW(()) : m_hApp( dlopen( 0, RTLD_LAZY ) ) { -#if 0 // Insert commonly needed type_infos to avoid dlsym() calls - // Ideally we should insert all needed ones + // Ideally we should insert all needed ones, and we actually must, + // for arm64, as the dynamically generated type_infos don't seem + // to work correctly. Luckily it seems that quite few types of + // exceptions are thrown through the C++/UNO bridge at least in + // the TiledLibreOffice test app. + + // (As no Java, Basic or Python is supported in LO code on iOS, we + // can know the set of types of exceptions throws a priori, so + // keeping this list complete should be possible.) + m_rttis.insert( t_rtti_map::value_type( "com.sun.star.ucb.InteractiveAugmentedIOException", (std::type_info*) &typeid( com::sun::star::ucb::InteractiveAugmentedIOException ) ) ); -#endif + m_rttis.insert( t_rtti_map::value_type( "com.sun.star.ucb.NameClashException", + (std::type_info*) &typeid( com::sun::star::ucb::NameClashException ) ) ); } RTTI::~RTTI() SAL_THROW(()) -- cgit