Message ID | 20160124.211545.53854406887189856.davem@davemloft.net |
---|---|
State | New |
Headers | show |
David Miller <davem@davemloft.net> writes: > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist > index d50ef4a..6b31a54 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist > @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F > GLIBC_2.15 __sinhl_finite F > GLIBC_2.15 __sqrt_finite F > GLIBC_2.15 __sqrtf_finite F > +GLIBC_2.15 __sqrtl_finite F > GLIBC_2.15 __y0_finite F > GLIBC_2.15 __y0f_finite F > GLIBC_2.15 __y0l_finite F You cannot change the ABI after the release. Andreas.
From: Andreas Schwab <schwab@suse.de> Date: Mon, 25 Jan 2016 11:02:27 +0100 > David Miller <davem@davemloft.net> writes: > >> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >> index d50ef4a..6b31a54 100644 >> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >> @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F >> GLIBC_2.15 __sinhl_finite F >> GLIBC_2.15 __sqrt_finite F >> GLIBC_2.15 __sqrtf_finite F >> +GLIBC_2.15 __sqrtl_finite F >> GLIBC_2.15 __y0_finite F >> GLIBC_2.15 __y0f_finite F >> GLIBC_2.15 __y0l_finite F > > You cannot change the ABI after the release. So do I have to add it to the current GLIBC version?
On 25-01-2016 15:53, David Miller wrote: > From: Andreas Schwab <schwab@suse.de> > Date: Mon, 25 Jan 2016 11:02:27 +0100 > >> David Miller <davem@davemloft.net> writes: >> >>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> index d50ef4a..6b31a54 100644 >>> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F >>> GLIBC_2.15 __sinhl_finite F >>> GLIBC_2.15 __sqrt_finite F >>> GLIBC_2.15 __sqrtf_finite F >>> +GLIBC_2.15 __sqrtl_finite F >>> GLIBC_2.15 __y0_finite F >>> GLIBC_2.15 __y0f_finite F >>> GLIBC_2.15 __y0l_finite F >> >> You cannot change the ABI after the release. > > So do I have to add it to the current GLIBC version? > Yes.
From: David Miller <davem@davemloft.net> Date: Mon, 25 Jan 2016 09:53:59 -0800 (PST) > From: Andreas Schwab <schwab@suse.de> > Date: Mon, 25 Jan 2016 11:02:27 +0100 > >> David Miller <davem@davemloft.net> writes: >> >>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> index d50ef4a..6b31a54 100644 >>> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>> @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F >>> GLIBC_2.15 __sinhl_finite F >>> GLIBC_2.15 __sqrt_finite F >>> GLIBC_2.15 __sqrtf_finite F >>> +GLIBC_2.15 __sqrtl_finite F >>> GLIBC_2.15 __y0_finite F >>> GLIBC_2.15 __y0f_finite F >>> GLIBC_2.15 __y0l_finite F >> >> You cannot change the ABI after the release. > > So do I have to add it to the current GLIBC version? And the reason I am asking this is because this symbol is missing from previous GLIBC versions and just as I noticed when running the testsuite, probably prevents successful linking of some applications. What if I want to add this symbol in a backport?
From: Adhemerval Zanella <adhemerval.zanella@linaro.org> Date: Mon, 25 Jan 2016 16:00:29 -0200 > > > On 25-01-2016 15:53, David Miller wrote: >> From: Andreas Schwab <schwab@suse.de> >> Date: Mon, 25 Jan 2016 11:02:27 +0100 >> >>> David Miller <davem@davemloft.net> writes: >>> >>>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>>> index d50ef4a..6b31a54 100644 >>>> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist >>>> @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F >>>> GLIBC_2.15 __sinhl_finite F >>>> GLIBC_2.15 __sqrt_finite F >>>> GLIBC_2.15 __sqrtf_finite F >>>> +GLIBC_2.15 __sqrtl_finite F >>>> GLIBC_2.15 __y0_finite F >>>> GLIBC_2.15 __y0f_finite F >>>> GLIBC_2.15 __y0l_finite F >>> >>> You cannot change the ABI after the release. >> >> So do I have to add it to the current GLIBC version? >> > > Yes. What about backports? This symbol is missing in releases back to 2.15 and I'd like to add it there too. It prevents applications from linking.
On Mon, 25 Jan 2016, David Miller wrote: > >> You cannot change the ABI after the release. > > > > So do I have to add it to the current GLIBC version? > > And the reason I am asking this is because this symbol is missing from previous > GLIBC versions and just as I noticed when running the testsuite, probably > prevents successful linking of some applications. > > What if I want to add this symbol in a backport? Then your backport needs to add the GLIBC_2.23 symbol version (for older versions, that includes updating Versions.def, as new versions were less automatic than they are now). That works fine, from experience.
From: Joseph Myers <joseph@codesourcery.com> Date: Mon, 25 Jan 2016 18:04:34 +0000 > On Mon, 25 Jan 2016, David Miller wrote: > >> >> You cannot change the ABI after the release. >> > >> > So do I have to add it to the current GLIBC version? >> >> And the reason I am asking this is because this symbol is missing from previous >> GLIBC versions and just as I noticed when running the testsuite, probably >> prevents successful linking of some applications. >> >> What if I want to add this symbol in a backport? > > Then your backport needs to add the GLIBC_2.23 symbol version (for older > versions, that includes updating Versions.def, as new versions were less > automatic than they are now). That works fine, from experience. Aha, great, that's exactly what I wanted to know. Thanks!
* Joseph Myers: > On Mon, 25 Jan 2016, David Miller wrote: > >> >> You cannot change the ABI after the release. >> > >> > So do I have to add it to the current GLIBC version? >> >> And the reason I am asking this is because this symbol is missing >> from previous >> GLIBC versions and just as I noticed when running the testsuite, probably >> prevents successful linking of some applications. >> >> What if I want to add this symbol in a backport? > > Then your backport needs to add the GLIBC_2.23 symbol version (for older > versions, that includes updating Versions.def, as new versions were less > automatic than they are now). That works fine, from experience. It breaks the RPM dependency generator, unless you add *all* GLIBC_2.23 symbols. Probably not relevant to sparc, but for other architectures, it's something to keep in mind. I'm trying to convince Carlos that we need to fix the dependency generator, but I'm not quite there yet. :)
On Mon, 25 Jan 2016, Florian Weimer wrote: > * Joseph Myers: > > > On Mon, 25 Jan 2016, David Miller wrote: > > > >> >> You cannot change the ABI after the release. > >> > > >> > So do I have to add it to the current GLIBC version? > >> > >> And the reason I am asking this is because this symbol is missing > >> from previous > >> GLIBC versions and just as I noticed when running the testsuite, probably > >> prevents successful linking of some applications. > >> > >> What if I want to add this symbol in a backport? > > > > Then your backport needs to add the GLIBC_2.23 symbol version (for older > > versions, that includes updating Versions.def, as new versions were less > > automatic than they are now). That works fine, from experience. > > It breaks the RPM dependency generator, unless you add *all* > GLIBC_2.23 symbols. Probably not relevant to sparc, but for other > architectures, it's something to keep in mind. When I say it works, I mean (a) the glibc with the backport builds OK and passes its tests, and (b) binaries linked with that glibc that don't use the new symbols work fine with glibc of the same version without the backport, while binaries linked with it that do use the new symbols work fine with the glibc version (2.23 in this case) that introduced them officially. I don't think such a backport introducing new symbols should go on any official glibc release branch, however.
Joseph Myers <joseph@codesourcery.com> writes: > When I say it works, I mean (a) the glibc with the backport builds OK and > passes its tests, and (b) binaries linked with that glibc that don't use > the new symbols work fine with glibc of the same version without the > backport, while binaries linked with it that do use the new symbols work > fine with the glibc version (2.23 in this case) that introduced them > officially. But binaries linked against the real 2.23 version will eventually fail *at runtime* (not at load time) if they use any other new 2.23 symbol. Andreas.
diff --git a/ChangeLog b/ChangeLog index 50f2880..6c21184 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2016-01-24 David S. Miller <davem@davemloft.net> + * sysdeps/sparc/sparc32/fpu/e_sqrtl.c: New file. + * sysdeps/sparc/sparc32/soft-fp/q_sqrt.c (__ieee754_sqrtl): Remove alias. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Add __sqrtl_finite. + * sysdeps/sparc/fpu/libm-test-ulps: Update. 2016-01-25 Maciej W. Rozycki <macro@imgtec.com> diff --git a/sysdeps/sparc/sparc32/fpu/e_sqrtl.c b/sysdeps/sparc/sparc32/fpu/e_sqrtl.c index 3c3acfe..46ad861 100644 --- a/sysdeps/sparc/sparc32/fpu/e_sqrtl.c +++ b/sysdeps/sparc/sparc32/fpu/e_sqrtl.c @@ -1 +1,28 @@ -/* __ieee754_sqrtl is defined in q_sqrt.c. */ +/* Long double square root, sparc32 version. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <math.h> + +extern long double _Q_sqrt(const long double a); + +long double +__ieee754_sqrtl (long double x) +{ + return _Q_sqrt (x); +} +strong_alias (__ieee754_sqrtl, __sqrtl_finite) diff --git a/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c b/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c index 0eb43a2..999398e 100644 --- a/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c +++ b/sysdeps/sparc/sparc32/soft-fp/q_sqrt.c @@ -35,4 +35,3 @@ long double _Q_sqrt(const long double a) FP_HANDLE_EXCEPTIONS; return c; } -strong_alias (_Q_sqrt, __ieee754_sqrtl); diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index d50ef4a..6b31a54 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -376,6 +376,7 @@ GLIBC_2.15 __sinhf_finite F GLIBC_2.15 __sinhl_finite F GLIBC_2.15 __sqrt_finite F GLIBC_2.15 __sqrtf_finite F +GLIBC_2.15 __sqrtl_finite F GLIBC_2.15 __y0_finite F GLIBC_2.15 __y0f_finite F GLIBC_2.15 __y0l_finite F