about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-01-06 18:11:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-01-06 18:11:50 +0000
commit8ecd6b2a1283a28bcf56cfe48099fafa412a3929 (patch)
treea1b43a7fc8170929747efa1505998dee2c2865e3
parent5e0d030065a49247b306a2b445fa7720b8ee09cb (diff)
downloadglibc-8ecd6b2a1283a28bcf56cfe48099fafa412a3929.tar.gz
glibc-8ecd6b2a1283a28bcf56cfe48099fafa412a3929.tar.xz
glibc-8ecd6b2a1283a28bcf56cfe48099fafa412a3929.zip
Fix C11 header changes for C++.
-rw-r--r--ChangeLog7
-rw-r--r--assert/assert.h4
-rw-r--r--libio/stdio.h7
-rw-r--r--wcsmbs/uchar.h4
4 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index f31cc94f75..da900aa600 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-01-06  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #13566]
+	* assert/assert.h (static_assert): Don't define for C++.
+	* libio/stdio.h (gets): Do declare for C++ <= C++11.
+	* wcsmbs/uchar.h (char16_t, char32_t): Don't typedef for C++11.
+
 2012-01-03  Ulrich Drepper  <drepper@gmail.com>
 
 	* iconv/loop.c (single loop): Fix assertion in storing of
diff --git a/assert/assert.h b/assert/assert.h
index 4022e28b55..2e3e2b568a 100644
--- a/assert/assert.h
+++ b/assert/assert.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1994-2001,2003,2004,2007,2011
+/* Copyright (C) 1991,1992,1994-2001,2003,2004,2007,2011,2012
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -115,7 +115,7 @@ __END_DECLS
 #endif /* NDEBUG.  */
 
 
-#ifdef __USE_ISOC11
+#if defined __USE_ISOC11 && !defined __cplusplus
 /* Static assertion.  Requires support in the compiler.  */
 # undef static_assert
 # define static_assert _Static_assert
diff --git a/libio/stdio.h b/libio/stdio.h
index b39202879c..d9cb573b6b 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -1,5 +1,5 @@
 /* Define ISO C stdio on top of C++ iostreams.
-   Copyright (C) 1991, 1994-2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1994-2011, 2012 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
@@ -628,13 +628,16 @@ __BEGIN_NAMESPACE_STD
 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
      __wur;
 
-#ifndef __USE_ISOC11
+#if !defined __USE_ISOC11 \
+    || (defined __cplusplus && __cplusplus <= 201103L)
 /* Get a newline-terminated string from stdin, removing the newline.
    DO NOT USE THIS FUNCTION!!  There is no limit on how much it will read.
 
    The function has been officially removed in ISO C11.  This opportunity
    is used to also remove it from the GNU feature list.  It is now only
    available when explicitly using an old ISO C, Unix, or POSIX standard.
+   GCC defines _GNU_SOURCE when building C++ code and the function is still
+   in C++11, so it is also available for C++.
 
    This function is a possible cancellation point and therefore not
    marked with __THROW.  */
diff --git a/wcsmbs/uchar.h b/wcsmbs/uchar.h
index bb5f3ba35c..706b9a243d 100644
--- a/wcsmbs/uchar.h
+++ b/wcsmbs/uchar.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011, 2012 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
@@ -40,7 +40,7 @@ __END_NAMESPACE_C99
 #endif
 
 
-#ifdef __GNUC__
+#if defined __GNUC__ && !defined __USE_ISOCXX11
 /* Define the 16-bit and 32-bit character types.  Use the information
    provided by the compiler.  */
 # if !defined __CHAR16_TYPE__ || !defined __CHAR32_TYPE__