[PATCH v4 18/21] math: Remove the SVID error handling wrapper from sqrt
Adhemerval Zanella
adhemerval.zanella@linaro.org
Wed Oct 8 13:55:18 GMT 2025
i386 and m68k architectures should use math-use-builtins-sqrt.h rather
than relying on architecture-specific or inline assembly implementations.
PowerPC utilizes an architecture-specific implementation that leverages
the FMA instruction on chips that lack fsqrt support. To enable generic
symbol and SVID handling, most of the implementation has been moved to
e_sqrtf_impl.h.
Tested on x86_64-linux-gnu and i686-linux-gnu.
---
include/math.h | 2 +-
math/Versions | 2 +-
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 | 86 +++++-------------
sysdeps/ieee754/flt-32/e_sqrtf_impl.h | 90 +++++++++++++++++++
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 +
.../powerpc/fpu/{e_sqrtf.c => e_sqrtf_impl.h} | 22 ++---
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 +
37 files changed, 156 insertions(+), 106 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/e_sqrtf_impl.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
rename sysdeps/powerpc/fpu/{e_sqrtf.c => e_sqrtf_impl.h} (90%)
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 681cf8471bb..82708f9c07d 100644
--- a/math/Versions
+++ b/math/Versions
@@ -689,6 +689,6 @@ libm {
GLIBC_2.43 {
# No SVID compatible error handling.
remainderf; remainder; log10f; lgammaf; lgammaf_r; acosf; asinf; acoshf;
- atan2f; atanhf; coshf; sinhf; tgammaf;
+ atan2f; atanhf; coshf; sinhf; tgammaf; sqrtf;
}
}
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 1c0245b7333..e76d299259a 100644
--- a/sysdeps/ieee754/flt-32/e_sqrtf.c
+++ b/sysdeps/ieee754/flt-32/e_sqrtf.c
@@ -12,81 +12,35 @@
* ====================================================
*/
+/* 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"
+#include <e_sqrtf_impl.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;
-
- GET_FLOAT_WORD(ix,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] */
-
- /* 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;
- }
-
- /* 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;
+ /* Use generic implementation. */
+ return sqrtf_impl (x);
#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/e_sqrtf_impl.h b/sysdeps/ieee754/flt-32/e_sqrtf_impl.h
new file mode 100644
index 00000000000..0c92a078057
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/e_sqrtf_impl.h
@@ -0,0 +1,90 @@
+/* e_sqrtf.c -- float version of e_sqrt.c.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+static __always_inline float
+sqrtf_impl (float x)
+{
+ float z;
+ int32_t sign = (int) 0x80000000;
+ int32_t ix, s, q, m, t, i;
+ uint32_t r;
+
+ GET_FLOAT_WORD (ix, x);
+
+ /* 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 */
+
+ 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 = 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;
+}
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 5fc732e34e3..86b6e1d7948 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1331,4 +1331,5 @@ 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
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf_impl.h
similarity index 90%
rename from sysdeps/powerpc/fpu/e_sqrtf.c
rename to sysdeps/powerpc/fpu/e_sqrtf_impl.h
index 7c339044495..6e0f51396cd 100644
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ b/sysdeps/powerpc/fpu/e_sqrtf_impl.h
@@ -16,18 +16,12 @@
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>
+#include "math_config.h"
-float
-__ieee754_sqrtf (float x)
+static inline float
+sqrtf_impl (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.
@@ -106,7 +100,7 @@ __ieee754_sqrtf (float x)
/* 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;
+ return sqrtf_impl (x * 0x1p+48) * 0x1p-24;
}
}
else if (x < 0)
@@ -115,14 +109,8 @@ __ieee754_sqrtf (float x)
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 __math_invalidf (x);
}
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 20ac69ad691..f786b8cc372 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1297,4 +1297,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 9cec18fb45b..f6fbb199f16 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1456,4 +1456,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 55f75969705..e7d82304b98 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 55f75969705..e7d82304b98 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 13a840b964a..a3630ee5c9e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index f395e70e5a7..01265bb6fa7 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1338,4 +1338,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 55f75969705..e7d82304b98 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index b7d60a66c96..493b4361b45 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -993,4 +993,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 80fe359bebf..8bd5f0d0c98 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 80fe359bebf..8bd5f0d0c98 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index dc884254400..75d74169919 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 11a0ba70086..c2b31aeba26 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1297,4 +1297,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index d4b23e444c2..5d3dc248025 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -1109,4 +1109,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index b74c06d4762..7a1e4600934 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -1108,4 +1108,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index f0851beb3f7..ac776a1ff3d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -1102,4 +1102,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index f7aae34e2aa..ccd6439781e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1486,4 +1486,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 64c9cf527c6..650c67ac2f9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1400,4 +1400,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index d9975e51a44..e2ca53e79d2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1400,4 +1400,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index ae963e3bbec..2b71d5dfa53 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index ae963e3bbec..2b71d5dfa53 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -962,4 +962,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 82864e9469c..04307c7fb39 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1407,4 +1407,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 4d95a9f1b2d..7091b841e3f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1297,4 +1297,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 7fbb92a3d77..52230beb1e8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1330,4 +1330,5 @@ 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
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 20bcb9b64b1..7a3c7e1e5f7 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1330,4 +1330,5 @@ 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
--
2.43.0
More information about the Libc-alpha
mailing list