aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2013-03-06 10:22:26 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-03-06 10:22:26 +0000
commit2d3a55f2d76914f47026259e23a4292ccb06f0ff (patch)
tree6e8fd2d5b7ad7a1b3c63782bfa41278b33a1ef2b /gcc-4.7
parent78a68e851a2f6f9d00367cd38eeedf670bb80f01 (diff)
parent811925038a83c20dad6250957e3082e1039c0c77 (diff)
downloadtoolchain_gcc-2d3a55f2d76914f47026259e23a4292ccb06f0ff.tar.gz
toolchain_gcc-2d3a55f2d76914f47026259e23a4292ccb06f0ff.tar.bz2
toolchain_gcc-2d3a55f2d76914f47026259e23a4292ccb06f0ff.zip
Merge "Use default visibility for the __cxa functions in eh_arm.cc."
Diffstat (limited to 'gcc-4.7')
-rw-r--r--gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc b/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc
index 0f0b02671..a03dd13ea 100644
--- a/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc
+++ b/gcc-4.7/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, exception object UE_HEADER and a
// type CATCH_TYPE to compare against, return whether or not there is
@@ -224,4 +234,6 @@ asm (" .pushsection .text.__cxa_end_cleanup\n"
#endif
#endif
+#pragma GCC visibility pop
+
#endif