mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-21 04:31:04 +08:00
0ff64d3a18
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.
20 lines
735 B
C
20 lines
735 B
C
#include <math_ldbl_opt.h>
|
|
#undef weak_alias
|
|
#define weak_alias(n,a)
|
|
#include <math/w_remainderl_compat.c>
|
|
#if LIBM_SVID_COMPAT
|
|
/* 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. 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
|