From adbc2ae995cc63baadd9bb729196c6b6b3596296 Mon Sep 17 00:00:00 2001 From: Andrew Hsieh Date: Wed, 6 Mar 2013 18:30:47 +0800 Subject: GCC4.6/4.4.3: Use default visibility for the __cxa functions in eh_arm.cc See related: 811925038a83c20dad6250957e3082e1039c0c77 Change-Id: Ibafc1a0d77bee2340c5279c4c90f5046b1080425 --- gcc-4.4.3/libstdc++-v3/libsupc++/eh_arm.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gcc-4.4.3/libstdc++-v3') diff --git a/gcc-4.4.3/libstdc++-v3/libsupc++/eh_arm.cc b/gcc-4.4.3/libstdc++-v3/libsupc++/eh_arm.cc index 58997cc17..1ce63bd7a 100644 --- a/gcc-4.4.3/libstdc++-v3/libsupc++/eh_arm.cc +++ b/gcc-4.4.3/libstdc++-v3/libsupc++/eh_arm.cc @@ -29,6 +29,16 @@ using namespace __cxxabiv1; +// The GCC command-line option "-fvisibility=hidden" apparently fails to hide +// the visibility of the inline assembly function "__cxa_end_cleanup". +// We need to keep the visibility of the __cxa_* functions coherent otherwise +// linking eh_arm.o to resolve __cxa_end_cleanup (eg needed by -frtti +// -fexceptions) will disappoint the linker by exposing __cxa_type_match and +// __cxa_begin_cleanup (eg needed by __aeabi_idiv from libgcc.a). +// Therefore as a simple workaround we just force the visibility to default for +// all these __cxa functions in this module. + +#pragma GCC visibility push(default) // Given the thrown type THROW_TYPE, pointer to a variable containing a // pointer to the exception object THROWN_PTR_P and a type CATCH_TYPE to @@ -175,4 +185,6 @@ asm (".global __cxa_end_cleanup\n" " bl\t_Unwind_Resume @ Never returns\n"); #endif +#pragma GCC visibility pop + #endif -- cgit v1.2.3