unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Patch adding POWER9 cross compile support
@ 2019-02-27 18:29 Tobias Platen
  2019-02-27 21:24 ` Jonathan Brielmaier
  2019-03-06 13:54 ` Ludovic Courtès
  0 siblings, 2 replies; 11+ messages in thread
From: Tobias Platen @ 2019-02-27 18:29 UTC (permalink / raw)
  To: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 239 bytes --]

I succesfully crosscompiled GNU Hello and all its dependencies including 
glibc for POWER9. Without my patch glibc will fail to build. I am using 
the core-updates branch, since the default branch uses an outdated 
version of GCC.

Tobias

[-- Attachment #2: cross-base.diff --]
[-- Type: text/x-patch, Size: 691 bytes --]

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 8fe9d5b..f642bad 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -138,6 +138,8 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                                "--disable-decimal-float" ;would need libc
                                "--disable-libcilkrts"
 
+                                "--with-long-double-128" ; required for power9 bootstrap
+
                                ;; When target is any OS other than 'none' these
                                ;; libraries will fail if there is no libc
                                ;; present. See

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-02-27 18:29 Patch adding POWER9 cross compile support Tobias Platen
@ 2019-02-27 21:24 ` Jonathan Brielmaier
  2019-03-01  6:04   ` Tobias Platen
  2019-03-06 13:54 ` Ludovic Courtès
  1 sibling, 1 reply; 11+ messages in thread
From: Jonathan Brielmaier @ 2019-02-27 21:24 UTC (permalink / raw)
  To: guix-devel

On 2/27/19 7:29 PM, Tobias Platen wrote:
> I succesfully crosscompiled GNU Hello and all its dependencies including
> glibc for POWER9. Without my patch glibc will fail to build. I am using
> the core-updates branch, since the default branch uses an outdated
> version of GCC.
>
> Tobias

Nice! And it's just a simple one-liner :P

I get following result for hello:
/gnu/store/x0372n45l5ckiddra4g2xjl693y2wld3-hello-2.10

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-02-27 21:24 ` Jonathan Brielmaier
@ 2019-03-01  6:04   ` Tobias Platen
  0 siblings, 0 replies; 11+ messages in thread
From: Tobias Platen @ 2019-03-01  6:04 UTC (permalink / raw)
  To: guix-devel

In the next step I will try to build the bootstrap binaries.

On 02/27/2019 10:24 PM, Jonathan Brielmaier wrote:
> On 2/27/19 7:29 PM, Tobias Platen wrote:
>> I succesfully crosscompiled GNU Hello and all its dependencies including
>> glibc for POWER9. Without my patch glibc will fail to build. I am using
>> the core-updates branch, since the default branch uses an outdated
>> version of GCC.
>>
>> Tobias
> 
> Nice! And it's just a simple one-liner :P
> 
> I get following result for hello:
> /gnu/store/x0372n45l5ckiddra4g2xjl693y2wld3-hello-2.10
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-02-27 18:29 Patch adding POWER9 cross compile support Tobias Platen
  2019-02-27 21:24 ` Jonathan Brielmaier
@ 2019-03-06 13:54 ` Ludovic Courtès
  2019-03-06 17:56   ` Tobias Platen
  1 sibling, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2019-03-06 13:54 UTC (permalink / raw)
  To: Tobias Platen; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

Hello Tobias,

Tobias Platen <trisquel@platen-software.de> skribis:

> I succesfully crosscompiled GNU Hello and all its dependencies
> including glibc for POWER9. Without my patch glibc will fail to
> build. I am using the core-updates branch, since the default branch
> uses an outdated version of GCC.

Awesome!  What triplet did you use, is it “powerpc9-linux-gnu”?

I’d like to change the patch so that it doesn’t affect other targets.
Would the updated patch below work for you?

Could also you succinctly explain why this flag is needed?  I’d rather
have a comment in the code so the next person that fiddles with it knows
why it’s there.

Thank you!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 868 bytes --]

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index bb3d6d916a..c70739b3ab 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -141,6 +141,11 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                                "--disable-decimal-float" ;would need libc
                                "--disable-libcilkrts"
 
+                               ,@(if (string-prefix? "powerpc9-" target)
+                                     ;; On POWER9 we need this because XXX.
+                                     '("--with-long-double-128")
+                                     '())
+
                                ;; When target is any OS other than 'none' these
                                ;; libraries will fail if there is no libc
                                ;; present. See

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-06 13:54 ` Ludovic Courtès
@ 2019-03-06 17:56   ` Tobias Platen
  2019-03-10 17:27     ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Tobias Platen @ 2019-03-06 17:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix-devel



On 03/06/2019 02:54 PM, Ludovic Courtès wrote:
> +                               ,@(if (string-prefix? "powerpc9-" target)
> +                                     ;; On POWER9 we need this because XXX.
> +                                     '("--with-long-double-128")
> +                                     '())
> +
It needs to be ppc64el I think. I will later do a test in a big endian 
vm. POWER9 is a bi-endian architecture, and most distros only support 
little-endian. POWER4 only supports big-endian, and is still supported 
by some distros. After testing I will send an updated patch.

Tobias

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-06 17:56   ` Tobias Platen
@ 2019-03-10 17:27     ` Ludovic Courtès
  2019-03-10 20:20       ` Tobias Platen
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2019-03-10 17:27 UTC (permalink / raw)
  To: Tobias Platen; +Cc: Guix-devel

Hi Tobias,

Tobias Platen <trisquel@platen-software.de> skribis:

> On 03/06/2019 02:54 PM, Ludovic Courtès wrote:
>> +                               ,@(if (string-prefix? "powerpc9-" target)
>> +                                     ;; On POWER9 we need this because XXX.
>> +                                     '("--with-long-double-128")
>> +                                     '())
>> +
> It needs to be ppc64el I think. I will later do a test in a big endian
> vm. POWER9 is a bi-endian architecture, and most distros only support
> little-endian. POWER4 only supports big-endian, and is still supported
> by some distros. After testing I will send an updated patch.

I don’t think that answers my questions.  :-)

Those were:

  1. What GNU triplet do you use?

  2. What the reason for this extra configure flag, so we can add it in
     the comment above in place of XXX?

TIA!

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-10 17:27     ` Ludovic Courtès
@ 2019-03-10 20:20       ` Tobias Platen
  2019-03-11  7:52         ` Efraim Flashner
  0 siblings, 1 reply; 11+ messages in thread
From: Tobias Platen @ 2019-03-10 20:20 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 1646 bytes --]

I ran configure on my Talos II, and got the following error message.

checking for the Guix system type... powerpc64le-linux
configure: error: `powerpc64le-linux' is not a supported platform.
See "GNU Distribution" in the manual, or try `--with-courage'.

Guix already knows about this architecture, but building glibc will fail 
if gcc does not have the float128 datatype. Once I saw this link[1] on 
the guix mailing list, I knew how to solve the build error.

For the second question I could not find an answer.

[1] http://lists.busybox.net/pipermail/buildroot/2017-September/201379.html

Tobias

On 03/10/2019 06:27 PM, Ludovic Courtès wrote:
> Hi Tobias,
> 
> Tobias Platen <trisquel@platen-software.de> skribis:
> 
>> On 03/06/2019 02:54 PM, Ludovic Courtès wrote:
>>> +                               ,@(if (string-prefix? "powerpc9-" target)
>>> +                                     ;; On POWER9 we need this because XXX.
>>> +                                     '("--with-long-double-128")
>>> +                                     '())
>>> +
>> It needs to be ppc64el I think. I will later do a test in a big endian
>> vm. POWER9 is a bi-endian architecture, and most distros only support
>> little-endian. POWER4 only supports big-endian, and is still supported
>> by some distros. After testing I will send an updated patch.
> 
> I don’t think that answers my questions.  :-)
> 
> Those were:
> 
>    1. What GNU triplet do you use?

> 
>    2. What the reason for this extra configure flag, so we can add it in
>       the comment above in place of XXX?
> 
> TIA!
> 
> Ludo’.
> 

[-- Attachment #2: guix.diff --]
[-- Type: text/x-patch, Size: 885 bytes --]

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 6a09272..0992259 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -138,6 +138,10 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                                "--disable-libquadmath"
                                "--disable-decimal-float" ;would need libc
                                "--disable-libcilkrts"
+                               ,@(if (string-prefix? "powerpc64le-" target)
+                               ;; On POWER9 (little endian) glibc needs the 128 bit long double type.
+                               '("--with-long-double-128")
+                               '())
 
                                ;; When target is any OS other than 'none' these
                                ;; libraries will fail if there is no libc

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-10 20:20       ` Tobias Platen
@ 2019-03-11  7:52         ` Efraim Flashner
  2019-03-12 14:10           ` Ludovic Courtès
  2019-03-12 14:10           ` Ludovic Courtès
  0 siblings, 2 replies; 11+ messages in thread
From: Efraim Flashner @ 2019-03-11  7:52 UTC (permalink / raw)
  To: Tobias Platen; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 3268 bytes --]

On Sun, Mar 10, 2019 at 09:20:04PM +0100, Tobias Platen wrote:
> I ran configure on my Talos II, and got the following error message.
> 
> checking for the Guix system type... powerpc64le-linux
> configure: error: `powerpc64le-linux' is not a supported platform.
> See "GNU Distribution" in the manual, or try `--with-courage'.
> 
> Guix already knows about this architecture, but building glibc will fail if
> gcc does not have the float128 datatype. Once I saw this link[1] on the guix
> mailing list, I knew how to solve the build error.
> 
> For the second question I could not find an answer.
> 
> [1] http://lists.busybox.net/pipermail/buildroot/2017-September/201379.html
> 
> Tobias
> 
> On 03/10/2019 06:27 PM, Ludovic Courtès wrote:
> > Hi Tobias,
> > 
> > Tobias Platen <trisquel@platen-software.de> skribis:
> > 
> > > On 03/06/2019 02:54 PM, Ludovic Courtès wrote:
> > > > +                               ,@(if (string-prefix? "powerpc9-" target)
> > > > +                                     ;; On POWER9 we need this because XXX.
> > > > +                                     '("--with-long-double-128")
> > > > +                                     '())
> > > > +
> > > It needs to be ppc64el I think. I will later do a test in a big endian
> > > vm. POWER9 is a bi-endian architecture, and most distros only support
> > > little-endian. POWER4 only supports big-endian, and is still supported
> > > by some distros. After testing I will send an updated patch.
> > 
> > I don’t think that answers my questions.  :-)
> > 
> > Those were:
> > 
> >    1. What GNU triplet do you use?
> 
> > 
> >    2. What the reason for this extra configure flag, so we can add it in
> >       the comment above in place of XXX?
> > 
> > TIA!
> > 
> > Ludo’.
> > 

> diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
> index 6a09272..0992259 100644
> --- a/gnu/packages/cross-base.scm
> +++ b/gnu/packages/cross-base.scm
> @@ -138,6 +138,10 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
>                                 "--disable-libquadmath"
>                                 "--disable-decimal-float" ;would need libc
>                                 "--disable-libcilkrts"
> +                               ,@(if (string-prefix? "powerpc64le-" target)
> +                               ;; On POWER9 (little endian) glibc needs the 128 bit long double type.
> +                               '("--with-long-double-128")
> +                               '())
>  
>                                 ;; When target is any OS other than 'none' these
>                                 ;; libraries will fail if there is no libc


In the off chance we ever wish to support powerpc64 big endian, I
suggest instead using (string-prefix? "powerpc64*-" target)

As far as '--with-long-double-128', I think it's worth finding out which
architectures accept it and allowing it for all of those, rather than
making it powerpc64le only.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-11  7:52         ` Efraim Flashner
@ 2019-03-12 14:10           ` Ludovic Courtès
  2019-03-12 14:10           ` Ludovic Courtès
  1 sibling, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2019-03-12 14:10 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: Guix-devel

Hi!

Efraim Flashner <efraim@flashner.co.il> skribis:

> On Sun, Mar 10, 2019 at 09:20:04PM +0100, Tobias Platen wrote:
>> I ran configure on my Talos II, and got the following error message.
>> 
>> checking for the Guix system type... powerpc64le-linux

Sure but that’s the next step.  My question was about the triplet you
passed to ‘--target’ when cross-compiling from your Intel(?) machine,
but I think I can derive the answer now:

  guix build --target=powerpc64le-linux-gnu …

>> Guix already knows about this architecture, but building glibc will fail if
>> gcc does not have the float128 datatype. Once I saw this link[1] on the guix
>> mailing list, I knew how to solve the build error.
>> 
>> For the second question I could not find an answer.
>> 
>> [1] http://lists.busybox.net/pipermail/buildroot/2017-September/201379.html

Alright.

Thanks for the info.

> In the off chance we ever wish to support powerpc64 big endian, I
> suggest instead using (string-prefix? "powerpc64*-" target)

Yes.

Unfortunately, with just this extra --with-long-double-128, this:

  guix build sed --target=powerpc64le-linux-gnu

eventually leads to a glibc build failure:

--8<---------------cut here---------------start------------->8---
running configure fragment for sysdeps/unix/sysv/linux/powerpc
checking whether powerpc64le-linux-gnu-gcc -g -O2 -mlong-double-128 uses IBM extended format... yes
running configure fragment for sysdeps/unix/sysv/linux
checking installed Linux kernel header files... 3.2.0 or later
configure: WARNING: minimum kernel version reset to 3.10.0
checking for kernel header at least 3.10.0... ok
running configure fragment for sysdeps/gnu
running configure fragment for sysdeps/powerpc/powerpc64/le
checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type... no
checking if the target machine is at least POWER8... yes
configure: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
--8<---------------cut here---------------end--------------->8---

See ‘config.log’ excerpt below.  Do you happen to have an additional
change needed?

Thanks,
Ludo’.

--8<---------------cut here---------------start------------->8---
configure:6698: result: running configure fragment for sysdeps/powerpc/powerpc64/le
configure:5: checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type
configure:31: powerpc64le-linux-gnu-gcc -c -g -O2 -Werror -mfloat128  conftest.c >&5
powerpc64le-linux-gnu-gcc: error: unrecognized command line option '-mfloat128'
configure:31: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU C Library"
| #define PACKAGE_TARNAME "glibc"
| #define PACKAGE_VERSION "(see version.h)"
| #define PACKAGE_STRING "GNU C Library (see version.h)"
| #define PACKAGE_BUGREPORT "https://sourceware.org/bugzilla/"
| #define PACKAGE_URL "http://www.gnu.org/software/glibc/"
| #define PKGVERSION "(GNU libc) "
| #define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>"
| #define HAVE_TUNABLES 1
| #define HAVE_CC_NO_STACK_PROTECTOR 1
| #define STACK_PROTECTOR_LEVEL 0
| #define USE_MULTIARCH 1
| #define HAVE_ASM_SET_DIRECTIVE 1
| #define HAVE_SDATA_SECTION 1
| #define NO_CTORS_DTORS_SECTIONS 1
| #define HAVE_Z_COMBRELOC 1
| #define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1

| #define HAVE_EHDR_START 1
| #define HAVE_BUILTIN_TRAP 1
| #define HAVE_ELFV2_ABI 1
| #define __LINUX_KERNEL_VERSION (3 * 65536 + 10 * 256 + 0)
| #define __ABI_TAG_VERSION 2,6,32
| #define HAVE_INLINED_SYSCALLS 1
| /* end confdefs.h.  */
| 
| __float128 a, b, c, d, e;
| int i;
| 
| __float128
| foobar (__float128 x)
| {
|   a = __builtin_nansq ("0");
|   b = __builtin_huge_valq ();
|   c = __builtin_infq ();
|   d = __builtin_fabsq (x);
|   e = __builtin_nanq ("0");
|   i = __builtin_signbit (x);
|   return __builtin_copysignq (x, x);
| }
| 
configure:39: result: no
configure:47: checking if the target machine is at least POWER8
configure:61: powerpc64le-linux-gnu-gcc -c -g -O2   conftest.c >&5
configure:61: $? = 0
configure:68: result: yes
configure:75: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
--8<---------------cut here---------------end--------------->8---

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-11  7:52         ` Efraim Flashner
  2019-03-12 14:10           ` Ludovic Courtès
@ 2019-03-12 14:10           ` Ludovic Courtès
  2019-03-13  7:28             ` Tobias Platen
  1 sibling, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2019-03-12 14:10 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: Guix-devel

Hi!

Efraim Flashner <efraim@flashner.co.il> skribis:

> On Sun, Mar 10, 2019 at 09:20:04PM +0100, Tobias Platen wrote:
>> I ran configure on my Talos II, and got the following error message.
>> 
>> checking for the Guix system type... powerpc64le-linux

Sure but that’s the next step.  My question was about the triplet you
passed to ‘--target’ when cross-compiling from your Intel(?) machine,
but I think I can derive the answer now:

  guix build --target=powerpc64le-linux-gnu …

>> Guix already knows about this architecture, but building glibc will fail if
>> gcc does not have the float128 datatype. Once I saw this link[1] on the guix
>> mailing list, I knew how to solve the build error.
>> 
>> For the second question I could not find an answer.
>> 
>> [1] http://lists.busybox.net/pipermail/buildroot/2017-September/201379.html

Alright.

Thanks for the info.

> In the off chance we ever wish to support powerpc64 big endian, I
> suggest instead using (string-prefix? "powerpc64*-" target)

Yes.

Unfortunately, with just this extra --with-long-double-128, this:

  guix build sed --target=powerpc64le-linux-gnu

eventually leads to a glibc build failure:

--8<---------------cut here---------------start------------->8---
running configure fragment for sysdeps/unix/sysv/linux/powerpc
checking whether powerpc64le-linux-gnu-gcc -g -O2 -mlong-double-128 uses IBM extended format... yes
running configure fragment for sysdeps/unix/sysv/linux
checking installed Linux kernel header files... 3.2.0 or later
configure: WARNING: minimum kernel version reset to 3.10.0
checking for kernel header at least 3.10.0... ok
running configure fragment for sysdeps/gnu
running configure fragment for sysdeps/powerpc/powerpc64/le
checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type... no
checking if the target machine is at least POWER8... yes
configure: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
--8<---------------cut here---------------end--------------->8---

See ‘config.log’ excerpt below.  Do you happen to have an additional
change needed?

Thanks,
Ludo’.

--8<---------------cut here---------------start------------->8---
configure:6698: result: running configure fragment for sysdeps/powerpc/powerpc64/le
configure:5: checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type
configure:31: powerpc64le-linux-gnu-gcc -c -g -O2 -Werror -mfloat128  conftest.c >&5
powerpc64le-linux-gnu-gcc: error: unrecognized command line option '-mfloat128'
configure:31: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU C Library"
| #define PACKAGE_TARNAME "glibc"
| #define PACKAGE_VERSION "(see version.h)"
| #define PACKAGE_STRING "GNU C Library (see version.h)"
| #define PACKAGE_BUGREPORT "https://sourceware.org/bugzilla/"
| #define PACKAGE_URL "http://www.gnu.org/software/glibc/"
| #define PKGVERSION "(GNU libc) "
| #define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>"
| #define HAVE_TUNABLES 1
| #define HAVE_CC_NO_STACK_PROTECTOR 1
| #define STACK_PROTECTOR_LEVEL 0
| #define USE_MULTIARCH 1
| #define HAVE_ASM_SET_DIRECTIVE 1
| #define HAVE_SDATA_SECTION 1
| #define NO_CTORS_DTORS_SECTIONS 1
| #define HAVE_Z_COMBRELOC 1
| #define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1

| #define HAVE_EHDR_START 1
| #define HAVE_BUILTIN_TRAP 1
| #define HAVE_ELFV2_ABI 1
| #define __LINUX_KERNEL_VERSION (3 * 65536 + 10 * 256 + 0)
| #define __ABI_TAG_VERSION 2,6,32
| #define HAVE_INLINED_SYSCALLS 1
| /* end confdefs.h.  */
| 
| __float128 a, b, c, d, e;
| int i;
| 
| __float128
| foobar (__float128 x)
| {
|   a = __builtin_nansq ("0");
|   b = __builtin_huge_valq ();
|   c = __builtin_infq ();
|   d = __builtin_fabsq (x);
|   e = __builtin_nanq ("0");
|   i = __builtin_signbit (x);
|   return __builtin_copysignq (x, x);
| }
| 
configure:39: result: no
configure:47: checking if the target machine is at least POWER8
configure:61: powerpc64le-linux-gnu-gcc -c -g -O2   conftest.c >&5
configure:61: $? = 0
configure:68: result: yes
configure:75: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
--8<---------------cut here---------------end--------------->8---

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Patch adding POWER9 cross compile support
  2019-03-12 14:10           ` Ludovic Courtès
@ 2019-03-13  7:28             ` Tobias Platen
  0 siblings, 0 replies; 11+ messages in thread
From: Tobias Platen @ 2019-03-13  7:28 UTC (permalink / raw)
  To: Ludovic Courtès, Efraim Flashner; +Cc: Guix-devel

I had to work on the core-updates branch, or in the past on the wip-gcc7 
branch. I mentioned this some month ago. The current branch has an 
outdated gcc version.

On 03/12/2019 03:10 PM, Ludovic Courtès wrote:
> Hi!
> 
> Efraim Flashner <efraim@flashner.co.il> skribis:
> 
>> On Sun, Mar 10, 2019 at 09:20:04PM +0100, Tobias Platen wrote:
>>> I ran configure on my Talos II, and got the following error message.
>>>
>>> checking for the Guix system type... powerpc64le-linux
> 
> Sure but that’s the next step.  My question was about the triplet you
> passed to ‘--target’ when cross-compiling from your Intel(?) machine,
> but I think I can derive the answer now:
> 
>    guix build --target=powerpc64le-linux-gnu …
> 
>>> Guix already knows about this architecture, but building glibc will fail if
>>> gcc does not have the float128 datatype. Once I saw this link[1] on the guix
>>> mailing list, I knew how to solve the build error.
>>>
>>> For the second question I could not find an answer.
>>>
>>> [1] http://lists.busybox.net/pipermail/buildroot/2017-September/201379.html
> 
> Alright.
> 
> Thanks for the info.
> 
>> In the off chance we ever wish to support powerpc64 big endian, I
>> suggest instead using (string-prefix? "powerpc64*-" target)
> 
> Yes.
> 
> Unfortunately, with just this extra --with-long-double-128, this:
> 
>    guix build sed --target=powerpc64le-linux-gnu
> 
> eventually leads to a glibc build failure:
> 
> --8<---------------cut here---------------start------------->8---
> running configure fragment for sysdeps/unix/sysv/linux/powerpc
> checking whether powerpc64le-linux-gnu-gcc -g -O2 -mlong-double-128 uses IBM extended format... yes
> running configure fragment for sysdeps/unix/sysv/linux
> checking installed Linux kernel header files... 3.2.0 or later
> configure: WARNING: minimum kernel version reset to 3.10.0
> checking for kernel header at least 3.10.0... ok
> running configure fragment for sysdeps/gnu
> running configure fragment for sysdeps/powerpc/powerpc64/le
> checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type... no
> checking if the target machine is at least POWER8... yes
> configure: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
> --8<---------------cut here---------------end--------------->8---
> 
> See ‘config.log’ excerpt below.  Do you happen to have an additional
> change needed?
> 
> Thanks,
> Ludo’.
> 
> --8<---------------cut here---------------start------------->8---
> configure:6698: result: running configure fragment for sysdeps/powerpc/powerpc64/le
> configure:5: checking if powerpc64le-linux-gnu-gcc supports binary128 floating point type
> configure:31: powerpc64le-linux-gnu-gcc -c -g -O2 -Werror -mfloat128  conftest.c >&5
> powerpc64le-linux-gnu-gcc: error: unrecognized command line option '-mfloat128'
> configure:31: $? = 1
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "GNU C Library"
> | #define PACKAGE_TARNAME "glibc"
> | #define PACKAGE_VERSION "(see version.h)"
> | #define PACKAGE_STRING "GNU C Library (see version.h)"
> | #define PACKAGE_BUGREPORT "https://sourceware.org/bugzilla/"
> | #define PACKAGE_URL "http://www.gnu.org/software/glibc/"
> | #define PKGVERSION "(GNU libc) "
> | #define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>"
> | #define HAVE_TUNABLES 1
> | #define HAVE_CC_NO_STACK_PROTECTOR 1
> | #define STACK_PROTECTOR_LEVEL 0
> | #define USE_MULTIARCH 1
> | #define HAVE_ASM_SET_DIRECTIVE 1
> | #define HAVE_SDATA_SECTION 1
> | #define NO_CTORS_DTORS_SECTIONS 1
> | #define HAVE_Z_COMBRELOC 1
> | #define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
> 
> | #define HAVE_EHDR_START 1
> | #define HAVE_BUILTIN_TRAP 1
> | #define HAVE_ELFV2_ABI 1
> | #define __LINUX_KERNEL_VERSION (3 * 65536 + 10 * 256 + 0)
> | #define __ABI_TAG_VERSION 2,6,32
> | #define HAVE_INLINED_SYSCALLS 1
> | /* end confdefs.h.  */
> |
> | __float128 a, b, c, d, e;
> | int i;
> |
> | __float128
> | foobar (__float128 x)
> | {
> |   a = __builtin_nansq ("0");
> |   b = __builtin_huge_valq ();
> |   c = __builtin_infq ();
> |   d = __builtin_fabsq (x);
> |   e = __builtin_nanq ("0");
> |   i = __builtin_signbit (x);
> |   return __builtin_copysignq (x, x);
> | }
> |
> configure:39: result: no
> configure:47: checking if the target machine is at least POWER8
> configure:61: powerpc64le-linux-gnu-gcc -c -g -O2   conftest.c >&5
> configure:61: $? = 0
> configure:68: result: yes
> configure:75: error: ***  binary128 floating point type (GCC >= 6.2) is required on powerpc64le.
> --8<---------------cut here---------------end--------------->8---
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-03-13  7:37 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-27 18:29 Patch adding POWER9 cross compile support Tobias Platen
2019-02-27 21:24 ` Jonathan Brielmaier
2019-03-01  6:04   ` Tobias Platen
2019-03-06 13:54 ` Ludovic Courtès
2019-03-06 17:56   ` Tobias Platen
2019-03-10 17:27     ` Ludovic Courtès
2019-03-10 20:20       ` Tobias Platen
2019-03-11  7:52         ` Efraim Flashner
2019-03-12 14:10           ` Ludovic Courtès
2019-03-12 14:10           ` Ludovic Courtès
2019-03-13  7:28             ` Tobias Platen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).