[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