Mail archive
alpine-aports

Re: [alpine-aports] [PATCH] Add support for ppc64le

From: Timo Teras <timo.teras_at_iki.fi>
Date: Fri, 20 Jan 2017 15:42:16 +0200

On Fri, 20 Jan 2017 11:30:56 -0200
Breno Leitao <brenohl_at_br.ibm.com> wrote:

> Hi Timo,
>
> On 01/20/2017 10:35 AM, Timo Teras wrote:
> > On Fri, 20 Jan 2017 14:25:10 +0200
> > Timo Teras <timo.teras_at_iki.fi> wrote:
> >
> >> On Tue, 17 Jan 2017 14:30:31 -0200
> >> Breno Leitao <brenohl_at_br.ibm.com> wrote:
> >>
> >>> This is a patch that adds support for ppc64le platform.
> >>> Currently, musl fails to build with long double as 128-bits,
> >>> because POWER does not implement IEEE long double but IBM long
> >>> double which causes the following error:
> >>>
> >>> unsupported long double type musl
> >>>
> >>> This patch just turns "long double" into "double" for ppc64le.
> >>
> >> Should this be in gcc default flags instead? I suspect almost
> >> nothing will work with 128-bit double if c-library does not
> >> support it. And assume this affects ABI too?
>
> GCC on Powerpc has a native support for long double (128-bits float).
> The support is not using the traditional IEEE 754R, but a very
> specific format called "IBM extended double".
>
> This is transparent to most of the open source software. The only
> problem I see recently is related to musl that requires long double
> to be IEEE complaint.
>
> If we set the --with-long-double-64 as a default gcc option, we will
> kill *all* long double operations, i.e long double will be equal to
> double. I do not think that killing all the quad float operation is
> worth just to become IEEE 754R complaint.
>
> That is why I proposed to do this change only where it is required,
> and the only package to complain about it (long double not being
> IEEE) seems to be musl.
>
> POWER9 will add support for IEEE long double together with IBM
> extended double.

But if you compile musl different from rest of system, then printf and
all C-library provided function operating on a double will not work for
the caller, due to assuming different double types. I'm pretty sure
you'd have a broken system in this case.

The only case where it makes sense is that the software using 'double'
is not calling any libc functions. But this is rare case. If there's
such software they probably setup CFLAGS anyway properly for this with
-ffreestanding etc.

I think ultimately the thing is that musl does not (yet?) support
128-bit double on powerpc. You might want to ask on #musl or musl
mailing list about this.

But for the time being we should just enable gcc's
--with-long-double-64 and live with this limitation.

/Timo


---
Unsubscribe:  alpine-aports+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-aports+help_at_lists.alpinelinux.org
---
Received on Fri Jan 20 2017 - 15:42:16 GMT