[PATCH 07/25] math: Add feclearexcept internal alias
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Aug 25 16:38:26 GMT 2025
To avoid linknamespace issues on old standards. It is required
if the fallback fma implementation is used if/when it is also
used internally for other implementation.
---
include/fenv.h | 1 +
math/fclrexcpt.c | 1 +
sysdeps/aarch64/fpu/fclrexcpt.c | 4 +++-
sysdeps/alpha/fpu/fclrexcpt.c | 1 +
sysdeps/arc/fpu/fclrexcpt.c | 4 +++-
sysdeps/arm/fclrexcpt.c | 4 +++-
sysdeps/csky/fpu/fclrexcpt.c | 4 +++-
sysdeps/hppa/fpu/fclrexcpt.c | 4 +++-
sysdeps/i386/fpu/fclrexcpt.c | 1 +
sysdeps/loongarch/fpu/fclrexcpt.c | 4 +++-
sysdeps/m68k/fpu/fclrexcpt.c | 1 +
sysdeps/mips/fpu/fclrexcpt.c | 4 +++-
sysdeps/or1k/fpu/fclrexcpt.c | 4 +++-
sysdeps/powerpc/fpu/fclrexcpt.c | 1 +
sysdeps/powerpc/nofpu/fclrexcpt.c | 1 +
sysdeps/riscv/rvf/fclrexcpt.c | 4 +++-
sysdeps/s390/fpu/fclrexcpt.c | 4 +++-
sysdeps/sh/sh4/fpu/fclrexcpt.c | 4 +++-
sysdeps/sparc/fpu/fclrexcpt.c | 1 +
sysdeps/x86_64/fpu/fclrexcpt.c | 4 +++-
20 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/include/fenv.h b/include/fenv.h
index 0b32f80964..b03d816a7a 100644
--- a/include/fenv.h
+++ b/include/fenv.h
@@ -33,6 +33,7 @@ libm_hidden_proto (feupdateenv)
libm_hidden_proto (__feupdateenv)
libm_hidden_proto (fetestexcept)
libm_hidden_proto (feclearexcept)
+libm_hidden_proto (__feclearexcept)
/* Rounding mode context. This allows functions to set/restore rounding mode
only when the desired rounding mode is different from the current rounding
diff --git a/math/fclrexcpt.c b/math/fclrexcpt.c
index cd24c2536b..7ab92f4801 100644
--- a/math/fclrexcpt.c
+++ b/math/fclrexcpt.c
@@ -25,6 +25,7 @@ __feclearexcept (int excepts)
/* This always fails unless nothing needs to be done. */
return (excepts != 0);
}
+libm_hidden_def (__feclearexcept)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feclearexcept, __old_feclearexcept)
compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
diff --git a/sysdeps/aarch64/fpu/fclrexcpt.c b/sysdeps/aarch64/fpu/fclrexcpt.c
index 841794a764..21eb731e29 100644
--- a/sysdeps/aarch64/fpu/fclrexcpt.c
+++ b/sysdeps/aarch64/fpu/fclrexcpt.c
@@ -20,7 +20,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fpu_fpsr_t fpsr;
fpu_fpsr_t fpsr_new;
@@ -35,4 +35,6 @@ feclearexcept (int excepts)
return 0;
}
+weak_alias (__feclearexcept, feclearexcept)
+libm_hidden_def (__feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/alpha/fpu/fclrexcpt.c b/sysdeps/alpha/fpu/fclrexcpt.c
index e3a8d4b48d..cef1ec95f6 100644
--- a/sysdeps/alpha/fpu/fclrexcpt.c
+++ b/sysdeps/alpha/fpu/fclrexcpt.c
@@ -35,6 +35,7 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
#include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
diff --git a/sysdeps/arc/fpu/fclrexcpt.c b/sysdeps/arc/fpu/fclrexcpt.c
index 96cd84e329..5fc49e607d 100644
--- a/sysdeps/arc/fpu/fclrexcpt.c
+++ b/sysdeps/arc/fpu/fclrexcpt.c
@@ -20,7 +20,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
unsigned int fpsr;
@@ -33,4 +33,6 @@ feclearexcept (int excepts)
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/arm/fclrexcpt.c b/sysdeps/arm/fclrexcpt.c
index 91c8cb67d3..3c565ab351 100644
--- a/sysdeps/arm/fclrexcpt.c
+++ b/sysdeps/arm/fclrexcpt.c
@@ -22,7 +22,7 @@
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fpu_control_t fpscr, new_fpscr;
@@ -40,4 +40,6 @@ feclearexcept (int excepts)
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/csky/fpu/fclrexcpt.c b/sysdeps/csky/fpu/fclrexcpt.c
index 47969f8dca..a4933f36a2 100644
--- a/sysdeps/csky/fpu/fclrexcpt.c
+++ b/sysdeps/csky/fpu/fclrexcpt.c
@@ -21,7 +21,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
int fpsr;
@@ -39,4 +39,6 @@ feclearexcept (int excepts)
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/hppa/fpu/fclrexcpt.c b/sysdeps/hppa/fpu/fclrexcpt.c
index 454aeee415..f71411826b 100644
--- a/sysdeps/hppa/fpu/fclrexcpt.c
+++ b/sysdeps/hppa/fpu/fclrexcpt.c
@@ -19,7 +19,7 @@
#include <fenv.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
union { unsigned long long l; unsigned int sw[2]; } s;
@@ -32,4 +32,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/i386/fpu/fclrexcpt.c b/sysdeps/i386/fpu/fclrexcpt.c
index f7a2ed2be1..713bc03669 100644
--- a/sysdeps/i386/fpu/fclrexcpt.c
+++ b/sysdeps/i386/fpu/fclrexcpt.c
@@ -56,6 +56,7 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
#include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
diff --git a/sysdeps/loongarch/fpu/fclrexcpt.c b/sysdeps/loongarch/fpu/fclrexcpt.c
index 8bd2cf2a93..9ee376f853 100644
--- a/sysdeps/loongarch/fpu/fclrexcpt.c
+++ b/sysdeps/loongarch/fpu/fclrexcpt.c
@@ -21,7 +21,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
int cw;
@@ -43,4 +43,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/m68k/fpu/fclrexcpt.c b/sysdeps/m68k/fpu/fclrexcpt.c
index 0df111f44e..0681d0934a 100644
--- a/sysdeps/m68k/fpu/fclrexcpt.c
+++ b/sysdeps/m68k/fpu/fclrexcpt.c
@@ -38,6 +38,7 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
#include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
diff --git a/sysdeps/mips/fpu/fclrexcpt.c b/sysdeps/mips/fpu/fclrexcpt.c
index a9ab82af3b..abfe059996 100644
--- a/sysdeps/mips/fpu/fclrexcpt.c
+++ b/sysdeps/mips/fpu/fclrexcpt.c
@@ -21,7 +21,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
int cw;
@@ -43,4 +43,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/or1k/fpu/fclrexcpt.c b/sysdeps/or1k/fpu/fclrexcpt.c
index 57aa9e5a60..f1f4f064b7 100644
--- a/sysdeps/or1k/fpu/fclrexcpt.c
+++ b/sysdeps/or1k/fpu/fclrexcpt.c
@@ -21,7 +21,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fpu_control_t cw;
fpu_control_t cw_new;
@@ -41,4 +41,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/powerpc/fpu/fclrexcpt.c b/sysdeps/powerpc/fpu/fclrexcpt.c
index d9bab95bb2..c02f5fad5d 100644
--- a/sysdeps/powerpc/fpu/fclrexcpt.c
+++ b/sysdeps/powerpc/fpu/fclrexcpt.c
@@ -38,6 +38,7 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
#include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
diff --git a/sysdeps/powerpc/nofpu/fclrexcpt.c b/sysdeps/powerpc/nofpu/fclrexcpt.c
index baea127e11..66be5ea00e 100644
--- a/sysdeps/powerpc/nofpu/fclrexcpt.c
+++ b/sysdeps/powerpc/nofpu/fclrexcpt.c
@@ -26,6 +26,7 @@ __feclearexcept (int x)
SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
return 0;
}
+libm_hidden_def (__feclearexcept)
#include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
diff --git a/sysdeps/riscv/rvf/fclrexcpt.c b/sysdeps/riscv/rvf/fclrexcpt.c
index 661aa799a9..29509a9f20 100644
--- a/sysdeps/riscv/rvf/fclrexcpt.c
+++ b/sysdeps/riscv/rvf/fclrexcpt.c
@@ -20,9 +20,11 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
asm volatile ("csrc fflags, %0" : : "r" (excepts));
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/s390/fpu/fclrexcpt.c b/sysdeps/s390/fpu/fclrexcpt.c
index b8e3e8f814..30623f6370 100644
--- a/sysdeps/s390/fpu/fclrexcpt.c
+++ b/sysdeps/s390/fpu/fclrexcpt.c
@@ -20,7 +20,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fexcept_t temp;
@@ -42,4 +42,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/sh/sh4/fpu/fclrexcpt.c b/sysdeps/sh/sh4/fpu/fclrexcpt.c
index 49361d9110..410a140463 100644
--- a/sysdeps/sh/sh4/fpu/fclrexcpt.c
+++ b/sysdeps/sh/sh4/fpu/fclrexcpt.c
@@ -20,7 +20,7 @@
#include <fpu_control.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fpu_control_t cw;
@@ -38,4 +38,6 @@ feclearexcept (int excepts)
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
diff --git a/sysdeps/sparc/fpu/fclrexcpt.c b/sysdeps/sparc/fpu/fclrexcpt.c
index c1f2cdfdf7..368c9eaa99 100644
--- a/sysdeps/sparc/fpu/fclrexcpt.c
+++ b/sysdeps/sparc/fpu/fclrexcpt.c
@@ -34,6 +34,7 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feclearexcept, __old_feclearexcept)
diff --git a/sysdeps/x86_64/fpu/fclrexcpt.c b/sysdeps/x86_64/fpu/fclrexcpt.c
index ba784666af..3bbb5a2b48 100644
--- a/sysdeps/x86_64/fpu/fclrexcpt.c
+++ b/sysdeps/x86_64/fpu/fclrexcpt.c
@@ -19,7 +19,7 @@
#include <fenv.h>
int
-feclearexcept (int excepts)
+__feclearexcept (int excepts)
{
fenv_t temp;
unsigned int mxcsr;
@@ -49,4 +49,6 @@ feclearexcept (int excepts)
/* Success. */
return 0;
}
+libm_hidden_def (__feclearexcept)
+weak_alias (__feclearexcept, feclearexcept)
libm_hidden_def (feclearexcept)
--
2.43.0
More information about the Libc-alpha
mailing list