aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-10-11 02:51:39 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-10-11 02:51:39 +0000
commit0ff64d3a18fc5111c54ffd3238231754dfd506dc (patch)
treed9c48425d3d10195e49b9f19fb96dc20b1ac91df
parent541f19baf89e16304cdc5c3c8826896d3d2a7034 (diff)
downloadglibc-0ff64d3a18fc5111c54ffd3238231754dfd506dc.tar
glibc-0ff64d3a18fc5111c54ffd3238231754dfd506dc.tar.gz
glibc-0ff64d3a18fc5111c54ffd3238231754dfd506dc.tar.bz2
glibc-0ff64d3a18fc5111c54ffd3238231754dfd506dc.zip
Use generic alias macros in ldbl-opt.
This patch fixes ldbl-opt code to use generic libm alias macros in preparation for getting _FloatN / _FloatNx aliases where appropriate. Four functions are affected, that undefine and redefine alias macros before including the implementations they wrap in such a way that _FloatN / _FloatNx aliases would not appear. s_clog10l.c undefines and redefined declare_mgen_alias, so just needs a libm_alias_ldouble_other call added. w_exp10l_compat.c undefines and redefines weak_alias, but in fact does not need to do so, since math/w_exp10l_compat.c uses libm_alias_ldouble and does not use weak_alias other than through that, so the undefines and redefines of weak_alias are removed. w_lgamma_compatl.c and w_remainderl_compat.c are made to use libm_alias_ldouble_other in conjunction with restoring the original definition of weak_alias so this is effective. Tested with build-many-glibcs.py. Installed stripped shared libraries are unchanged by this patch. * sysdeps/ieee754/ldbl-opt/s_clog10l.c: Use libm_alias_ldouble_other. * sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (weak_alias): Do not undefine and redefine. [LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)] (exp10l): Do not define here. * sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c [BUILD_LGAMMA] (weak_alias): Undefine and redefine. [BUILD_LGAMMA]: Use libm_alias_ldouble_other. * sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c [LIBM_SVID_COMPAT] (weak_alias): Undefine and redefine here. [LIBM_SVID_COMPAT]: Use libm_alias_ldouble_other.
-rw-r--r--ChangeLog13
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_clog10l.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c10
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c11
5 files changed, 26 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 870d29d772..f8914f35e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2017-10-11 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/ieee754/ldbl-opt/s_clog10l.c: Use
+ libm_alias_ldouble_other.
+ * sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (weak_alias): Do not
+ undefine and redefine.
+ [LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)]
+ (exp10l): Do not define here.
+ * sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c [BUILD_LGAMMA]
+ (weak_alias): Undefine and redefine.
+ [BUILD_LGAMMA]: Use libm_alias_ldouble_other.
+ * sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
+ [LIBM_SVID_COMPAT] (weak_alias): Undefine and redefine here.
+ [LIBM_SVID_COMPAT]: Use libm_alias_ldouble_other.
+
* soft-fp/fmadf4.c: Include <libm-alias-double.h>.
[!__fma] (fma): Define using libm_alias_double.
* soft-fp/fmasf4.c: Include <libm-alias-float.h>.
diff --git a/sysdeps/ieee754/ldbl-opt/s_clog10l.c b/sysdeps/ieee754/ldbl-opt/s_clog10l.c
index 15dc3ed891..d557e96bc3 100644
--- a/sysdeps/ieee754/ldbl-opt/s_clog10l.c
+++ b/sysdeps/ieee754/ldbl-opt/s_clog10l.c
@@ -29,3 +29,4 @@
strong_alias (__clog10l_internal, __clog10l__internal)
long_double_symbol (libm, __clog10l_internal, __clog10l);
long_double_symbol (libm, __clog10l__internal, clog10l);
+libm_alias_ldouble_other (__clog10, clog10)
diff --git a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
index dd5915e66e..4822211189 100644
--- a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
@@ -1,18 +1,8 @@
#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
#undef compat_symbol
#define compat_symbol(l,n,a,v)
#include <math/w_exp10l_compat.c>
#if LIBM_SVID_COMPAT
-# if !LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-/* If ldbl-opt is used without special versioning for exp10l being
- required, the generic code does not define exp10l because of the
- undefine and redefine of weak_alias above. */
-# undef weak_alias
-# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
-weak_alias (__exp10l, exp10l)
-# endif
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
/* compat_symbol was undefined and redefined above to avoid the
default pow10l compat symbol at version GLIBC_2_1 (as for ldbl-opt
diff --git a/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c b/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c
index f60b3d7bcf..003a253ba4 100644
--- a/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c
+++ b/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c
@@ -9,3 +9,8 @@
#if GAMMA_ALIAS
long_double_symbol (libm, __gammal, gammal);
#endif
+#if BUILD_LGAMMA
+# undef weak_alias
+# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
+libm_alias_ldouble_other (__lgamma, lgamma)
+#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c b/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
index bb9bac0db7..2579600aa2 100644
--- a/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
@@ -3,14 +3,17 @@
#define weak_alias(n,a)
#include <math/w_remainderl_compat.c>
#if LIBM_SVID_COMPAT
-# if !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
/* If ldbl-opt is used without special versioning for remainderl being
required, the generic code does not define remainderl because of
- the undefine and redefine of weak_alias above. */
-# undef weak_alias
-# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
+ the undefine and redefine of weak_alias above. In any case, that
+ undefine and redefine mean _FloatN / _FloatNx aliases have not been
+ defined. */
+# undef weak_alias
+# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
+# if !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
weak_alias (__remainderl, remainderl)
# endif
strong_alias (__remainderl, __dreml)
long_double_symbol (libm, __dreml, dreml);
+libm_alias_ldouble_other (__remainder, remainder)
#endif