GNU C Library master sources branch master updated. glibc-2.22-575-ge59c94f

cmetcalf@sourceware.org cmetcalf@sourceware.org
Thu Dec 3 20:12:00 GMT 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  e59c94fa0e2871bdfcc363899e3be376c0def770 (commit)
      from  b3f6040781f78af648fc90f67cec3e49a338b3e9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e59c94fa0e2871bdfcc363899e3be376c0def770

commit e59c94fa0e2871bdfcc363899e3be376c0def770
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Tue Dec 1 14:59:38 2015 -0500

    math: add LDBL_CLASSIFY_COMPAT support
    
    If a platform does not define "long-double-fcts = yes" in its
    Makefiles and it does define __NO_LONG_DOUBLE_MATH in its installed
    headers, it will currently create exported symbols for __finitel,
    __isinfl, and __isnanl that can't be reached from userspace by
    correct use of the finite(), isinf(), or isnan() macros in <math.h>.
    
    To avoid this situation, by default for such platforms we now no
    longer export these symbols, thus causing appropriate link-time
    errors.  However, for platforms that previously exported these
    symbols, we continue to do so as compat symbols; this is enabled
    by adding LDBL_CLASSIFY_COMPAT to math_private.h for the platform.
    
    For tile, remove the now-unnecessary exports of those functions from
    libc and libm.

diff --git a/ChangeLog b/ChangeLog
index 7654fa4..292c495 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2015-12-03  Chris Metcalf  <cmetcalf@ezchip.com>
+
+	* sysdeps/arm/math_private.h (LDBL_CLASSIFY_COMPAT): New symbol.
+	* sysdeps/microblaze/math_private.h (LDBL_CLASSIFY_COMPAT):
+	Likewise.
+	* sysdeps/mips/math_private.h (LDBL_CLASSIFY_COMPAT): Likewise.
+	* sysdeps/nios2/math_private.h (LDBL_CLASSIFY_COMPAT): Likewise.
+	* sysdeps/sh/math_private.h: New file.
+	* sysdeps/m68k/coldfire/fpu/math_private.h: Likewise.
+	* sysdeps/ieee754/dbl-64/s_finite.c [defined NO_LONG_DOUBLE &&
+	defined LDBL_CLASSIFY_COMPAT]: Create compat symbol for internal
+	long double function name.
+	* sysdeps/ieee754/dbl-64/s_isinf.c: Likewise.
+	* sysdeps/ieee754/dbl-64/s_isnan.c: Likewise.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c: Likewise.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c: Likewise.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c: Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist:
+	Remove __finitel, __isinfl, and __isnanl.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
+	Remove __finitel.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
+
 2015-12-03  Andrew Senkevich  <andrew.senkevich@intel.com>
 
 	* math/Makefile ($(inst_libdir)/libm.so): Corrected path to
diff --git a/sysdeps/arm/math_private.h b/sysdeps/arm/math_private.h
index c175b15..d39e9ee 100644
--- a/sysdeps/arm/math_private.h
+++ b/sysdeps/arm/math_private.h
@@ -1,6 +1,10 @@
 #ifndef ARM_MATH_PRIVATE_H
 #define ARM_MATH_PRIVATE_H 1
 
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
 #include "fenv_private.h"
 #include_next <math_private.h>
 
diff --git a/sysdeps/ieee754/dbl-64/s_finite.c b/sysdeps/ieee754/dbl-64/s_finite.c
index 2b0ed50..b71ae12 100644
--- a/sysdeps/ieee754/dbl-64/s_finite.c
+++ b/sysdeps/ieee754/dbl-64/s_finite.c
@@ -21,6 +21,7 @@ static char rcsid[] = "$NetBSD: s_finite.c,v 1.8 1995/05/10 20:47:17 jtc Exp $";
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 #undef __finite
 
@@ -37,6 +38,13 @@ int FINITE(double x)
 hidden_def (__finite)
 weak_alias (__finite, finite)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
+# ifdef LDBL_CLASSIFY_COMPAT
+#  if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+#  endif
+#  if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_0);
+#  endif
+# endif
 weak_alias (__finite, finitel)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/s_isinf.c b/sysdeps/ieee754/dbl-64/s_isinf.c
index 46a7266..c0ad545 100644
--- a/sysdeps/ieee754/dbl-64/s_isinf.c
+++ b/sysdeps/ieee754/dbl-64/s_isinf.c
@@ -15,6 +15,7 @@ static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $";
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 int
 __isinf (double x)
@@ -28,6 +29,8 @@ __isinf (double x)
 hidden_def (__isinf)
 weak_alias (__isinf, isinf)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+# endif
 weak_alias (__isinf, isinfl)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/s_isnan.c b/sysdeps/ieee754/dbl-64/s_isnan.c
index 5d9f31b..2174d98 100644
--- a/sysdeps/ieee754/dbl-64/s_isnan.c
+++ b/sysdeps/ieee754/dbl-64/s_isnan.c
@@ -21,6 +21,7 @@ static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $";
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 #undef __isnan
 int
@@ -36,6 +37,8 @@ __isnan (double x)
 hidden_def (__isnan)
 weak_alias (__isnan, isnan)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+# endif
 weak_alias (__isnan, isnanl)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
index a155a5e..c8e2a7c 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
@@ -16,6 +16,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 #include <stdint.h>
 
 #undef __finite
@@ -29,6 +30,13 @@ __finite(double x)
 hidden_def (__finite)
 weak_alias (__finite, finite)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
+# ifdef LDBL_CLASSIFY_COMPAT
+#  if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+#  endif
+#  if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_0);
+#  endif
+# endif
 weak_alias (__finite, finitel)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
index 163fc31..951fb73 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
@@ -11,6 +11,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 int
 __isinf (double x)
@@ -25,6 +26,8 @@ __isinf (double x)
 hidden_def (__isinf)
 weak_alias (__isinf, isinf)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+# endif
 weak_alias (__isinf, isinfl)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
index e80b84c..bcff9e3 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
@@ -17,6 +17,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 #include <stdint.h>
 
 #undef __isnan
@@ -31,6 +32,8 @@ int __isnan(double x)
 hidden_def (__isnan)
 weak_alias (__isnan, isnan)
 #ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+# endif
 weak_alias (__isnan, isnanl)
 #endif
diff --git a/sysdeps/m68k/coldfire/fpu/math_private.h b/sysdeps/m68k/coldfire/fpu/math_private.h
new file mode 100644
index 0000000..d306a50
--- /dev/null
+++ b/sysdeps/m68k/coldfire/fpu/math_private.h
@@ -0,0 +1,10 @@
+#ifndef COLDFIRE_MATH_PRIVATE_H
+#define COLDFIRE_MATH_PRIVATE_H 1
+
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
+#include_next <math_private.h>
+
+#endif
diff --git a/sysdeps/microblaze/math_private.h b/sysdeps/microblaze/math_private.h
index 73e59df..d82e8bf 100644
--- a/sysdeps/microblaze/math_private.h
+++ b/sysdeps/microblaze/math_private.h
@@ -26,6 +26,10 @@
 #define libc_feholdexcept_setround(env, exc)   ({ (void) (env); 0; })
 #define libc_feupdateenv_test(env, exc)        ({ (void) (env); 0; })
 
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
 #include_next <math_private.h>
 
 #define feraiseexcept(excepts)                 ({ 0; })
diff --git a/sysdeps/mips/math_private.h b/sysdeps/mips/math_private.h
index 2f54424..27de714 100644
--- a/sysdeps/mips/math_private.h
+++ b/sysdeps/mips/math_private.h
@@ -248,6 +248,10 @@ libc_feholdsetround_mips_ctx (struct rm_ctx *ctx, int round)
 
 #endif
 
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
 #include_next <math_private.h>
 
 #endif
diff --git a/sysdeps/nios2/math_private.h b/sysdeps/nios2/math_private.h
index a32579f..373da2a 100644
--- a/sysdeps/nios2/math_private.h
+++ b/sysdeps/nios2/math_private.h
@@ -25,6 +25,10 @@
 #define libc_feholdexcept_setround(env, exc)   ({ (void) (env); 0; })
 #define libc_feupdateenv_test(env, exc)        ({ (void) (env); 0; })
 
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
 #include_next <math_private.h>
 
 #define feraiseexcept(excepts)                 ({ 0; })
diff --git a/sysdeps/sh/math_private.h b/sysdeps/sh/math_private.h
new file mode 100644
index 0000000..d13f2d4
--- /dev/null
+++ b/sysdeps/sh/math_private.h
@@ -0,0 +1,10 @@
+#ifndef SH_MATH_PRIVATE_H
+#define SH_MATH_PRIVATE_H 1
+
+/* Enable __finitel, __isinfl, and __isnanl for binary compatibility
+   when built without long double support. */
+#define LDBL_CLASSIFY_COMPAT 1
+
+#include_next <math_private.h>
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
index 152adb0..ffcc4a0 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
@@ -182,7 +182,6 @@ GLIBC_2.12 __fgetws_chk F
 GLIBC_2.12 __fgetws_unlocked_chk F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __flbf F
 GLIBC_2.12 __fork F
 GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@ GLIBC_2.12 __isdigit_l F
 GLIBC_2.12 __isgraph_l F
 GLIBC_2.12 __isinf F
 GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
 GLIBC_2.12 __islower_l F
 GLIBC_2.12 __isnan F
 GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
 GLIBC_2.12 __isoc99_fscanf F
 GLIBC_2.12 __isoc99_fwscanf F
 GLIBC_2.12 __isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
index 9ba58e2..18b8d00 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
@@ -5,7 +5,6 @@ GLIBC_2.12 __clog10f F
 GLIBC_2.12 __clog10l F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __fpclassify F
 GLIBC_2.12 __fpclassifyf F
 GLIBC_2.12 __signbit F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
index f8377a0..a66e8ec 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
@@ -182,7 +182,6 @@ GLIBC_2.12 __fgetws_chk F
 GLIBC_2.12 __fgetws_unlocked_chk F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __flbf F
 GLIBC_2.12 __fork F
 GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@ GLIBC_2.12 __isdigit_l F
 GLIBC_2.12 __isgraph_l F
 GLIBC_2.12 __isinf F
 GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
 GLIBC_2.12 __islower_l F
 GLIBC_2.12 __isnan F
 GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
 GLIBC_2.12 __isoc99_fscanf F
 GLIBC_2.12 __isoc99_fwscanf F
 GLIBC_2.12 __isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
index 9ba58e2..18b8d00 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
@@ -5,7 +5,6 @@ GLIBC_2.12 __clog10f F
 GLIBC_2.12 __clog10l F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __fpclassify F
 GLIBC_2.12 __fpclassifyf F
 GLIBC_2.12 __signbit F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
index 152adb0..ffcc4a0 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
@@ -182,7 +182,6 @@ GLIBC_2.12 __fgetws_chk F
 GLIBC_2.12 __fgetws_unlocked_chk F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __flbf F
 GLIBC_2.12 __fork F
 GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@ GLIBC_2.12 __isdigit_l F
 GLIBC_2.12 __isgraph_l F
 GLIBC_2.12 __isinf F
 GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
 GLIBC_2.12 __islower_l F
 GLIBC_2.12 __isnan F
 GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
 GLIBC_2.12 __isoc99_fscanf F
 GLIBC_2.12 __isoc99_fwscanf F
 GLIBC_2.12 __isoc99_scanf F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
index 9ba58e2..18b8d00 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
@@ -5,7 +5,6 @@ GLIBC_2.12 __clog10f F
 GLIBC_2.12 __clog10l F
 GLIBC_2.12 __finite F
 GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
 GLIBC_2.12 __fpclassify F
 GLIBC_2.12 __fpclassifyf F
 GLIBC_2.12 __signbit F

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   28 ++++++++++++++++++++
 sysdeps/arm/math_private.h                         |    4 +++
 sysdeps/ieee754/dbl-64/s_finite.c                  |   10 ++++++-
 sysdeps/ieee754/dbl-64/s_isinf.c                   |    5 +++-
 sysdeps/ieee754/dbl-64/s_isnan.c                   |    5 +++-
 sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c      |   10 ++++++-
 sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c       |    5 +++-
 sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c       |    5 +++-
 sysdeps/m68k/coldfire/fpu/math_private.h           |   10 +++++++
 sysdeps/microblaze/math_private.h                  |    4 +++
 sysdeps/mips/math_private.h                        |    4 +++
 sysdeps/nios2/math_private.h                       |    4 +++
 sysdeps/sh/math_private.h                          |   10 +++++++
 .../sysv/linux/tile/tilegx/tilegx32/libc.abilist   |    3 --
 .../sysv/linux/tile/tilegx/tilegx32/libm.abilist   |    1 -
 .../sysv/linux/tile/tilegx/tilegx64/libc.abilist   |    3 --
 .../sysv/linux/tile/tilegx/tilegx64/libm.abilist   |    1 -
 sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist  |    3 --
 sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist  |    1 -
 19 files changed, 98 insertions(+), 18 deletions(-)
 create mode 100644 sysdeps/m68k/coldfire/fpu/math_private.h
 create mode 100644 sysdeps/sh/math_private.h


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list