From 0dfc849eff98812228f3d52af6cb4ad91247711d Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 31 Oct 2025 13:08:56 -0300 Subject: [PATCH] math: Remove the SVID error handling wrapper from sqrt i386 and m68k architectures should use math-use-builtins-sqrt.h rather than relying on architecture-specific or inline assembly implementations. The PowerPC optimization for PPC 601/603 (30 years old) is removed. Tested on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Wilco Dijkstra --- include/math.h | 2 +- math/Versions | 1 + math/w_sqrtf_compat.c | 8 +- sysdeps/alpha/fpu/e_sqrtf.c | 2 +- sysdeps/i386/fpu/e_sqrtf.S | 13 -- sysdeps/i386/fpu/math-use-builtins-sqrt.h | 4 + sysdeps/ieee754/flt-32/e_sqrtf.c | 142 ++++++++++-------- sysdeps/ieee754/flt-32/w_sqrtf.c | 1 + sysdeps/m68k/fpu/math-use-builtins-sqrt.h | 4 + sysdeps/m68k/m680x0/fpu/e_sqrtf.c | 3 - sysdeps/mach/hurd/i386/libm.abilist | 1 + sysdeps/powerpc/fpu/e_sqrtf.c | 128 ---------------- sysdeps/unix/sysv/linux/aarch64/libm.abilist | 1 + sysdeps/unix/sysv/linux/alpha/libm.abilist | 1 + sysdeps/unix/sysv/linux/arm/be/libm.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/libm.abilist | 1 + sysdeps/unix/sysv/linux/hppa/libm.abilist | 1 + sysdeps/unix/sysv/linux/i386/libm.abilist | 1 + .../sysv/linux/m68k/coldfire/libm.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/libm.abilist | 1 + .../sysv/linux/microblaze/be/libm.abilist | 1 + .../sysv/linux/microblaze/le/libm.abilist | 1 + .../unix/sysv/linux/mips/mips32/libm.abilist | 1 + .../unix/sysv/linux/mips/mips64/libm.abilist | 1 + .../linux/powerpc/powerpc32/fpu/libm.abilist | 1 + .../powerpc/powerpc32/nofpu/libm.abilist | 1 + .../linux/powerpc/powerpc64/be/libm.abilist | 1 + .../linux/powerpc/powerpc64/le/libm.abilist | 1 + .../unix/sysv/linux/s390/s390-32/libm.abilist | 1 + .../unix/sysv/linux/s390/s390-64/libm.abilist | 1 + sysdeps/unix/sysv/linux/sh/be/libm.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/libm.abilist | 1 + .../sysv/linux/sparc/sparc32/libm.abilist | 1 + .../sysv/linux/sparc/sparc64/libm.abilist | 1 + .../unix/sysv/linux/x86_64/64/libm.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libm.abilist | 1 + 36 files changed, 123 insertions(+), 210 deletions(-) delete mode 100644 sysdeps/i386/fpu/e_sqrtf.S create mode 100644 sysdeps/i386/fpu/math-use-builtins-sqrt.h create mode 100644 sysdeps/ieee754/flt-32/w_sqrtf.c create mode 100644 sysdeps/m68k/fpu/math-use-builtins-sqrt.h delete mode 100644 sysdeps/m68k/m680x0/fpu/e_sqrtf.c delete mode 100644 sysdeps/powerpc/fpu/e_sqrtf.c diff --git a/include/math.h b/include/math.h index 9ba4708801e..12362688041 100644 --- a/include/math.h +++ b/include/math.h @@ -164,7 +164,7 @@ fabsf128 (_Float128 x) # define MATH_REDIRECT_UNARY_ARGS(TYPE) TYPE # define MATH_REDIRECT_BINARY_ARGS(TYPE) TYPE, TYPE # define MATH_REDIRECT_TERNARY_ARGS(TYPE) TYPE, TYPE, TYPE -MATH_REDIRECT (sqrt, "__ieee754_", MATH_REDIRECT_UNARY_ARGS) +MATH_REDIRECT (sqrt, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (ceil, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (floor, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (roundeven, "__", MATH_REDIRECT_UNARY_ARGS) diff --git a/math/Versions b/math/Versions index f81ff75a00d..272f3f3a74a 100644 --- a/math/Versions +++ b/math/Versions @@ -700,6 +700,7 @@ libm { remainder; remainderf; sinhf; + sqrtf; y0f; y1f; ynf; diff --git a/math/w_sqrtf_compat.c b/math/w_sqrtf_compat.c index 7c89b458aae..5e893d1cac1 100644 --- a/math/w_sqrtf_compat.c +++ b/math/w_sqrtf_compat.c @@ -22,15 +22,15 @@ #include -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43) /* wrapper sqrtf */ float -__sqrtf (float x) +__sqrtf_svid (float x) { if (__builtin_expect (isless (x, 0.0f), 0) && _LIB_VERSION != _IEEE_) return __kernel_standard_f (x, x, 126); /* sqrt(negative) */ - return __ieee754_sqrtf (x); + return __sqrtf (x); } -libm_alias_float (__sqrt, sqrt) +compat_symbol (libm, __sqrtf_svid, sqrtf, GLIBC_2_0); #endif diff --git a/sysdeps/alpha/fpu/e_sqrtf.c b/sysdeps/alpha/fpu/e_sqrtf.c index 38c41db5371..fbe9bb32659 100644 --- a/sysdeps/alpha/fpu/e_sqrtf.c +++ b/sysdeps/alpha/fpu/e_sqrtf.c @@ -3,6 +3,6 @@ #include #if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_31) -strong_alias (__ieee754_sqrtf, __sqrtf_finite_2_18) +strong_alias (__sqrtf, __sqrtf_finite_2_18) compat_symbol (libm, __sqrtf_finite_2_18, __sqrtf_finite, GLIBC_2_18); #endif diff --git a/sysdeps/i386/fpu/e_sqrtf.S b/sysdeps/i386/fpu/e_sqrtf.S deleted file mode 100644 index bf609b7bea6..00000000000 --- a/sysdeps/i386/fpu/e_sqrtf.S +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Public domain. - */ - -#include -#include - -ENTRY(__ieee754_sqrtf) - flds 4(%esp) - fsqrt - ret -END (__ieee754_sqrtf) -libm_alias_finite (__ieee754_sqrtf, __sqrtf) diff --git a/sysdeps/i386/fpu/math-use-builtins-sqrt.h b/sysdeps/i386/fpu/math-use-builtins-sqrt.h new file mode 100644 index 00000000000..e94c915ba66 --- /dev/null +++ b/sysdeps/i386/fpu/math-use-builtins-sqrt.h @@ -0,0 +1,4 @@ +#define USE_SQRT_BUILTIN 1 +#define USE_SQRTF_BUILTIN 1 +#define USE_SQRTL_BUILTIN 0 +#define USE_SQRTF128_BUILTIN 0 diff --git a/sysdeps/ieee754/flt-32/e_sqrtf.c b/sysdeps/ieee754/flt-32/e_sqrtf.c index 0e29375786c..fe68d0bdaee 100644 --- a/sysdeps/ieee754/flt-32/e_sqrtf.c +++ b/sysdeps/ieee754/flt-32/e_sqrtf.c @@ -12,81 +12,103 @@ * ==================================================== */ +/* The internal alias to avoid PLT calls interfere with the default + symbol alias for !LIBM_SVID_COMPAT. */ +#define sqrtf __redirect_sqrtf #include -#include +#undef sqrtf #include +#include +#include #include +#include "math_config.h" float -__ieee754_sqrtf(float x) +__sqrtf (float x) { #if USE_SQRTF_BUILTIN - return __builtin_sqrtf (x); + if (__glibc_unlikely (isless (x, 0.0f))) + return __math_invalidf (x); + return __builtin_sqrtf (x); #else - /* Use generic implementation. */ - float z; - int32_t sign = (int)0x80000000; - int32_t ix,s,q,m,t,i; - uint32_t r; + /* Use generic implementation. */ + float z; + int32_t sign = (int) 0x80000000; + int32_t ix, s, q, m, t, i; + uint32_t r; - GET_FLOAT_WORD(ix,x); + ix = asuint (x); - /* take care of Inf and NaN */ - if((ix&0x7f800000)==0x7f800000) { - return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf - sqrt(-inf)=sNaN */ - } - /* take care of zero */ - if(ix<=0) { - if((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */ - else if(ix<0) - return (x-x)/(x-x); /* sqrt(-ve) = sNaN */ - } - /* normalize x */ - m = (ix>>23); - if(m==0) { /* subnormal x */ - for(i=0;(ix&0x00800000)==0;i++) ix<<=1; - m -= i-1; - } - m -= 127; /* unbias exponent */ - ix = (ix&0x007fffff)|0x00800000; - if(m&1) /* odd m, double x to make it even */ - ix += ix; - m >>= 1; /* m = [m/2] */ + /* take care of Inf and NaN */ + if ((ix & 0x7f800000) == 0x7f800000) + { + if (ix == 0xff800000) + return __math_invalidf (0.0f); + return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf + sqrt(-inf)=sNaN */ + } + /* take care of zero */ + if (ix <= 0) + { + if ((ix & (~sign)) == 0) + return x; /* sqrt(+-0) = +-0 */ + else if (ix < 0) + return __math_invalidf (0.0f); /* sqrt(-ve) = sNaN */ + } + /* normalize x */ + m = (ix >> 23); + if (m == 0) + { /* subnormal x */ + for (i = 0; (ix & 0x00800000) == 0; i++) + ix <<= 1; + m -= i - 1; + } + m -= 127; /* unbias exponent */ + ix = (ix & 0x007fffff) | 0x00800000; + if (m & 1) /* odd m, double x to make it even */ + ix += ix; + m >>= 1; /* m = [m/2] */ - /* generate sqrt(x) bit by bit */ - ix += ix; - q = s = 0; /* q = sqrt(x) */ - r = 0x01000000; /* r = moving bit from right to left */ + /* generate sqrt(x) bit by bit */ + ix += ix; + q = s = 0; /* q = sqrt(x) */ + r = 0x01000000; /* r = moving bit from right to left */ - while(r!=0) { - t = s+r; - if(t<=ix) { - s = t+r; - ix -= t; - q += r; - } - ix += ix; - r>>=1; + while (r != 0) + { + t = s + r; + if (t <= ix) + { + s = t + r; + ix -= t; + q += r; } + ix += ix; + r >>= 1; + } - /* use floating add to find out rounding direction */ - if(ix!=0) { - z = 0x1p0f - 0x1.4484cp-100f; /* trigger inexact flag. */ - if (z >= 0x1p0f) { /* rounding to nearest or upward */ - z = 0x1p0f + 0x1.4484cp-100f; - if (z > 0x1p0f) /* rounding upward */ - q += 2; - else - q += (q&1); - } + /* use floating add to find out rounding direction */ + if (ix != 0) + { + z = 0x1p0 - 0x1.4484cp-100; /* trigger inexact flag. */ + if (z >= 0x1p0) + { + z = 0x1p0 + 0x1.4484cp-100; + if (z > 0x1p0) + q += 2; + else + q += (q & 1); } - ix = (q>>1)+0x3f000000; - ix += (m <<23); - SET_FLOAT_WORD(z,ix); - return z; + } + ix = (q >> 1) + 0x3f000000; + ix += (m << 23); + return asfloat (ix); #endif /* ! USE_SQRTF_BUILTIN */ } -#ifndef __ieee754_sqrtf -libm_alias_finite (__ieee754_sqrtf, __sqrtf) +libm_alias_finite (__sqrtf, __sqrtf) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __sqrtf, sqrtf, GLIBC_2_43); +libm_alias_float_other (__sqrt, sqrt) +#else +libm_alias_float (__sqrt, sqrt) #endif diff --git a/sysdeps/ieee754/flt-32/w_sqrtf.c b/sysdeps/ieee754/flt-32/w_sqrtf.c new file mode 100644 index 00000000000..db3355f5988 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_sqrtf.c @@ -0,0 +1 @@ +/* Not needed */ diff --git a/sysdeps/m68k/fpu/math-use-builtins-sqrt.h b/sysdeps/m68k/fpu/math-use-builtins-sqrt.h new file mode 100644 index 00000000000..e94c915ba66 --- /dev/null +++ b/sysdeps/m68k/fpu/math-use-builtins-sqrt.h @@ -0,0 +1,4 @@ +#define USE_SQRT_BUILTIN 1 +#define USE_SQRTF_BUILTIN 1 +#define USE_SQRTL_BUILTIN 0 +#define USE_SQRTF128_BUILTIN 0 diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrtf.c b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c deleted file mode 100644 index 8681e29fae3..00000000000 --- a/sysdeps/m68k/m680x0/fpu/e_sqrtf.c +++ /dev/null @@ -1,3 +0,0 @@ -#define FUNC __ieee754_sqrtf -#define FUNC_FINITE __sqrtf -#include diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index b9274b47c46..275b733d02d 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1331,6 +1331,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c deleted file mode 100644 index 7c339044495..00000000000 --- a/sysdeps/powerpc/fpu/e_sqrtf.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Single-precision floating point square root. - Copyright (C) 1997-2025 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 - . */ - -#include -#include -#include -#include -#include - -float -__ieee754_sqrtf (float x) -{ -#if USE_SQRTF_BUILTIN - return __builtin_sqrtf (x); -#else -/* The method is based on a description in - Computation of elementary functions on the IBM RISC System/6000 processor, - P. W. Markstein, IBM J. Res. Develop, 34(1) 1990. - Basically, it consists of two interleaved Newton-Raphson approximations, - one to find the actual square root, and one to find its reciprocal - without the expense of a division operation. The tricky bit here - is the use of the POWER/PowerPC multiply-add operation to get the - required accuracy with high speed. - - The argument reduction works by a combination of table lookup to - obtain the initial guesses, and some careful modification of the - generated guesses (which mostly runs on the integer unit, while the - Newton-Raphson is running on the FPU). */ - - extern const float __t_sqrt[1024]; - - if (x > 0) - { - if (x != INFINITY) - { - /* Variables named starting with 's' exist in the - argument-reduced space, so that 2 > sx >= 0.5, - 1.41... > sg >= 0.70.., 0.70.. >= sy > 0.35... . - Variables named ending with 'i' are integer versions of - floating-point values. */ - float sx; /* The value of which we're trying to find the square - root. */ - float sg, g; /* Guess of the square root of x. */ - float sd, d; /* Difference between the square of the guess and x. */ - float sy; /* Estimate of 1/2g (overestimated by 1ulp). */ - float sy2; /* 2*sy */ - float e; /* Difference between y*g and 1/2 (note that e==se). */ - float shx; /* == sx * fsg */ - float fsg; /* sg*fsg == g. */ - fenv_t fe; /* Saved floating-point environment (stores rounding - mode and whether the inexact exception is - enabled). */ - uint32_t xi, sxi, fsgi; - const float *t_sqrt; - - GET_FLOAT_WORD (xi, x); - fe = fegetenv_register (); - relax_fenv_state (); - sxi = (xi & 0x3fffffff) | 0x3f000000; - SET_FLOAT_WORD (sx, sxi); - t_sqrt = __t_sqrt + (xi >> (23 - 8 - 1) & 0x3fe); - sg = t_sqrt[0]; - sy = t_sqrt[1]; - - /* Here we have three Newton-Raphson iterations each of a - division and a square root and the remainder of the - argument reduction, all interleaved. */ - sd = -__builtin_fmaf (sg, sg, -sx); - fsgi = (xi + 0x40000000) >> 1 & 0x7f800000; - sy2 = sy + sy; - sg = __builtin_fmaf (sy, sd, sg); /* 16-bit approximation to - sqrt(sx). */ - e = -__builtin_fmaf (sy, sg, -0x1.0000020365653p-1); - SET_FLOAT_WORD (fsg, fsgi); - sd = -__builtin_fmaf (sg, sg, -sx); - sy = __builtin_fmaf (e, sy2, sy); - if ((xi & 0x7f800000) == 0) - goto denorm; - shx = sx * fsg; - sg = __builtin_fmaf (sy, sd, sg); /* 32-bit approximation to - sqrt(sx), but perhaps - rounded incorrectly. */ - sy2 = sy + sy; - g = sg * fsg; - e = -__builtin_fmaf (sy, sg, -0x1.0000020365653p-1); - d = -__builtin_fmaf (g, sg, -shx); - sy = __builtin_fmaf (e, sy2, sy); - fesetenv_register (fe); - return __builtin_fmaf (sy, d, g); - denorm: - /* For denormalised numbers, we normalise, calculate the - square root, and return an adjusted result. */ - fesetenv_register (fe); - return __ieee754_sqrtf (x * 0x1p+48) * 0x1p-24; - } - } - else if (x < 0) - { - /* For some reason, some PowerPC32 processors don't implement - FE_INVALID_SQRT. */ -# ifdef FE_INVALID_SQRT - feraiseexcept (FE_INVALID_SQRT); - - fenv_union_t u = { .fenv = fegetenv_register () }; - if ((u.l & FE_INVALID) == 0) -# endif - feraiseexcept (FE_INVALID); - x = NAN; - } - return f_washf (x); -#endif /* USE_SQRTF_BUILTIN */ -} -libm_alias_finite (__ieee754_sqrtf, __sqrtf) diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 79a327aae29..d374f579238 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1297,6 +1297,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 63bba07bbf0..dcc203d56d0 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1456,6 +1456,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index d62946108a3..0a31a7f35a3 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index d62946108a3..0a31a7f35a3 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index e8083d0af58..5b1ad5c4846 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 67a4cc555ef..da5e21bd0ac 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1338,6 +1338,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index d62946108a3..0a31a7f35a3 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 5875a5c80cd..968c41a8bdb 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -994,6 +994,7 @@ GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index 624eff1cafd..c13265d5797 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index 624eff1cafd..c13265d5797 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 8502e66e3e7..b2bbf3438ca 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index fc20a8e42ea..ce012e3a240 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1297,6 +1297,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index f13ccd8a699..1815b304615 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1109,6 +1109,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 254e25106a5..83c85cc5b46 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1108,6 +1108,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index 8a8992d3243..fff8c29909c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -1102,6 +1102,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index cb469001876..89fb06eace9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1486,6 +1486,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 721e0c4bc51..7f5d3429872 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1400,6 +1400,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index fedb41284a4..7b973445827 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1400,6 +1400,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index 312075b479c..9cea7f87a5e 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index 312075b479c..9cea7f87a5e 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -962,6 +962,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 192349cbf34..edd6cce2264 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1407,6 +1407,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 03f14432d61..201004c62cb 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1297,6 +1297,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 8e08ac5e182..4d9e27cb15a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1330,6 +1330,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index be5cd7c8a15..a411d376eae 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1330,6 +1330,7 @@ GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F +GLIBC_2.43 sqrtf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F -- 2.47.3