Fix powerpc64le problem from last ldbl-opt patch.

This patch fixes a problem on powerpc64le that I missed in initial
testing of my last patch to ldbl-opt.  In the specific case of
powerpc64le, the weak aliases for exp10l and remainderl do not get
defined in the generic wrappers because of how those wrappers
undefine and redefine weak_alias.  This patch restores those aliases
in the ldbl-opt code.

Tested (compilation only) for powerpc64le with build-many-glibcs.py.

	* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c [LIBM_SVID_COMPAT &&
	!LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)] (weak_alias): Undefine and
	redefine.
	[LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)]
	(exp10l): Define as weak alias.
	* sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c [LIBM_SVID_COMPAT
	&& !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)] (weak_alias): Undefine
	and redefine.
	[LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)]
	(remainderl): Define as weak alias.
This commit is contained in:
Joseph Myers 2017-09-18 23:26:35 +00:00
parent 92892fdbfa
commit 6d9b0b5a22
3 changed files with 27 additions and 0 deletions

View File

@ -1,5 +1,16 @@
2017-09-18 Joseph Myers <joseph@codesourcery.com>
* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c [LIBM_SVID_COMPAT &&
!LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)] (weak_alias): Undefine and
redefine.
[LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)]
(exp10l): Define as weak alias.
* sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c [LIBM_SVID_COMPAT
&& !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)] (weak_alias): Undefine
and redefine.
[LIBM_SVID_COMPAT && !LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)]
(remainderl): Define as weak alias.
* math/s_fmal.c: Include <libm-alias-ldouble.h>.
(fmal): Define using libm_alias_ldouble.
* math/w_acoshl_compat.c: Include <libm-alias-ldouble.h>.

View File

@ -5,6 +5,14 @@
#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

View File

@ -3,6 +3,14 @@
#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)
weak_alias (__remainderl, remainderl)
# endif
strong_alias (__remainderl, __dreml)
long_double_symbol (libm, __dreml, dreml);
#endif