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.
This commit is contained in:
Joseph Myers 2017-10-11 02:51:39 +00:00
parent 541f19baf8
commit 0ff64d3a18
5 changed files with 26 additions and 14 deletions

View File

@ -1,5 +1,18 @@
2017-10-11 Joseph Myers <joseph@codesourcery.com> 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>. * soft-fp/fmadf4.c: Include <libm-alias-double.h>.
[!__fma] (fma): Define using libm_alias_double. [!__fma] (fma): Define using libm_alias_double.
* soft-fp/fmasf4.c: Include <libm-alias-float.h>. * soft-fp/fmasf4.c: Include <libm-alias-float.h>.

View File

@ -29,3 +29,4 @@
strong_alias (__clog10l_internal, __clog10l__internal) strong_alias (__clog10l_internal, __clog10l__internal)
long_double_symbol (libm, __clog10l_internal, __clog10l); long_double_symbol (libm, __clog10l_internal, __clog10l);
long_double_symbol (libm, __clog10l__internal, clog10l); long_double_symbol (libm, __clog10l__internal, clog10l);
libm_alias_ldouble_other (__clog10, clog10)

View File

@ -1,18 +1,8 @@
#include <math_ldbl_opt.h> #include <math_ldbl_opt.h>
#undef weak_alias
#define weak_alias(n,a)
#undef compat_symbol #undef compat_symbol
#define compat_symbol(l,n,a,v) #define compat_symbol(l,n,a,v)
#include <math/w_exp10l_compat.c> #include <math/w_exp10l_compat.c>
#if LIBM_SVID_COMPAT #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) # if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
/* compat_symbol was undefined and redefined above to avoid the /* compat_symbol was undefined and redefined above to avoid the
default pow10l compat symbol at version GLIBC_2_1 (as for ldbl-opt default pow10l compat symbol at version GLIBC_2_1 (as for ldbl-opt

View File

@ -9,3 +9,8 @@
#if GAMMA_ALIAS #if GAMMA_ALIAS
long_double_symbol (libm, __gammal, gammal); long_double_symbol (libm, __gammal, gammal);
#endif #endif
#if BUILD_LGAMMA
# undef weak_alias
# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
libm_alias_ldouble_other (__lgamma, lgamma)
#endif

View File

@ -3,14 +3,17 @@
#define weak_alias(n,a) #define weak_alias(n,a)
#include <math/w_remainderl_compat.c> #include <math/w_remainderl_compat.c>
#if LIBM_SVID_COMPAT #if LIBM_SVID_COMPAT
# if !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
/* If ldbl-opt is used without special versioning for remainderl being /* If ldbl-opt is used without special versioning for remainderl being
required, the generic code does not define remainderl because of required, the generic code does not define remainderl because of
the undefine and redefine of weak_alias above. */ the undefine and redefine of weak_alias above. In any case, that
# undef weak_alias undefine and redefine mean _FloatN / _FloatNx aliases have not been
# define weak_alias(name, aliasname) _weak_alias (name, aliasname) 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) weak_alias (__remainderl, remainderl)
# endif # endif
strong_alias (__remainderl, __dreml) strong_alias (__remainderl, __dreml)
long_double_symbol (libm, __dreml, dreml); long_double_symbol (libm, __dreml, dreml);
libm_alias_ldouble_other (__remainder, remainder)
#endif #endif