This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.26-544-gd6c064e


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  d6c064e914cba3277d852c9fa27db53f0059ff8c (commit)
      from  645ac9aaf89e3311949828546df6334322f48933 (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=d6c064e914cba3277d852c9fa27db53f0059ff8c

commit d6c064e914cba3277d852c9fa27db53f0059ff8c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Oct 9 14:58:34 2017 +0100

    Ensure C99 and C11 interfaces are available for C++ [BZ #21326]
    
    This patch ensures that the C99 and C11 features required by C++ are
    defined according to the value of the __cplusplus macro, and not just
    because G++ always defines _GNU_SOURCE.  This will allow G++ to stop
    defining _GNU_SOURCE some day, without causing the C99 and C11
    interfaces to disappear for C++ programs.
    
    	[BZ #21326]
    	* include/features.h [__cplusplus >= 201103] (__USE_ISOC99): Define.
    	[__cplusplus >= 201703] (__USE_ISOCXX17, __USE_ISOC11): Define.
    	* math/Makefile (test-math-cxx11): New test.
    	* math/test-math-cxx11.cc: New file.

diff --git a/ChangeLog b/ChangeLog
index da396ff..876f5e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2017-10-09  Jonathan Wakely  <jwakely@redhat.com>
+
+	[BZ #21326]
+	* include/features.h [__cplusplus >= 201703] (__USE_ISOC11): Define.
+	[__cplusplus >= 201103] (__USE_ISOC99): Define.
+	* math/Makefile (test-math-cxx11): New test.
+	* math/test-math-cxx11.cc: New file.
+
 2017-10-08  Christian Brauner  <christian.brauner@ubuntu.com>
 
 	* login/openpty.c (openpty): Close slave pty file descriptor on error.
diff --git a/include/features.h b/include/features.h
index c063b33..22735ec 100644
--- a/include/features.h
+++ b/include/features.h
@@ -76,6 +76,7 @@
    __USE_ISOC11		Define ISO C11 things.
    __USE_ISOC99		Define ISO C99 things.
    __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
+   __USE_ISOCXX11	Define ISO C++11 things.
    __USE_POSIX		Define IEEE Std 1003.1 things.
    __USE_POSIX2		Define IEEE Std 1003.2 things.
    __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
@@ -238,13 +239,17 @@
 # define __USE_ISOC95	1
 #endif
 
+#ifdef __cplusplus
+/* This is to enable compatibility for ISO C++17.  */
+# if __cplusplus >= 201703L
+#  define __USE_ISOC11	1
+# endif
 /* This is to enable compatibility for ISO C++11.
-
-   So far g++ does not provide a macro.  Check the temporary macro for
-   now, too.  */
-#if ((defined __cplusplus && __cplusplus >= 201103L)			      \
-     || defined __GXX_EXPERIMENTAL_CXX0X__)
-# define __USE_ISOCXX11	1
+   Check the temporary macro for now, too.  */
+# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__
+#  define __USE_ISOCXX11	1
+#  define __USE_ISOC99	1
+# endif
 #endif
 
 /* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
diff --git a/math/Makefile b/math/Makefile
index 008eeb2..d4f9e6b 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -209,7 +209,7 @@ tests-static += atest-exp atest-sincos atest-exp2
 
 ifneq (,$(CXX))
 tests += test-math-isinff test-math-iszero test-math-issignaling \
-	 test-math-iscanonical
+	 test-math-iscanonical test-math-cxx11
 endif
 
 ifneq (no,$(PERL))
@@ -354,6 +354,8 @@ CFLAGS-test-signgam-ullong-init.c = -std=c99
 CFLAGS-test-signgam-ullong-static.c = -std=c99
 CFLAGS-test-signgam-ullong-init-static.c = -std=c99
 
+CFLAGS-test-math-cxx11.cc = -std=c++11
+
 CFLAGS-test-math-isinff.cc = -std=gnu++11
 CFLAGS-test-math-iszero.cc = -std=gnu++11
 CFLAGS-test-math-issignaling.cc = -std=gnu++11
diff --git a/math/test-math-cxx11.cc b/math/test-math-cxx11.cc
new file mode 100644
index 0000000..8417cdd
--- /dev/null
+++ b/math/test-math-cxx11.cc
@@ -0,0 +1,160 @@
+/* Test C99 math functions are available in C++11 without _GNU_SOURCE.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#undef _GNU_SOURCE
+#undef _DEFAULT_SOURCE
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+// __STRICT_ANSI__ gets defined by -std=c++11 in CFLAGS
+#include <math.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+#ifdef _GNU_SOURCE
+  printf ("FAIL: _GNU_SOURCE is defined.\n");
+  return 1;
+#endif
+
+#if __cplusplus >= 201103L
+  /* Verify that C11 math functions and types are defined for C++11,
+     without _GNU_SOURCE being defined. [BZ #21326] */
+  (void) FP_INFINITE;
+  (void) FP_NAN;
+  (void) FP_NORMAL;
+  (void) FP_SUBNORMAL;
+  (void) FP_ZERO;
+  double_t d = 1.0;
+  (void) d;
+  float_t f = 1.0f;
+  (void) f;
+  (void) acosh;
+  (void) acoshf;
+  (void) acoshl;
+  (void) asinh;
+  (void) asinhf;
+  (void) asinhl;
+  (void) atanh;
+  (void) atanhf;
+  (void) atanhl;
+  (void) cbrt;
+  (void) cbrtf;
+  (void) cbrtl;
+  (void) copysign;
+  (void) copysignf;
+  (void) copysignl;
+  (void) erf;
+  (void) erff;
+  (void) erfl;
+  (void) erfc;
+  (void) erfcf;
+  (void) erfcl;
+  (void) exp2;
+  (void) exp2f;
+  (void) exp2l;
+  (void) expm1;
+  (void) expm1f;
+  (void) expm1l;
+  (void) fdim;
+  (void) fdimf;
+  (void) fdiml;
+  (void) fma;
+  (void) fmaf;
+  (void) fmal;
+  (void) fmax;
+  (void) fmaxf;
+  (void) fmaxl;
+  (void) fmin;
+  (void) fminf;
+  (void) fminl;
+  (void) hypot;
+  (void) hypotf;
+  (void) hypotl;
+  (void) ilogb;
+  (void) ilogbf;
+  (void) ilogbl;
+  (void) lgamma;
+  (void) lgammaf;
+  (void) lgammal;
+  (void) llrint;
+  (void) llrintf;
+  (void) llrintl;
+  (void) llround;
+  (void) llroundf;
+  (void) llroundl;
+  (void) log1p;
+  (void) log1pf;
+  (void) log1pl;
+  (void) log2;
+  (void) log2f;
+  (void) log2l;
+  (void) logb;
+  (void) logbf;
+  (void) logbl;
+  (void) lrint;
+  (void) lrintf;
+  (void) lrintl;
+  (void) lround;
+  (void) lroundf;
+  (void) lroundl;
+  (void) nan;
+  (void) nanf;
+  (void) nanl;
+  (void) nearbyint;
+  (void) nearbyintf;
+  (void) nearbyintl;
+  (void) nextafter;
+  (void) nextafterf;
+  (void) nextafterl;
+  (void) nexttoward;
+  (void) nexttowardf;
+  (void) nexttowardl;
+  (void) remainder;
+  (void) remainderf;
+  (void) remainderl;
+  (void) remquo;
+  (void) remquof;
+  (void) remquol;
+  (void) rint;
+  (void) rintf;
+  (void) rintl;
+  (void) round;
+  (void) roundf;
+  (void) roundl;
+  (void) scalbln;
+  (void) scalblnf;
+  (void) scalblnl;
+  (void) scalbn;
+  (void) scalbnf;
+  (void) scalbnl;
+  (void) tgamma;
+  (void) tgammaf;
+  (void) tgammal;
+  (void) trunc;
+  (void) truncf;
+  (void) truncl;
+  printf ("PASS: C11 math functions present in C++11 without _GNU_SOURCE.\n");
+#else
+  printf ("UNSUPPORTED: C++11 not enabled.\n");
+#endif
+  return 0;
+}
+
+#include <support/test-driver.c>

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

Summary of changes:
 ChangeLog               |    8 +++
 include/features.h      |   17 +++--
 math/Makefile           |    4 +-
 math/test-math-cxx11.cc |  160 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 182 insertions(+), 7 deletions(-)
 create mode 100644 math/test-math-cxx11.cc


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]