libtool.eclass: elibtoolize: add ppc64le handling #580792
authorLeno Hou <lenohou@gmail.com>
Sat, 23 Apr 2016 18:15:05 +0000 (18:15 +0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 21 Feb 2017 22:50:47 +0000 (17:50 -0500)
1) We faced unable read SONAME from ${lib} when emerge below packages
   platform               pacakge                 elibtoolized
   ppc64le                app-text/opensp         no
   ppc64le                dev-libs/expat          yes
   ppc64le                net-firewall/iptables   yes
   ppc64le                net-libs/libmnl         no
   ppc64le                sys-apps/acl            yes
   ppc64le                sys-apps/attr           yes
   ppc64le                sys-libs/gdbm           yes
   ppc64le                sys-process/procps      no

2) The problem is due to the wrong $LD="ld -m elf64ppc" when link.
 This patch sets $LD="ld -m elf64lppc" in m4/libtool.m4 on ppc64le.

URL: https://debbugs.gnu.org/23348

eclass/ELT-patches/ppc64le/2.4.2 [new file with mode: 0644]
eclass/ELT-patches/ppc64le/2.4.4 [new file with mode: 0644]
eclass/libtool.eclass

diff --git a/eclass/ELT-patches/ppc64le/2.4.2 b/eclass/ELT-patches/ppc64le/2.4.2
new file mode 100644 (file)
index 0000000..8d3b116
--- /dev/null
@@ -0,0 +1,32 @@
+https://bugs.gentoo.org/580792
+https://bugs.gentoo.org/581314
+https://debbugs.gnu.org/23348
+
+this adds support for ppc64le to older versions.  most of this is upstream already.
+
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1329,6 +1329,9 @@
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
++        ppc64le-*linux*|powerpc64le-*linux*)
++          LD="${LD-ld} -m elf32lppclinux"
++          ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+@@ -1345,9 +1348,12 @@
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+-        ppc*-*linux*|powerpc*-*linux*)
++        powerpc-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
++        powerpcle-*linux*|powerpc64le-*linux*)
++          LD="${LD-ld} -m elf64lppc"
++          ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
diff --git a/eclass/ELT-patches/ppc64le/2.4.4 b/eclass/ELT-patches/ppc64le/2.4.4
new file mode 100644 (file)
index 0000000..0d86521
--- /dev/null
@@ -0,0 +1,21 @@
+https://bugs.gentoo.org/580792
+https://bugs.gentoo.org/581314
+https://debbugs.gnu.org/23348
+
+this fixes ppc64le handling in newer libtool versions
+
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1386,10 +1386,10 @@
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+-        powerpcle-*linux*)
++        powerpcle-*linux*|powerpc64le-*linux*)
+           LD="${LD-ld} -m elf64lppc"
+           ;;
+-        powerpc-*linux*)
++        powerpc-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
index 47ef8128defad5b243c9f324111fb5354115bec0..9f56c202ffc219d094955907a59302416753885e 100644 (file)
@@ -144,7 +144,7 @@ elibtoolize() {
        local deptoremove=
        local do_shallow="no"
        local force="false"
-       local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed target-nm"
+       local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed target-nm ppc64le"
 
        for x in "$@" ; do
                case ${x} in
@@ -417,6 +417,10 @@ elibtoolize() {
                                        ELT_walk_patches "${d}/configure" "${p}"
                                        ret=$?
                                        ;;
+                               ppc64le)
+                                       ELT_walk_patches "${d}/configure" "${p}"
+                                       ret=$?
+                                       ;;
                                *)
                                        # ltmain.sh patches are applied above
                                        ;;