From: Adhemerval Zanella Date: Wed, 8 Oct 2025 13:55:03 +0000 (-0300) Subject: m68k: Remove the SVID error handling from fmodf X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ade9f30ce2736cfe29a77eef05951503f379a54a;p=thirdparty%2Fglibc.git m68k: Remove the SVID error handling from fmodf The m68k provided an optimized version through __m81_u(fmodf) (mathimpl.h), and gcc does not implement it through a builtin (different than i386). Reviewed-by: Wilco Dijkstra --- diff --git a/sysdeps/m68k/m680x0/fpu/Versions b/sysdeps/m68k/m680x0/fpu/Versions new file mode 100644 index 0000000000..ee1dc6b649 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/Versions @@ -0,0 +1,6 @@ +libm { + GLIBC_2.43 { + # No SVID compatible error handling. + fmodf; + } +} diff --git a/sysdeps/m68k/m680x0/fpu/e_fmodf.c b/sysdeps/m68k/m680x0/fpu/e_fmodf.c index ffae68f17f..58e4a1e770 100644 --- a/sysdeps/m68k/m680x0/fpu/e_fmodf.c +++ b/sysdeps/m68k/m680x0/fpu/e_fmodf.c @@ -1,6 +1,42 @@ -#ifndef FUNC -# define FUNC __ieee754_fmodf -# define FUNC_FINITE __fmodf -#endif -#define float_type float -#include +/* Floating-point remainder function. + Copyright (C) 2014-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 + . */ + +#include +#include +#include +#include "mathimpl.h" +#include "sysdeps/ieee754/flt-32/math_config.h" + +float +__fmodf (float x, float y) +{ + uint32_t hx = asuint (x); + uint32_t hy = asuint (y); + + /* fmod(+-Inf,y) or fmod(x,0) */ + if (__glibc_unlikely ((is_inf (hx) || y == 0.0f) + && !is_nan (hy) + && !is_nan (hx))) + return __math_invalidf (x); + + return __m81_u(fmodf)(x, y); +} +strong_alias (__fmodf, __ieee754_fmodf) +versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_43); +libm_alias_float_other (__fmod, fmod) +libm_alias_finite (__ieee754_fmodf, __fmodf) diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderf.c b/sysdeps/m68k/m680x0/fpu/e_remainderf.c index 77f1f029b0..beacf65636 100644 --- a/sysdeps/m68k/m680x0/fpu/e_remainderf.c +++ b/sysdeps/m68k/m680x0/fpu/e_remainderf.c @@ -1,3 +1,4 @@ #define FUNC __ieee754_remainderf #define FUNC_FINITE __remainderf -#include +#define float_type float +#include diff --git a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c deleted file mode 100644 index 88db07f443..0000000000 --- a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c +++ /dev/null @@ -1,15 +0,0 @@ -/* m68k provides an optimized __ieee752_fmodf. */ -#include -#ifdef SHARED -# undef SHLIB_COMPAT -# define SHLIB_COMPAT(a, b, c) 1 -# undef LIBM_SVID_COMPAT -# define LIBM_SVID_COMPAT 1 -# undef compat_symbol -# define compat_symbol(a, b, c, d) -# include -libm_alias_float (__fmod_compat, fmod) -#else -#include -#include -#endif diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 9dba60bafb..9de0abca25 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -986,3 +986,4 @@ GLIBC_2.42 rsqrtf32 F GLIBC_2.42 rsqrtf32x F GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtl F +GLIBC_2.43 fmodf F