Subject: bug#11423: x86_64-pc-solaris2.* GNU ld breakage due to _sol2 emulation detection

From: Fabian Groffen <[email-masked]>
Date: Sun, 6 May 2012 12:29:31 +0200

All,

Since commit [1] libtool tries to set a 64-bits target for GNU ld.
However, it does so wrongly for x86_64-pc-solaris2.* targets, causing
libtool to believe the linker is called ld_sol2.  There is no such
thing, and it obviously breaks things further down.
Some people wrongly assume there is supposed to be an ld_sol2 on their
systems, e.g. [2].

I think the original change is fragile, because it assumes it has all
CHOSTs matched, then appends _sol2.  In the wild, people have used
amd64-pc-solaris2* too, so perhaps it would be safer if the code only
appended _sol2 if there is actually an explicit target set.

Anyhow, since the 64-bits sparc target is called sparc64-* or sparcv9-*,
the sparc case is already correctly handled, so in the attached patch, I
just added an x86_64-* case, although I could imagine relaxing the i?86
case to *86*-pc-solaris2* too.

In any case, defaulting to a linker called ld_sol2 is wrong.

Regards,
Fabian

[1] http://lists.gnu.org/archive/html/libtool-commit/2011-02/msg00000.html
[2] http://osdyson.org/issues/8

-- 
Fabian Groffen
Gentoo on a different level
Unbreak x86_64-pc-solaris2.1[01], it IS 64-bits too.  Without this,
libtool thinks the linker is called ld_sol2.

--- libltdl/m4/libtool.m4
+++ libltdl/m4/libtool.m4
@@ -1383,7 +1383,7 @@
       case $lt_cv_prog_gnu_ld in
       yes*)
         case $host in
-        i?86-*-solaris*)
+        i?86-*-solaris*|x86_64-*-solaris*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
         sparc*-*-solaris*)