]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Restore sparc32 copysignl, fabsl, fmal compat symbols (bug 22229).
authorJoseph Myers <joseph@codesourcery.com>
Wed, 4 Oct 2017 16:46:05 +0000 (16:46 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 4 Oct 2017 16:46:05 +0000 (16:46 +0000)
32-bit SPARC libm should have compat symbols for copysignl
(GLIBC_2.0), fabsl (GLIBC_2.0), fmal (GLIBC_2.1), pointing to the
double functions; they were present in glibc 2.8, for example, but are
now missing, probably when optimized SPARC function implementations
were added without appropriate compat symbol handling.  The same
applies to copysignl in libc.  This patch restores those compat
symbols.

Tested with build-many-glibcs.py for sparcv9-linux-gnu.

[BZ #22229]
* sysdeps/sparc/sparc32/fpu/s_copysign.S: Include
<math_ldbl_opt.h>
(copysignl): Define as compat symbol at version GLIBC_2_0 for libm
and libc.
* sysdeps/sparc/sparc32/fpu/s_fabs.S: Include <math_ldbl_opt.h>.
(fabsl): Define as compat symbol at version GLIBC_2_0 for libm.
* sysdeps/sparc/sparc32/fpu/s_fma.c: Include <math_ldbl_opt.h>.
(fmal): Define as compat symbol at version GLIBC_2_1 for libm.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S:
Include <math_ldbl_opt.h>
(copysignl): Define as compat symbol at version GLIBC_2_0 for libm
and libc.
(compat_symbol): Undefine and redefine.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: Include
<math_ldbl_opt.h>
(fabsl): Define as compat symbol at version GLIBC_2_0 for libm.
(compat_symbol): Undefine and redefine.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma.c
[HAVE_AS_VIS3_SUPPORT]: Include <math_ldbl_opt.h>.
[HAVE_AS_VIS3_SUPPORT] (fmal): Define as compat symbol at version
GLIBC_2_1 for libm.
* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Add
GLIBC_2.0 copysignl symbol.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Add
GLIBC_2.0 copysignl and fabsl and GLIBC_2.1 fmal symbols.

ChangeLog
sysdeps/sparc/sparc32/fpu/s_copysign.S
sysdeps/sparc/sparc32/fpu/s_fabs.S
sysdeps/sparc/sparc32/fpu/s_fma.c
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma.c
sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist

index d326995de13da8581d8834df4e75fe947fcfb84a..9a4a0160c4513d5ba3af1d93bc9434851612dcbd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,32 @@
 2017-10-04  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #22229]
+       * sysdeps/sparc/sparc32/fpu/s_copysign.S: Include
+       <math_ldbl_opt.h>
+       (copysignl): Define as compat symbol at version GLIBC_2_0 for libm
+       and libc.
+       * sysdeps/sparc/sparc32/fpu/s_fabs.S: Include <math_ldbl_opt.h>.
+       (fabsl): Define as compat symbol at version GLIBC_2_0 for libm.
+       * sysdeps/sparc/sparc32/fpu/s_fma.c: Include <math_ldbl_opt.h>.
+       (fmal): Define as compat symbol at version GLIBC_2_1 for libm.
+       * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S:
+       Include <math_ldbl_opt.h>
+       (copysignl): Define as compat symbol at version GLIBC_2_0 for libm
+       and libc.
+       (compat_symbol): Undefine and redefine.
+       * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: Include
+       <math_ldbl_opt.h>
+       (fabsl): Define as compat symbol at version GLIBC_2_0 for libm.
+       (compat_symbol): Undefine and redefine.
+       * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma.c
+       [HAVE_AS_VIS3_SUPPORT]: Include <math_ldbl_opt.h>.
+       [HAVE_AS_VIS3_SUPPORT] (fmal): Define as compat symbol at version
+       GLIBC_2_1 for libm.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Add
+       GLIBC_2.0 copysignl symbol.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Add
+       GLIBC_2.0 copysignl and fabsl and GLIBC_2.1 fmal symbols.
+
        * sysdeps/alpha/fpu/s_nearbyint.c: Remove file.
 
 2017-10-04  Florian Weimer  <fweimer@redhat.com>
index bddbfb2386ad8aaa616ce07c5c777b05dea15b76..348cabcbb7a0130998434ef5978e5bc559668c03 100644 (file)
@@ -18,6 +18,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <math_ldbl_opt.h>
 
 ENTRY (__copysign)
        sethi   %hi(0x80000000), %g1
@@ -28,4 +29,10 @@ ENTRY (__copysign)
        retl
         ldd    [%sp + 72], %f0
 END (__copysign)
-weak_alias (__copysign, copysign)
\ No newline at end of file
+weak_alias (__copysign, copysign)
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
index fdeda688980061337668ccc768608a2e994a6468..774949af23ada4e69e87043e599c2b52e9a7fffc 100644 (file)
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <math_ldbl_opt.h>
 
 ENTRY (__fabs)
        st      %o0, [%sp+72]
@@ -26,3 +27,6 @@ ENTRY (__fabs)
         fabss  %f0, %f0
 END (__fabs)
 weak_alias (__fabs, fabs)
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+#endif
index 8f62605870439f2a821b9ee95bc868a8794aa363..bfdcb23b3a63f44694681f422f8eadae244ea7bc 100644 (file)
@@ -1,2 +1,6 @@
 /* Always use dbl-64 version because long double is emulated in software.  */
+#include <math_ldbl_opt.h>
 #include <sysdeps/ieee754/dbl-64/s_fma.c>
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
+compat_symbol (libm, __fma, fmal, GLIBC_2_1);
+#endif
index cdd98c00f4bbcdf72f4318fff3491c6b879497cc..5d26430f706f7937294458d5722b7453512893a9 100644 (file)
@@ -1,11 +1,20 @@
 #include <sparc-ifunc.h>
+#include <math_ldbl_opt.h>
 
 SPARC_ASM_VIS3_IFUNC(copysign)
 
 weak_alias (__copysign, copysign)
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
 
 # undef weak_alias
 # define weak_alias(a, b)
+# undef compat_symbol
+# define compat_symbol(a, b, c, d)
 
 #define __copysign __copysign_generic
 
index 86c63989a477436c31ce036be42431b3700c2afb..72cc08fd664e39eeedc9028651ff3687a3daabe7 100644 (file)
@@ -1,11 +1,17 @@
 #include <sparc-ifunc.h>
+#include <math_ldbl_opt.h>
 
 SPARC_ASM_VIS3_IFUNC(fabs)
 
 weak_alias (__fabs, fabs)
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+#endif
 
 # undef weak_alias
 # define weak_alias(a, b)
+# undef compat_symbol
+# define compat_symbol(a, b, c, d)
 
 #define __fabs __fabs_generic
 
index 3f2f1622c8af47a6ab54324d2ec0f4d0f8cee744..05113c33d34fc963046338cf78faf52cb796486f 100644 (file)
@@ -1,12 +1,16 @@
 #ifdef HAVE_AS_VIS3_SUPPORT
 # include <sparc-ifunc.h>
 # include <math.h>
+# include <math_ldbl_opt.h>
 
 extern double __fma_vis3 (double, double, double);
 extern double __fma_generic (double, double, double);
 
 sparc_libm_ifunc(__fma, hwcap & HWCAP_SPARC_FMAF ? __fma_vis3 : __fma_generic);
 weak_alias (__fma, fma)
+#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
+compat_symbol (libm, __fma, fmal, GLIBC_2_1);
+#endif
 
 # define __fma __fma_generic
 #endif
index 7f7449f52b5f28644c9fa924fe738d056dd4cf79..a62463be3d06f7da2a74bf542347631b8ff58061 100644 (file)
@@ -367,6 +367,7 @@ GLIBC_2.0 confstr F
 GLIBC_2.0 connect F
 GLIBC_2.0 copysign F
 GLIBC_2.0 copysignf F
+GLIBC_2.0 copysignl F
 GLIBC_2.0 creat F
 GLIBC_2.0 create_module F
 GLIBC_2.0 ctermid F
index f8f10e5952175282a6907b1e9522845e29c0a3e0..92de6edab9f7fa4cf4605aed3ffad0e6fee32c8a 100644 (file)
@@ -29,6 +29,7 @@ GLIBC_2.0 ceilf F
 GLIBC_2.0 ceill F
 GLIBC_2.0 copysign F
 GLIBC_2.0 copysignf F
+GLIBC_2.0 copysignl F
 GLIBC_2.0 cos F
 GLIBC_2.0 cosf F
 GLIBC_2.0 cosh F
@@ -52,6 +53,7 @@ GLIBC_2.0 expm1f F
 GLIBC_2.0 expm1l F
 GLIBC_2.0 fabs F
 GLIBC_2.0 fabsf F
+GLIBC_2.0 fabsl F
 GLIBC_2.0 finite F
 GLIBC_2.0 finitef F
 GLIBC_2.0 finitel F
@@ -254,6 +256,7 @@ GLIBC_2.1 fetestexcept F
 GLIBC_2.1 feupdateenv F
 GLIBC_2.1 fma F
 GLIBC_2.1 fmaf F
+GLIBC_2.1 fmal F
 GLIBC_2.1 fmax F
 GLIBC_2.1 fmaxf F
 GLIBC_2.1 fmaxl F