[PATCH v5 7/7] math: Remove the SVID error handling wrapper from sqrt
Adhemerval Zanella
adhemerval.zanella@linaro.org
Fri Oct 31 16:08:56 GMT 2025
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.
---
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 bd22e051d0d..d6ad34f4593 100644
--- a/math/Versions
+++ b/math/Versions
@@ -703,6 +703,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 <libm-alias-float.h>
-#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 <sysdeps/ieee754/flt-32/e_sqrtf.c>
#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 <machine/asm.h>
-#include <libm-alias-finite.h>
-
-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 <math.h>
-#include <math_private.h>
+#undef sqrtf
#include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
#include <math-use-builtins.h>
+#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 <e_acosf.c>
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 4e360415b37..20da8115849 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1334,6 +1334,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f 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
- <https://www.gnu.org/licenses/>. */
-
-#include <math.h>
-#include <math_private.h>
-#include <fenv_libc.h>
-#include <libm-alias-finite.h>
-#include <math-use-builtins.h>
-
-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 aa2b8f9002c..17a71db73de 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1300,6 +1300,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 3d5b1996ec2..ec439daa5de 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1459,6 +1459,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index ff6a6a0e01a..24e1adc4b5d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index ff6a6a0e01a..24e1adc4b5d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 29d96f29424..b8e75bce1e3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 91766882a15..6d0400dcc10 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1341,6 +1341,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index ff6a6a0e01a..24e1adc4b5d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index d4b0a5fe83c..fcb3e6f3698 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -996,6 +996,7 @@ GLIBC_2.43 lgammaf F
GLIBC_2.43 lgammaf_r F
GLIBC_2.43 remainder F
GLIBC_2.43 remainderf F
+GLIBC_2.43 sqrtf F
GLIBC_2.43 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index b060967b02c..06c935c595a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index b060967b02c..06c935c595a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 36ebb4f829a..ac514efdcd4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index f779f2c2d01..713065cd653 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1300,6 +1300,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 499ca93d88c..64af4592830 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -1112,6 +1112,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 82aa4dd38aa..b8e526f0c16 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -1110,6 +1110,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 9a8b5719dff..a7a949ec86f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -1105,6 +1105,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 96f19717acc..5f6dd0a606b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1489,6 +1489,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 1cf1fbb5ccf..9c3a54a6dbc 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1403,6 +1403,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index fbe1a6b03d8..0c6fd6ef658 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1403,6 +1403,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 9b135d127cf..24c81ef25a1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 9b135d127cf..24c81ef25a1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -965,6 +965,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 0b41f13ad32..064ca0f7c6e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1410,6 +1410,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 6bf8d75d9f3..a5717fe5461 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1300,6 +1300,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 324d99e8866..d3dff0e42bb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1333,6 +1333,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 41e7e5ac1b1..387d97597ec 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1333,6 +1333,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 tgammaf F
GLIBC_2.43 y0f F
GLIBC_2.43 y1f F
--
2.43.0
More information about the Libc-alpha
mailing list