math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488)

The commit 16439f419b removed the static fmod/fmodf on i386 and m68k
with and empty w_fmod.c (required for the ABIs that uses the newly
implementation).  This patch fixes by adding the required symbols on
the arch-specific w_fmod{f}_compat.c implementation.

To statically build fmod fails on some ABI (alpha, s390, sparc) because
it does not export the ldexpf128, this is also fixed by this patch.

Checked on i686-linux-gnu and with a build for m68k-linux-gnu.

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Tested-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
Adhemerval Zanella 2024-03-14 14:59:35 -03:00
parent 437c94e04b
commit 0b716305df
5 changed files with 17 additions and 13 deletions

View File

@ -7,8 +7,9 @@
# define LIBM_SVID_COMPAT 1
# undef compat_symbol
# define compat_symbol(a, b, c, d)
#endif
#include <math/w_fmod_compat.c>
#ifdef SHARED
# include <math/w_fmod_compat.c>
libm_alias_double (__fmod_compat, fmod)
#else
#include <math-type-macros-double.h>
#include <w_fmod_template.c>
#endif

View File

@ -7,8 +7,9 @@
# define LIBM_SVID_COMPAT 1
# undef compat_symbol
# define compat_symbol(a, b, c, d)
#endif
#include <math/w_fmodf_compat.c>
#ifdef SHARED
# include <math/w_fmodf_compat.c>
libm_alias_float (__fmod_compat, fmod)
#else
#include <math-type-macros-float.h>
#include <w_fmod_template.c>
#endif

View File

@ -17,13 +17,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#if IS_IN (libc)
#if IS_IN (libc) && defined SHARED
# define declare_mgen_alias(f,t)
#endif
#include <math-type-macros-ldouble.h>
#include <s_ldexp_template.c>
#if IS_IN (libc)
#if IS_IN (libc) && defined SHARED
long_double_symbol (libc, __ldexpl, ldexpl);
long_double_symbol (libc, __wrap_scalbnl, scalbnl);
#endif

View File

@ -7,8 +7,9 @@
# define LIBM_SVID_COMPAT 1
# undef compat_symbol
# define compat_symbol(a, b, c, d)
#endif
#include <math/w_fmod_compat.c>
#ifdef SHARED
libm_alias_double (__fmod_compat, fmod)
#else
#include <math-type-macros-double.h>
#include <w_fmod_template.c>
#endif

View File

@ -7,8 +7,9 @@
# define LIBM_SVID_COMPAT 1
# undef compat_symbol
# define compat_symbol(a, b, c, d)
#endif
#include <math/w_fmodf_compat.c>
#ifdef SHARED
# include <math/w_fmodf_compat.c>
libm_alias_float (__fmod_compat, fmod)
#else
#include <math-type-macros-float.h>
#include <w_fmod_template.c>
#endif