aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-09-15 23:10:02 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-09-15 23:10:02 +0000
commit9ac44708881c086f27f86b36c20749052d079c8f (patch)
tree70e2273135838595d52f2d367a777ab8a770380f
parentc67a2328c88fec0e91c646ad4a9d9edfb7140f0a (diff)
downloadglibc-9ac44708881c086f27f86b36c20749052d079c8f.tar.xz
glibc-9ac44708881c086f27f86b36c20749052d079c8f.zip
Use libm_alias_double in math/.
This patch converts libm function implementations in math/ from using weak_alias to using libm_alias_double to define public function names, in cases where it would be appropriate to define _Float64 / _Float32x aliases for those functions as well. This eliminates many NO_LONG_DOUBLE conditionals and ldbl-opt wrappers round these function implementations. Tested for x86_64. Also tested with build-many-glibcs.py. Binary differences seen are that the different order in which remainder and drem symbols get defined as a result of this patch (the same source file defines the same aliases, but in a different order of definition) changes the order of symbols in the final libm.so when long double = double, and for ldbl-opt configurations, the compat symbols for Bessel functions were previously defined by e.g. "compat_symbol (libm, j0, j0l, GLIBC_2_0)", which declares j0l as a compat symbol based on j0 and so makes j0l weak because j0 is weak, and are now defined (indirectly via the relevant macros) based on e.g. __j0, so are no longer weak because __j0 isn't weak. * math/s_fma.c: Include <libm-alias-double.h>. (fma): Define using libm_alias_double. * math/s_nextafter.c: Include <libm-alias-double.h>. (nextafter): Define using libm_alias_double. * math/w_acos_compat.c: Include <libm-alias-double.h>. (acos): Define using libm_alias_double. * math/w_acosh_compat.c: Include <libm-alias-double.h>. (aocsh): Define using libm_alias_double. * math/w_asin_compat.c: Include <libm-alias-double.h>. (asin): Define using libm_alias_double. * math/w_atan2_compat.c: Include <libm-alias-double.h>. (atan2): Define using libm_alias_double. * math/w_atanh_compat.c: Include <libm-alias-double.h>. (atanh): Define using libm_alias_double. * math/w_cosh_compat.c: Include <libm-alias-double.h>. (cosh): Define using libm_alias_double. * math/w_exp10_compat.c: Include <libm-alias-double.h>. (exp10): Define using libm_alias_double. * math/w_exp2_compat.c: Include <libm-alias-double.h>. (exp2): Define using libm_alias_double. * math/w_exp_compat.c: Include <libm-alias-double.h>. (exp): Define using libm_alias_double. * math/w_fmod_compat.c: Include <libm-alias-double.h>. (fmod): Define using libm_alias_double. * math/w_hypot_compat.c: Include <libm-alias-double.h>. (hypot): Define using libm_alias_double. * math/w_j0_compat.c: Include <libm-alias-double.h>. (j0): Define using libm_alias_double. (y0): Likewise. * math/w_j1_compat.c: Include <libm-alias-double.h>. (j1): Define using libm_alias_double. (y1): Likewise. * math/w_jn_compat.c: Include <libm-alias-double.h>. (jn): Define using libm_alias_double. (yn): Likewise. * math/w_log10_compat.c: Include <libm-alias-double.h>. (log10): Define using libm_alias_double. * math/w_log2_compat.c: Include <libm-alias-double.h>. (log2): Define using libm_alias_double. * math/w_log_compat.c: Include <libm-alias-double.h>. (log): Define using libm_alias_double. * math/w_pow_compat.c: Include <libm-alias-double.h>. (pow): Define using libm_alias_double. * math/w_remainder_compat.c: Include <libm-alias-double.h>. (remainder): Define using libm_alias_double. * math/w_sinh_compat.c: Include <libm-alias-double.h>. (sinh): Define using libm_alias_double. * math/w_sqrt_compat.c: Include <libm-alias-double.h>. (sqrt): Define using libm_alias_double. * math/w_tgamma_compat.c: Include <libm-alias-double.h>. (tgamma): Define using libm_alias_double. * sysdeps/ieee754/ldbl-opt/s_nextafter.c [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (nextafterl): Do not define compat symbol here. * sysdeps/ieee754/ldbl-opt/w_exp10_compat.c [LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)] (exp10l): Likewise. * sysdeps/ieee754/ldbl-opt/w_remainder_compat.c [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (remainderl): Likewise. * sysdeps/ieee754/ldbl-opt/w_acos_compat.c: Remove. * sysdeps/ieee754/ldbl-opt/w_acosh_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_asin_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_atan2_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_atanh_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_cosh_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_exp_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_fmod_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_hypot_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_j0_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_j1_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_jn_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_log10_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_log2_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_log_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_pow_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_sinh_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c: Likewise.
-rw-r--r--ChangeLog77
-rw-r--r--math/s_fma.c8
-rw-r--r--math/s_nextafter.c5
-rw-r--r--math/w_acos_compat.c7
-rw-r--r--math/w_acosh_compat.c7
-rw-r--r--math/w_asin_compat.c7
-rw-r--r--math/w_atan2_compat.c7
-rw-r--r--math/w_atanh_compat.c7
-rw-r--r--math/w_cosh_compat.c7
-rw-r--r--math/w_exp10_compat.c5
-rw-r--r--math/w_exp2_compat.c7
-rw-r--r--math/w_exp_compat.c7
-rw-r--r--math/w_fmod_compat.c7
-rw-r--r--math/w_hypot_compat.c7
-rw-r--r--math/w_j0_compat.c13
-rw-r--r--math/w_j1_compat.c13
-rw-r--r--math/w_jn_compat.c13
-rw-r--r--math/w_log10_compat.c7
-rw-r--r--math/w_log2_compat.c7
-rw-r--r--math/w_log_compat.c7
-rw-r--r--math/w_pow_compat.c7
-rw-r--r--math/w_remainder_compat.c5
-rw-r--r--math/w_sinh_compat.c7
-rw-r--r--math/w_sqrt_compat.c7
-rw-r--r--math/w_tgamma_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_nextafter.c3
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_acos_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_acosh_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_asin_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_atan2_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_atanh_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_cosh_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp10_compat.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_fmod_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_hypot_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_j0_compat.c6
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_j1_compat.c6
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_jn_compat.c6
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log10_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log2_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_pow_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_remainder_compat.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_sinh_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c5
47 files changed, 128 insertions, 233 deletions
diff --git a/ChangeLog b/ChangeLog
index b9ce2753a9..58acb54b0a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,82 @@
2017-09-15 Joseph Myers <joseph@codesourcery.com>
+ * math/s_fma.c: Include <libm-alias-double.h>.
+ (fma): Define using libm_alias_double.
+ * math/s_nextafter.c: Include <libm-alias-double.h>.
+ (nextafter): Define using libm_alias_double.
+ * math/w_acos_compat.c: Include <libm-alias-double.h>.
+ (acos): Define using libm_alias_double.
+ * math/w_acosh_compat.c: Include <libm-alias-double.h>.
+ (aocsh): Define using libm_alias_double.
+ * math/w_asin_compat.c: Include <libm-alias-double.h>.
+ (asin): Define using libm_alias_double.
+ * math/w_atan2_compat.c: Include <libm-alias-double.h>.
+ (atan2): Define using libm_alias_double.
+ * math/w_atanh_compat.c: Include <libm-alias-double.h>.
+ (atanh): Define using libm_alias_double.
+ * math/w_cosh_compat.c: Include <libm-alias-double.h>.
+ (cosh): Define using libm_alias_double.
+ * math/w_exp10_compat.c: Include <libm-alias-double.h>.
+ (exp10): Define using libm_alias_double.
+ * math/w_exp2_compat.c: Include <libm-alias-double.h>.
+ (exp2): Define using libm_alias_double.
+ * math/w_exp_compat.c: Include <libm-alias-double.h>.
+ (exp): Define using libm_alias_double.
+ * math/w_fmod_compat.c: Include <libm-alias-double.h>.
+ (fmod): Define using libm_alias_double.
+ * math/w_hypot_compat.c: Include <libm-alias-double.h>.
+ (hypot): Define using libm_alias_double.
+ * math/w_j0_compat.c: Include <libm-alias-double.h>.
+ (j0): Define using libm_alias_double.
+ (y0): Likewise.
+ * math/w_j1_compat.c: Include <libm-alias-double.h>.
+ (j1): Define using libm_alias_double.
+ (y1): Likewise.
+ * math/w_jn_compat.c: Include <libm-alias-double.h>.
+ (jn): Define using libm_alias_double.
+ (yn): Likewise.
+ * math/w_log10_compat.c: Include <libm-alias-double.h>.
+ (log10): Define using libm_alias_double.
+ * math/w_log2_compat.c: Include <libm-alias-double.h>.
+ (log2): Define using libm_alias_double.
+ * math/w_log_compat.c: Include <libm-alias-double.h>.
+ (log): Define using libm_alias_double.
+ * math/w_pow_compat.c: Include <libm-alias-double.h>.
+ (pow): Define using libm_alias_double.
+ * math/w_remainder_compat.c: Include <libm-alias-double.h>.
+ (remainder): Define using libm_alias_double.
+ * math/w_sinh_compat.c: Include <libm-alias-double.h>.
+ (sinh): Define using libm_alias_double.
+ * math/w_sqrt_compat.c: Include <libm-alias-double.h>.
+ (sqrt): Define using libm_alias_double.
+ * math/w_tgamma_compat.c: Include <libm-alias-double.h>.
+ (tgamma): Define using libm_alias_double.
+ * sysdeps/ieee754/ldbl-opt/s_nextafter.c [LONG_DOUBLE_COMPAT(libm,
+ GLIBC_2_0)] (nextafterl): Do not define compat symbol here.
+ * sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
+ [LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)] (exp10l): Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_remainder_compat.c
+ [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (remainderl): Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_acos_compat.c: Remove.
+ * sysdeps/ieee754/ldbl-opt/w_acosh_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_asin_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_atan2_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_atanh_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_cosh_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_exp_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_fmod_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_hypot_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_j0_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_j1_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_jn_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_log10_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_log2_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_log_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_pow_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_sinh_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c: Likewise.
+
* math/e_acoshl.c: Remove.
* math/e_acosl.c: Likewise.
* math/e_asinl.c: Likewise.
diff --git a/math/s_fma.c b/math/s_fma.c
index dc1cc65bbe..929ca581db 100644
--- a/math/s_fma.c
+++ b/math/s_fma.c
@@ -18,6 +18,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
+#include <libm-alias-double.h>
double
__fma (double x, double y, double z)
@@ -25,10 +26,5 @@ __fma (double x, double y, double z)
return (x * y) + z;
}
#ifndef __fma
-weak_alias (__fma, fma)
-#endif
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__fma, __fmal)
-weak_alias (__fmal, fmal)
+libm_alias_double (__fma, fma)
#endif
diff --git a/math/s_nextafter.c b/math/s_nextafter.c
index 72419cbe9a..fbf440e519 100644
--- a/math/s_nextafter.c
+++ b/math/s_nextafter.c
@@ -29,6 +29,7 @@ static char rcsid[] = "$NetBSD: s_nextafter.c,v 1.8 1995/05/10 20:47:58 jtc Exp
#include <math.h>
#include <math_private.h>
#include <float.h>
+#include <libm-alias-double.h>
double __nextafter(double x, double y)
{
@@ -83,10 +84,8 @@ double __nextafter(double x, double y)
INSERT_WORDS(x,hx,lx);
return x;
}
-weak_alias (__nextafter, nextafter)
+libm_alias_double (__nextafter, nextafter)
#ifdef NO_LONG_DOUBLE
-strong_alias (__nextafter, __nextafterl)
-weak_alias (__nextafter, nextafterl)
strong_alias (__nextafter, __nexttowardl)
weak_alias (__nexttowardl, nexttowardl)
#undef __nexttoward
diff --git a/math/w_acos_compat.c b/math/w_acos_compat.c
index 1930105153..113e1d7a83 100644
--- a/math/w_acos_compat.c
+++ b/math/w_acos_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-double.h>
#if LIBM_SVID_COMPAT
@@ -37,9 +38,5 @@ __acos (double x)
return __ieee754_acos (x);
}
-weak_alias (__acos, acos)
-# ifdef NO_LONG_DOUBLE
-strong_alias (__acos, __acosl)
-weak_alias (__acos, acosl)
-# endif
+libm_alias_double (__acos, acos)
#endif
diff --git a/math/w_acosh_compat.c b/math/w_acosh_compat.c
index f6d298e17b..882537ab83 100644
--- a/math/w_acosh_compat.c
+++ b/math/w_acosh_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-double.h>
#if LIBM_SVID_COMPAT
@@ -32,9 +33,5 @@ __acosh (double x)
return __ieee754_acosh (x);
}
-weak_alias (__acosh, acosh)
-# ifdef NO_LONG_DOUBLE
-strong_alias (__acosh, __acoshl)
-weak_alias (__acosh, acoshl)
-# endif
+libm_alias_double (__acosh, acosh)
#endif
diff --git a/math/w_asin_compat.c b/math/w_asin_compat.c
index 7780f85883..0c19564f18 100644
--- a/math/w_asin_compat.c
+++ b/math/w_asin_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-double.h>
#if LIBM_SVID_COMPAT
@@ -37,9 +38,5 @@ __asin (double x)
return __ieee754_asin (x);
}
-weak_alias (__asin, asin)
-# ifdef NO_LONG_DOUBLE
-strong_alias (__asin, __asinl)
-weak_alias (__asin, asinl)
-# endif
+libm_alias_double (__asin, asin)
#endif
diff --git a/math/w_atan2_compat.c b/math/w_atan2_compat.c
index 1ca3349207..8162e7b28c 100644
--- a/math/w_atan2_compat.c
+++ b/math/w_atan2_compat.c
@@ -24,6 +24,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-double.h>
#if LIBM_SVID_COMPAT
@@ -40,9 +41,5 @@ __atan2 (double y, double x)
__set_errno (ERANGE);
return z;
}
-weak_alias (__atan2, atan2)
-# ifdef NO_LONG_DOUBLE
-strong_alias (__atan2, __atan2l)
-weak_alias (__atan2, atan2l)
-# endif
+libm_alias_double (__atan2, atan2)
#endif
diff --git a/math/w_atanh_compat.c b/math/w_atanh_compat.c
index c2cbb2ee5f..4b29a66243 100644
--- a/math/w_atanh_compat.c
+++ b/math/w_atanh_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-double.h>
#if LIBM_SVID_COMPAT
@@ -35,9 +36,5 @@ __atanh (double x)
return __ieee754_atanh (x);
}
-weak_alias (__atanh, atanh)
-# ifdef NO_LONG_DOUBLE
-strong_alias (__atanh, __atanhl)
-weak_alias (__atanh, atanhl)
-# endif
+libm_alias_double (__atanh, atanh)
#endif
diff --git a/math/w_cosh_compat.c b/math/w_cosh_compat.c
index d0cb6b165f..6941807d9b 100644
--- a/math/w_cosh_compat.c
+++ b/