This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: PATCH: PowerPC: libm ABI update
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- Cc: "GNU C. Library" <libc-alpha at sourceware dot org>
- Date: Fri, 18 May 2012 00:45:42 +0200
- Subject: Re: PATCH: PowerPC: libm ABI update
- References: <4FB55FBD.1070302@linux.vnet.ibm.com>
Adhemerval Zanella <azanella@linux.vnet.ibm.com> writes:
> -#ifndef IS_IN_libm
> +#ifdef IS_IN_libm
> +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
> +compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
> +compat_symbol (libm, __copysign, __copysignl, GLIBC_2_0)
> +# endif
> +#else
> # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
> compat_symbol (libc, __copysign, __copysignl, GLIBC_2_0);
> compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
__copysignl isn't an exported symbol.
> diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_logb.c b/sysdeps/powerpc/powerpc32/power7/fpu/s_logb.c
> index 71ee148..69cad51 100644
> --- a/sysdeps/powerpc/powerpc32/power7/fpu/s_logb.c
> +++ b/sysdeps/powerpc/powerpc32/power7/fpu/s_logb.c
> @@ -16,7 +16,7 @@
> License along with the GNU C Library; if not, see
> <http://www.gnu.org/licenses/>. */
>
> -#include "math_private.h"
> +#include <math_ldbl_opt.h>
>
> /* This implementation avoids FP to INT conversions by using VSX
> bitwise instructions over FP values. */
> @@ -66,10 +66,13 @@ __logb (double x)
> /* Test to avoid logb_downward (0.0) == -0.0. */
> return ret == -0.0 ? 0.0 : ret;
> }
> -
> weak_alias (__logb, logb)
> -
> #ifdef NO_LONG_DOUBLE
> strong_alias (__logb, __logbl)
> weak_alias (__logb, logbl)
> #endif
> +
> +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
> +compat_symbol (libm, __logb, __logbl, GLIBC_2_0);
> +compat_symbol (libm, logb, logbl, GLIBC_2_0);
> +#endif
__logbl isn't an exported symbol.
> diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
> index 0765d8a..438e49c 100644
> --- a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
> +++ b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
> @@ -47,7 +47,12 @@ strong_alias (__copysign, __copysignl)
> weak_alias (__copysign, copysignl)
> #endif
>
> -#ifndef IS_IN_libm
> +#ifdef IS_IN_libm
> +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
> +compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
> +compat_symbol (libm, __copysign, __copysignl, GLIBC_2_0)
> +# endif
> +#else
> # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
> compat_symbol (libc, __copysign, __copysignl, GLIBC_2_0);
> compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
See above.
> diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
> index 319d07f..7f89439 100644
> --- a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
> +++ b/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
> @@ -59,7 +59,12 @@ strong_alias (__finite, __finitef)
> hidden_def (__finitef)
> weak_alias (__finitef, finitef)
>
> -#ifndef IS_IN_libm
> +#ifdef IS_IN_libm
> +# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
> +compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
> +compat_symbol (libm, finite, finitel, GLIBC_2_0)
> +# endif
> +#else
> # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
> compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
> compat_symbol (libc, finite, finitel, GLIBC_2_0);
Pedantically, __finitel was added to libm in GLIBC_2.1 (though it
doesn't make a difference here, since ppc64 has a GLIBC_2.3 baseline).
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."