This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Make drem an alias of remainder (bug 16171) [committed]
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Thu, 29 Oct 2015 22:30:02 +0000
- Subject: Make drem an alias of remainder (bug 16171) [committed]
- Authentication-results: sourceware.org; auth=none
The libm drem functions just call the corresponding __remainder
functions. This patch removes the unnecessary wrappers by making them
into weak aliases at the ELF level.
Tested for x86_64, x86, mips64 and powerpc.
2015-10-29 Joseph Myers <joseph@codesourcery.com>
[BZ #16171]
* math/w_remainder.c (drem): Define as weak alias of __remainder.
[NO_LONG_DOUBLE] (dreml): Define as weak alias of __remainder.
* math/w_remainderf.c (dremf): Define as weak alias of
__remainderf.
* math/w_remainderl.c (dreml): Define as weak alias of
__remainderl.
* sysdeps/ia64/fpu/e_remainder.S (drem): Define as weak alias of
__remainder.
* sysdeps/ia64/fpu/e_remainderf.S (dremf): Define as weak alias of
__remainderf.
* sysdeps/ia64/fpu/e_remainderl.S (dreml): Define as weak alias of
__remainderl.
* sysdeps/ieee754/ldbl-opt/nldbl-remainder.c (dreml): Define as
weak alias of remainderl.
* sysdeps/ieee754/ldbl-opt/w_remainder.c
[LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__drem): Define as strong
alias of __remainder.
[LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (dreml): Use compat_symbol.
* sysdeps/ieee754/ldbl-opt/w_remainderl.c (__dreml): Define as
strong alias of __remainderl.
(dreml): Use long_double_symbol.
* math/Makefile (libm-calls): Remove w_drem.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove drem.
(CFLAGS-nldbl-drem.c): Remove variable.
(CFLAGS-nldbl-remainder.c): Add -fno-builtin-dreml.
* math/w_drem.c: Remove file.
* math/w_dremf.c: Likewise.
* math/w_dreml.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-drem.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_drem.c: Likewise.
* sysdeps/ieee754/ldbl-opt/w_dreml.c: Likewise.
diff --git a/math/Makefile b/math/Makefile
index dedd7ee..3efbc58 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -51,7 +51,7 @@ libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \
s_floor s_log1p w_log1p s_logb \
s_nextafter s_nexttoward s_rint s_scalbln w_scalbln \
s_significand s_sin s_tan s_tanh w_acos w_acosh w_asin \
- w_atan2 w_atanh w_cosh w_drem w_exp w_exp2 w_exp10 w_fmod \
+ w_atan2 w_atanh w_cosh w_exp w_exp2 w_exp10 w_fmod \
w_tgamma w_hypot w_j0 w_j1 w_jn w_lgamma w_lgamma_r \
w_log w_log10 w_pow w_remainder w_scalb w_sinh w_sqrt \
w_ilogb \
diff --git a/math/w_drem.c b/math/w_drem.c
deleted file mode 100644
index 843b67a..0000000
--- a/math/w_drem.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * drem() wrapper for remainder().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Placed into the Public Domain, 1994.
- */
-
-#include <math.h>
-
-double
-__drem (double x, double y)
-{
- return __remainder(x, y);
-}
-weak_alias (__drem, drem)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__drem, __dreml)
-weak_alias (__drem, dreml)
-#endif
diff --git a/math/w_dremf.c b/math/w_dremf.c
deleted file mode 100644
index c5e7c63..0000000
--- a/math/w_dremf.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * dremf() wrapper for remainderf().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Placed into the Public Domain, 1994.
- */
-
-#include <math.h>
-#include <math_private.h>
-
-float
-__dremf (float x, float y)
-{
- return __remainderf(x, y);
-}
-weak_alias (__dremf, dremf)
diff --git a/math/w_dreml.c b/math/w_dreml.c
deleted file mode 100644
index 8d0139a..0000000
--- a/math/w_dreml.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * dreml() wrapper for remainderl().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Conversion to long double by Ulrich Drepper,
- * Cygnus Support, drepper@cygnus.com.
- * Placed into the Public Domain, 1994.
- */
-
-#include <math.h>
-
-long double
-__dreml (long double x, long double y)
-{
- return __remainderl(x, y);
-}
-weak_alias (__dreml, dreml)
diff --git a/math/w_remainder.c b/math/w_remainder.c
index a6da192..aa70f02 100644
--- a/math/w_remainder.c
+++ b/math/w_remainder.c
@@ -32,7 +32,9 @@ __remainder (double x, double y)
return __ieee754_remainder (x, y);
}
weak_alias (__remainder, remainder)
+weak_alias (__remainder, drem)
#ifdef NO_LONG_DOUBLE
strong_alias (__remainder, __remainderl)
weak_alias (__remainder, remainderl)
+weak_alias (__remainder, dreml)
#endif
diff --git a/math/w_remainderf.c b/math/w_remainderf.c
index c003002..beb0775 100644
--- a/math/w_remainderf.c
+++ b/math/w_remainderf.c
@@ -32,3 +32,4 @@ __remainderf (float x, float y)
return __ieee754_remainderf (x, y);
}
weak_alias (__remainderf, remainderf)
+weak_alias (__remainderf, dremf)
diff --git a/math/w_remainderl.c b/math/w_remainderl.c
index b25929d..393c99a 100644
--- a/math/w_remainderl.c
+++ b/math/w_remainderl.c
@@ -32,3 +32,4 @@ __remainderl (long double x, long double y)
return __ieee754_remainderl (x, y);
}
weak_alias (__remainderl, remainderl)
+weak_alias (__remainderl, dreml)
diff --git a/sysdeps/ia64/fpu/e_remainder.S b/sysdeps/ia64/fpu/e_remainder.S
index 3e06517..3cd5aac 100644
--- a/sysdeps/ia64/fpu/e_remainder.S
+++ b/sysdeps/ia64/fpu/e_remainder.S
@@ -529,6 +529,7 @@ EXP_ERROR_RETURN:
}
GLOBAL_IEEE754_END(remainder)
+weak_alias (__remainder, drem)
diff --git a/sysdeps/ia64/fpu/e_remainderf.S b/sysdeps/ia64/fpu/e_remainderf.S
index 2d7385d..df4cfdd 100644
--- a/sysdeps/ia64/fpu/e_remainderf.S
+++ b/sysdeps/ia64/fpu/e_remainderf.S
@@ -548,6 +548,7 @@ EXP_ERROR_RETURN:
}
GLOBAL_IEEE754_END(remainderf)
+weak_alias (__remainderf, dremf)
diff --git a/sysdeps/ia64/fpu/e_remainderl.S b/sysdeps/ia64/fpu/e_remainderl.S
index 30658e5..d9a9ee8 100644
--- a/sysdeps/ia64/fpu/e_remainderl.S
+++ b/sysdeps/ia64/fpu/e_remainderl.S
@@ -557,6 +557,7 @@ EXP_ERROR_RETURN:
}
GLOBAL_IEEE754_END(remainderl)
+weak_alias (__remainderl, dreml)
LOCAL_LIBM_ENTRY(__libm_error_region)
.prologue
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 222122d..53091e4 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -31,7 +31,7 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \
log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
lgamma tgamma gamma rint nearbyint round trunc \
- copysign fdim fmax fmin nextafter pow hypot fmod drem \
+ copysign fdim fmax fmin nextafter pow hypot fmod \
remainder ldexp scalbn frexp modf scalbln fma nan sincos \
jn yn ilogb remquo lrint lround llrint llround nexttowardf \
nexttoward conj cacos cacosh casin catan catanh ccos ccosh \
@@ -81,7 +81,6 @@ CFLAGS-nldbl-csinh.c = -fno-builtin-csinhl
CFLAGS-nldbl-csqrt.c = -fno-builtin-csqrtl
CFLAGS-nldbl-ctan.c = -fno-builtin-ctanl
CFLAGS-nldbl-ctanh.c = -fno-builtin-ctanhl
-CFLAGS-nldbl-drem.c = -fno-builtin-dreml
CFLAGS-nldbl-erf.c = -fno-builtin-erfl
CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl
CFLAGS-nldbl-exp.c = -fno-builtin-expl
@@ -125,7 +124,7 @@ CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl
CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf
CFLAGS-nldbl-pow.c = -fno-builtin-powl
CFLAGS-nldbl-pow10.c = -fno-builtin-pow10l
-CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl
+CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
CFLAGS-nldbl-rint.c = -fno-builtin-rintl
CFLAGS-nldbl-round.c = -fno-builtin-roundl
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-drem.c b/sysdeps/ieee754/ldbl-opt/nldbl-drem.c
deleted file mode 100644
index 1e08ce1..0000000
--- a/sysdeps/ieee754/ldbl-opt/nldbl-drem.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "nldbl-compat.h"
-
-double
-attribute_hidden
-dreml (double x, double y)
-{
- return drem (x, y);
-}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c b/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
index a8d5baf..581dc78 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
@@ -6,3 +6,5 @@ remainderl (double x, double y)
{
return remainder (x, y);
}
+extern __typeof (remainderl) dreml attribute_hidden;
+weak_alias (remainderl, dreml)
diff --git a/sysdeps/ieee754/ldbl-opt/w_drem.c b/sysdeps/ieee754/ldbl-opt/w_drem.c
deleted file mode 100644
index 788a5d2..0000000
--- a/sysdeps/ieee754/ldbl-opt/w_drem.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <math/w_drem.c>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __drem, dreml, GLIBC_2_0);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_dreml.c b/sysdeps/ieee754/ldbl-opt/w_dreml.c
deleted file mode 100644
index d14d7e2..0000000
--- a/sysdeps/ieee754/ldbl-opt/w_dreml.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_dreml.c>
-long_double_symbol (libm, __dreml, dreml);
diff --git a/sysdeps/ieee754/ldbl-opt/w_remainder.c b/sysdeps/ieee754/ldbl-opt/w_remainder.c
index 94d9893..dfa7b7f 100644
--- a/sysdeps/ieee754/ldbl-opt/w_remainder.c
+++ b/sysdeps/ieee754/ldbl-opt/w_remainder.c
@@ -2,4 +2,6 @@
#include <math/w_remainder.c>
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
compat_symbol (libm, __remainder, remainderl, GLIBC_2_0);
+strong_alias (__remainder, __drem)
+compat_symbol (libm, __drem, dreml, GLIBC_2_0);
#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_remainderl.c b/sysdeps/ieee754/ldbl-opt/w_remainderl.c
index e450a25..7a344b7 100644
--- a/sysdeps/ieee754/ldbl-opt/w_remainderl.c
+++ b/sysdeps/ieee754/ldbl-opt/w_remainderl.c
@@ -3,3 +3,5 @@
#define weak_alias(n,a)
#include <math/w_remainderl.c>
long_double_symbol (libm, __remainderl, remainderl);
+strong_alias (__remainderl, __dreml)
+long_double_symbol (libm, __dreml, dreml);
--
Joseph S. Myers
joseph@codesourcery.com