summaryrefslogtreecommitdiff
path: root/gcc/config/sol2.h
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 /gcc/config/sol2.h
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 'gcc/config/sol2.h')
-rw-r--r--gcc/config/sol2.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h
index a023cfed0d9..2a657db59c1 100644
--- a/gcc/config/sol2.h
+++ b/gcc/config/sol2.h
@@ -174,12 +174,21 @@ along with GCC; see the file COPYING3. If not see
#define RDYNAMIC_SPEC "--export-dynamic"
#endif
+#ifndef USE_GLD
+/* With Sun ld, use mapfile to enforce direct binding to libgcc_s unwinder. */
+#define LINK_LIBGCC_MAPFILE_SPEC \
+ "%{shared|shared-libgcc:-M %slibgcc-unwind.map}"
+#else
+/* GNU ld doesn't support direct binding. */
+#define LINK_LIBGCC_MAPFILE_SPEC ""
+#endif
+
#undef LINK_SPEC
#define LINK_SPEC \
"%{h*} %{v:-V} \
%{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \
%{static:-dn -Bstatic} \
- %{shared:-G -dy %{!mimpure-text:-z text}} \
+ %{shared:-G -dy %{!mimpure-text:-z text}} " LINK_LIBGCC_MAPFILE_SPEC " \
%{symbolic:-Bsymbolic -G -dy -z text} \
%(link_arch) \
%{Qy:} %{!Qn:-Qy}"