[PATCH] gnu: libffi: Add unreleased patch to fix float128 on powerpc64le.

OpenSubmitted by dftxbs3e.
Details
2 participants
  • dftxbs3e
  • Ludovic Courtès
Owner
unassigned
Severity
normal
D
D
dftxbs3e wrote 6 days ago
(address . guix-patches@gnu.org)
b4a6938eebdc50da2cc2aa0c7522970a392e74b4.camel@free.fr
Hello,
Merging this and https://issues.guix.gnu.org/38459onto master allowsto successfully build bootstrap-tarballs for powerpc64le-linux-gnuusing the command:
$ guix build --target=powerpc64le-linux-gnu bootstrap-tarballs
This patch can be removed when libffi releases the next version(probably 3.4).
Thank you
From e195e9e9fe0409dd4b76cac87244cb2b5d7636e0 Mon Sep 17 00:00:00 2001From: John Doe <dftxbs3e@free.fr>Date: Sat, 21 Nov 2020 17:06:07 +0100Subject: [PATCH] gnu: libffi: Add unreleased patch to fix float128 on powerpc64le.
Patch fetched from https://github.com/libffi/libffi/pull/561.patch--- gnu/local.mk | 3 +- gnu/packages/libffi.scm | 1 + .../patches/libffi-float128-powerpc64le.patch | 58 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/libffi-float128-powerpc64le.patch
Toggle diff (92 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 35369063f1..f4a43982cc 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1731,7 +1731,8 @@ dist_patch_DATA = \ %D%/packages/patches/xsane-support-ipv6.patch \ %D%/packages/patches/xsane-tighten-default-umask.patch \ %D%/packages/patches/yggdrasil-extra-config.patch \- %D%/packages/patches/zziplib-CVE-2018-16548.patch+ %D%/packages/patches/zziplib-CVE-2018-16548.patch \+ %D%/packages/patches/libffi-float128-powerpc64le.patch MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.indiff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scmindex d324892330..f6e2efabe0 100644--- a/gnu/packages/libffi.scm+++ b/gnu/packages/libffi.scm@@ -48,6 +48,7 @@ (uri (string-append "ftp://sourceware.org/pub/libffi/" name "-" version ".tar.gz"))+ (patches (search-patches "libffi-float128-powerpc64le.patch")) (sha256 (base32 "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj"))))diff --git a/gnu/packages/patches/libffi-float128-powerpc64le.patch b/gnu/packages/patches/libffi-float128-powerpc64le.patchnew file mode 100644index 0000000000..4fd32b0102--- /dev/null+++ b/gnu/packages/patches/libffi-float128-powerpc64le.patch@@ -0,0 +1,58 @@+From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>+Date: Sun, 24 Nov 2019 09:52:01 +0100+Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7++This is a patch pulled down from the following:+https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch++This issue is being hit on OpenBMC code when pulling the latest+libffi tag and building on a P8 ppc64le machine. I verified this+patch fixes the issue we are seeing.++Below is the original commit message:++Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7+fails on:++In file included from ../src/powerpc/ffi.c:33:0:+../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target+ typedef _Float128 float128;+ ^~~~~~~~~++Fix this build failure by checking for __HAVE_FLOAT128 before using+_Float128, as _Float128 is enabled only on specific conditions, see+output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h:++ /* Defined to 1 if the current compiler invocation provides a+ floating-point type with the IEEE 754 binary128 format, and this glibc+ includes corresponding *f128 interfaces for it. */+ #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \+ && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH+ # define __HAVE_FLOAT128 1+ #else+ # define __HAVE_FLOAT128 0+ #endif++Fixes:+ - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53++Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>+Signed-off-by: Andrew Geissler <geissonator@yahoo.com>+---+ src/powerpc/ffi_powerpc.h | 2 +-+ 1 file changed, 1 insertion(+), 1 deletion(-)++diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h+index 8e2f2f0e..960a5c42 100644+--- a/src/powerpc/ffi_powerpc.h++++ b/src/powerpc/ffi_powerpc.h+@@ -57,7 +57,7 @@ typedef union+ double d;+ } ffi_dblfl;+ +-#if defined(__FLOAT128_TYPE__)++#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128)+ typedef _Float128 float128;+ #elif defined(__FLOAT128__)+ typedef __float128 float128;-- 2.29.2
L
L
Ludovic Courtès wrote 29 hours ago
(name . dftxbs3e)(address . dftxbs3e@free.fr)
87lfenzr5i.fsf@gnu.org
Hi,
dftxbs3e <dftxbs3e@free.fr> skribis:
Toggle quote (8 lines)> From e195e9e9fe0409dd4b76cac87244cb2b5d7636e0 Mon Sep 17 00:00:00 2001> From: John Doe <dftxbs3e@free.fr>> Date: Sat, 21 Nov 2020 17:06:07 +0100> Subject: [PATCH] gnu: libffi: Add unreleased patch to fix float128 on> powerpc64le.>> Patch fetched from https://github.com/libffi/libffi/pull/561.patch
Bonus points for a ChangeLog-style commit message. :-)
https://guix.gnu.org/manual/devel/en/html_node/Submitting-Patches.html
The patch LGTM, but I vaguely remember seeing similar patches by Efraimin a branch (?), or was it for 32-bit PowerPC?
If there’s no collision with other patches in this area, we can happilyapply it.
Ludo’.
D
D
dftxbs3e wrote 28 hours ago
(name . Ludovic Courtès)(address . ludo@gnu.org)
11a5a9a494b22c5036b6863c6333fdfaa965bbac.camel@free.fr
On Thu, 2020-11-26 at 23:31 +0100, Ludovic Courtès wrote:
Toggle quote (2 lines)> Hi,
Hello!
Toggle quote (17 lines)> dftxbs3e <dftxbs3e@free.fr> skribis:> > > From e195e9e9fe0409dd4b76cac87244cb2b5d7636e0 Mon Sep 17 00:00:00> > 2001> > From: John Doe <dftxbs3e@free.fr>> > Date: Sat, 21 Nov 2020 17:06:07 +0100> > Subject: [PATCH] gnu: libffi: Add unreleased patch to fix float128> > on> >  powerpc64le.> > > > Patch fetched from https://github.com/libffi/libffi/pull/561.patch> > Bonus points for a ChangeLog-style commit message.  :-)>   > https://guix.gnu.org/manual/devel/en/html_node/Submitting-Patches.html>
Sorry, it's not clear to me yet what that is yet, will read again.
Toggle quote (9 lines)> The patch LGTM, but I vaguely remember seeing similar patches by> Efraim> in a branch (?), or was it for 32-bit PowerPC?> > If there’s no collision with other patches in this area, we can> happily> apply it.>
There's no collision, Efraim's patch ishttps://github.com/libffi/libffi/pull/532 and mine ishttps://github.com/libffi/libffi/pull/561. Efraim's patch is aboutPOWER7 and earlier.
There's quite a few PRs relating to PowerPC bugs on libffi:https://github.com/libffi/libffi/pulls?q=is%3Apr+powerpc+is%3Aclosed
Toggle quote (2 lines)> Ludo’.
Thanks a lot for the review! Attached new patch version, I hope it isbetter with the commit message now.
From 568ff570b8077a3c5691139d72532ebb878f3097 Mon Sep 17 00:00:00 2001From: John Doe <dftxbs3e@free.fr>Date: Fri, 27 Nov 2020 00:12:08 +0100Subject: [PATCH] gnu: libffi: Add unreleased patch to fix float128 on powerpc64le.
* gnu/packages/patches/libffi-float128-powerpc64le.patch: Import patch file from https://github.com/libffi/libffi/pull/561.patch.* gnu/packages/libffi.scm (libffi)[patches]: Apply patch.* gnu/local.mk (dist_patch_DATA): Add patch file to build system.--- gnu/local.mk | 3 +- gnu/packages/libffi.scm | 1 + .../patches/libffi-float128-powerpc64le.patch | 58 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/libffi-float128-powerpc64le.patch
Toggle diff (92 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 289f510c11..55c686f15c 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1735,7 +1735,8 @@ dist_patch_DATA = \ %D%/packages/patches/xsane-support-ipv6.patch \ %D%/packages/patches/xsane-tighten-default-umask.patch \ %D%/packages/patches/yggdrasil-extra-config.patch \- %D%/packages/patches/zziplib-CVE-2018-16548.patch+ %D%/packages/patches/zziplib-CVE-2018-16548.patch \+ %D%/packages/patches/libffi-float128-powerpc64le.patch MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.indiff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scmindex d324892330..f6e2efabe0 100644--- a/gnu/packages/libffi.scm+++ b/gnu/packages/libffi.scm@@ -48,6 +48,7 @@ (uri (string-append "ftp://sourceware.org/pub/libffi/" name "-" version ".tar.gz"))+ (patches (search-patches "libffi-float128-powerpc64le.patch")) (sha256 (base32 "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj"))))diff --git a/gnu/packages/patches/libffi-float128-powerpc64le.patch b/gnu/packages/patches/libffi-float128-powerpc64le.patchnew file mode 100644index 0000000000..4fd32b0102--- /dev/null+++ b/gnu/packages/patches/libffi-float128-powerpc64le.patch@@ -0,0 +1,58 @@+From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>+Date: Sun, 24 Nov 2019 09:52:01 +0100+Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7++This is a patch pulled down from the following:+https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch++This issue is being hit on OpenBMC code when pulling the latest+libffi tag and building on a P8 ppc64le machine. I verified this+patch fixes the issue we are seeing.++Below is the original commit message:++Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7+fails on:++In file included from ../src/powerpc/ffi.c:33:0:+../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target+ typedef _Float128 float128;+ ^~~~~~~~~++Fix this build failure by checking for __HAVE_FLOAT128 before using+_Float128, as _Float128 is enabled only on specific conditions, see+output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h:++ /* Defined to 1 if the current compiler invocation provides a+ floating-point type with the IEEE 754 binary128 format, and this glibc+ includes corresponding *f128 interfaces for it. */+ #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \+ && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH+ # define __HAVE_FLOAT128 1+ #else+ # define __HAVE_FLOAT128 0+ #endif++Fixes:+ - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53++Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>+Signed-off-by: Andrew Geissler <geissonator@yahoo.com>+---+ src/powerpc/ffi_powerpc.h | 2 +-+ 1 file changed, 1 insertion(+), 1 deletion(-)++diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h+index 8e2f2f0e..960a5c42 100644+--- a/src/powerpc/ffi_powerpc.h++++ b/src/powerpc/ffi_powerpc.h+@@ -57,7 +57,7 @@ typedef union+ double d;+ } ffi_dblfl;+ +-#if defined(__FLOAT128_TYPE__)++#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128)+ typedef _Float128 float128;+ #elif defined(__FLOAT128__)+ typedef __float128 float128;-- 2.28.0
L
L
Ludovic Courtès wrote 17 hours ago
(name . dftxbs3e)(address . dftxbs3e@free.fr)
87tutbw293.fsf@gnu.org
Hi,
dftxbs3e <dftxbs3e@free.fr> skribis:
Toggle quote (5 lines)> There's no collision, Efraim's patch is> <https://github.com/libffi/libffi/pull/532> and mine is> <https://github.com/libffi/libffi/pull/561>. Efraim's patch is about> POWER7 and earlier.
OK, thanks for clarifying.
Toggle quote (11 lines)> From 568ff570b8077a3c5691139d72532ebb878f3097 Mon Sep 17 00:00:00 2001> From: John Doe <dftxbs3e@free.fr>> Date: Fri, 27 Nov 2020 00:12:08 +0100> Subject: [PATCH] gnu: libffi: Add unreleased patch to fix float128 on> powerpc64le.>> * gnu/packages/patches/libffi-float128-powerpc64le.patch: Import patch> file from <https://github.com/libffi/libffi/pull/561.patch>.> * gnu/packages/libffi.scm (libffi)[patches]: Apply patch.> * gnu/local.mk (dist_patch_DATA): Add patch file to build system.
LGTM. One thing before I push: do you want to replace “John Doe” by“dftxbs3e” as the author?
Thanks,Ludo’.
D
D
dftxbs3e wrote 3 hours ago
(name . Ludovic Courtès)(address . ludo@gnu.org)
73d509f9542a63c055280c3928f6e61708594237.camel@free.fr
On Fri, 2020-11-27 at 10:57 +0100, Ludovic Courtès wrote:
Toggle quote (2 lines)> Hi,
Hello again!
Toggle quote (3 lines)> LGTM.  One thing before I push: do you want to replace “John Doe” by> “dftxbs3e” as the author?
As-is is fine for me!
Toggle quote (4 lines)> > Thanks,> Ludo’.
Thank you
?