summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/aixrtl/2.4.4-expsym-cxx')
-rw-r--r--patches/aixrtl/2.4.4-expsym-cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/patches/aixrtl/2.4.4-expsym-cxx b/patches/aixrtl/2.4.4-expsym-cxx
new file mode 100644
index 0000000..a9ea046
--- /dev/null
+++ b/patches/aixrtl/2.4.4-expsym-cxx
@@ -0,0 +1,21 @@
+commit 2dfd834840a9de8ce3866af1cf8f3aff9b1a15e8
+Author: Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
+Date: Wed Mar 2 15:06:48 2016 +0100
+
+ AIX: Stop exporting any _GLOBAL__ symbol.
+
+ * m4/libtool.m4 (_LT_LINKER_SHLIBS): On AIX, GNU g++ generates
+ _GLOBAL__* symbols as, amongst others, landing pads for C++ exceptions.
+ These symbols must not be exported from shared libraries, or exception
+ handling may break for applications with runtime linking enabled.
+
+--- configure
++++ configure
+@@ -5000,6 +5000,7 @@ m4_if([$1], [CXX], [
+ # '[[BDLT]]*' with AIX nm in default mode (POSIX like)
+ # '[[CVW]]' with GNU nm in either BSD or POSIX mode
+ export_symbols_cmds_CXX='$NM -gp $libobjs $convenience | $global_symbol_pipe | $EGREP -v " ($exclude_expsyms)$" | awk '\''{ kw = "" } /^([[CVWZ]]|[[BDLT]]\*) / { kw = " weak" } { print $ 3 kw }'\'' | sort -u > $export_symbols'
++ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*|_GLOBAL__[FID]_.*'
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX=$ltdll_cmds