[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