This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: PowerPC's math_ldbl.h
- From: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Fri, 15 Mar 2013 23:52:37 -0300
- Subject: Re: PowerPC's math_ldbl.h
- References: <87ehg9akpn.fsf@kepler.schwinge.homeip.net> <512626E1.4090801@linux.vnet.ibm.com> <5126DF54.4020806@linux.vnet.ibm.com> <Pine.LNX.4.64.1302221545410.6146@digraph.polyomino.org.uk> <5127C2DD.4090406@linux.vnet.ibm.com> <Pine.LNX.4.64.1302222119210.10719@digraph.polyomino.org.uk> <512835E4.70108@linux.vnet.ibm.com> <Pine.LNX.4.64.1303160028510.6194@digraph.polyomino.org.uk>
On 03/15/2013 09:34 PM, Joseph S. Myers wrote:
> On Sat, 23 Feb 2013, Adhemerval Zanella wrote:
>
>> Also, the big change for fpu related code selection is
>> sysdeps/powerpc/fpu now up to sysdeps/ieee754/ldlb-128ibm and
>> sysdeps/ieee754/ldlb-opt (which also made sense). This currently does
>> not change anything, because sysdeps/powerpc/fpu does not have any
>> specific implementation for long double.
> In a powerpc64 build, I see ABI test failures because sqrtl, version
> GLIBC_2.3 (the compat alias to sqrt) is no longer exported from libm.
> sysdeps/powerpc/fpu/w_sqrt.c is used, where I think
> sysdeps/ieee754/ldbl-opt/w_sqrt.c would have been used before to provide
> that compat symbol.
>
> Could you please fix this ABI failure if it was indeed caused by your
> change and, if so, review the sysdeps orderings again to identify any
> other cases of files that are now being found from a different directory
> from before that your logic above may have missed?
>
> (Note: I haven't done tests before and after your commit to confirm it's
> responsible, but it certainly looks likely to be.)
>
I believe my patch in fact uncover an issue with sysdeps/powerpc/fpu/w_sqrt.c:
different from sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c it does *not* have:
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0);
#endif
Which is basically what sysdeps/ieee754/ldbl-opt/w_sqrt.c does. Also, I think there
is not need to neither sysdeps/powerpc/fpu/w_sqrt.c or
./sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c anymore: the latter was added to
inline the ISA 2.03 fsqrt instruction and math_private.h already has an inline version
that is used on math/w_sqrt.c.
I'll recheck it tomorrow, but I'm sure we can delete both sysdeps/powerpc/fpu/w_sqrt.c
and sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c and use the default math/w_sqrt.c
instead. And the fsqrt inline optimization will be include since it is defined at
math_private.h.
Thanks for spotting it, I usually just test build for power4+.