Subject: bug#16452: opt_duplicate_compiler_generated_deps is harmful on Solaris

From: Rainer Orth <[email-masked]>
Date: Wed, 15 Jan 2014 13:59:11 +0100

As described in GCC bug PR target/59788

	Mixing libc and libgcc_s unwinders on 64-bit Solaris 10+/x86 breaks EH
        http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788

linking e.g. C++ code with -Wl,-Bdirect on 64-bit Solaris 10+/x86 causes
unwinding failures caused by mixing the libc and libgcc_s unwinders in a
single executable.

I've fixed this by a patch to cause every shared object to be linked
with a mapfile to force direct binding to the libgcc_s unwinder,
avoiding the harmful mixing.  Unfortunately, for this change to work
requires to disable the opt_duplicate_compiler_generated_deps
optimization (included in that patch for the copy of libtool in the gcc
tree):

diff --git a/ltmain.sh b/ltmain.sh
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -976,7 +976,7 @@ func_enable_tag ()

   case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
+    *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* )
       # don't eliminate duplications in $postdeps and $predeps
       opt_duplicate_compiler_generated_deps=:
       ;;

I think that patch should go into upstream libtool as well, although
this won't help for all the copies of libtool already included in
released packages.  As described in the PR, I'm uncertain how to move
forward here.  Suggestions?

Thanks.
        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University