bridges/source/cpp_uno/gcc3_ios_arm/except.cxx | 6 ++++++ 1 file changed, 6 insertions(+)
New commits: commit 95d5922c0290ecd9de17183a95c068592a2c5a4f Author: Tor Lillqvist <[email protected]> Date: Thu Dec 26 14:20:05 2013 +0200 Add static assertion that our Fake_type_info is the same size as the real one Change-Id: Id8490bb6373d85be2c529a005be55295c530febb diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx index e431590..22026cc 100644 --- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx +++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx @@ -52,6 +52,9 @@ struct Fake_type_info { char const * name; }; +BOOST_STATIC_ASSERT( + sizeof (Fake_type_info) == sizeof (std::type_info)); + struct Fake_class_type_info: Fake_type_info {}; #if defined(MACOSX) && MACOSX_SDK_VERSION < 1070 commit 96af0825ab0d3d36df25a3983f9f422e987cb572 Author: Tor Lillqvist <[email protected]> Date: Thu Dec 26 14:17:54 2013 +0200 Need the _LIBCPP_NONUNIQUE_RTTI_BIT here, too Doesn't help though, throwing exceptions using __cxa_throw() and our hand-crafted type_infos still doesn't work on arm64. Change-Id: If6099e8696e6232c4b6d4bacd654d28419538e0f diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx index 71171ff..e431590 100644 --- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx +++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx @@ -106,6 +106,9 @@ std::type_info * createFake_si_class_type_info( Fake_si_class_type_info * fake = reinterpret_cast<Fake_si_class_type_info *>(buf); fake->name = name; +#ifdef _LIBCPP_NONUNIQUE_RTTI_BIT + *(uintptr_t*)(&fake->name) |= _LIBCPP_NONUNIQUE_RTTI_BIT; +#endif fake->base = base; return reinterpret_cast<std::type_info *>( static_cast<Fake_type_info *>(fake)); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
