summaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2014-02-04 09:31:38 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2014-02-04 09:31:38 +0000
commit48118d023884b6ee7907bfa7b61a4dfb95eb06b5 (patch)
tree3c9e610ec87b3a7318d5a7e71a84a3cb76aae8c6 /libgcc
parent743164d217400afc91318beeb2e984d8eedf21dc (diff)
downloadgcc-48118d023884b6ee7907bfa7b61a4dfb95eb06b5.tar.gz
Ensure libgcc_s unwinder is always used on 64-bit Solaris 10+/x86 (PR target/59788)
gcc: PR target/59788 * config/sol2.h (LINK_LIBGCC_MAPFILE_SPEC): Define. (LINK_SPEC): Use it for -shared, -shared-libgcc. libgcc: PR target/59788 * config/t-slibgcc-sld (libgcc-unwind.map): New target. (install-libgcc-unwind-map-forbuild): New target. (all): Depend on install-libgcc-unwind-map-forbuild. (install-libgcc-unwind-map): New target. (install): Depend on install-libgcc-unwind-map. gcc/testsuite: PR target/59788 * g++.dg/eh/unwind-direct.C: New test. toplevel: PR target/59788 * ltmain.sh (opt_duplicate_compiler_generated_deps): Enable on *solaris2*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207454 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog9
-rw-r--r--libgcc/config/t-slibgcc-sld23
2 files changed, 32 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 3186d069dec..f561edd2274 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,12 @@
+2014-02-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/59788
+ * config/t-slibgcc-sld (libgcc-unwind.map): New target.
+ (install-libgcc-unwind-map-forbuild): New target.
+ (all): Depend on install-libgcc-unwind-map-forbuild.
+ (install-libgcc-unwind-map): New target.
+ (install): Depend on install-libgcc-unwind-map.
+
2014-02-02 Sandra Loosemore <sandra@codesourcery.com>
* config/nios2/crti.S (_init): Initialize GOT pointer from
diff --git a/libgcc/config/t-slibgcc-sld b/libgcc/config/t-slibgcc-sld
index 178700047cc..ec6e5db0a3b 100644
--- a/libgcc/config/t-slibgcc-sld
+++ b/libgcc/config/t-slibgcc-sld
@@ -3,3 +3,26 @@
SHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
-Wl,-M,$(SHLIB_MAP)
+
+# Linker mapfile to enforce direct binding to libgcc_s unwinder
+# (PR target/59788).
+libgcc-unwind.map: libgcc-std.ver
+ @(echo "{"; \
+ for f in `grep _Unwind_ $< | sort`; do \
+ echo " $$f = EXTERN DIRECT;"; \
+ done; \
+ echo "};" ) > $@
+
+# Copy libgcc-unwind.map to the place where gcc will look for it at build-time.
+install-libgcc-unwind-map-forbuild: libgcc-unwind.map
+ dest=$(gcc_objdir)/tmp$$$$-$<; \
+ cp $< $$dest; \
+ chmod a+r $$dest; \
+ sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/$<
+
+all: install-libgcc-unwind-map-forbuild
+
+install-libgcc-unwind-map: libgcc-unwind.map
+ $(INSTALL_DATA) $< $(DESTDIR)$(slibdir)
+
+install: install-libgcc-unwind-map