From 2eb8836de7a1ac66eae048260e9272faf383287f Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 25 Aug 2025 13:38:26 -0300 Subject: [PATCH] math: Add feclearexcept internal alias 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. Reviewed-by: DJ Delorie --- 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 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 #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 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 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 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 #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 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 #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 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 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 #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 #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 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 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 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 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.47.3