diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-02 07:13:55 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-02 07:13:55 +0000 |
commit | b4eb4a64c568dae18961e4b58f846bb039755bb2 (patch) | |
tree | e985560be9110d458283492f3000892e803d40a1 | |
parent | 627a008abff2fa946d47e37bebf56af1f19b656b (diff) | |
download | gcc-b4eb4a64c568dae18961e4b58f846bb039755bb2.tar.gz |
2012-03-01 Benjamin Kosnik <bkoz@redhat.com>
Ramana Radhakrishnan <ramana@gcc.gnu.org>
PR libstdc++/51785
* acinclude.m4 (GLIBCXX_CHECK_STDIO_PROTO): New.
* configure.ac: Call it.
* configure: Regenerate.
* config.h.in: Same.
* config/os/gnu-linux/os_defines.h: Conditionally undefine
_GLIBCXX_HAVE_GETS.
* include/c_global/cstdio: Conditionally declare deprecated gets.
* include/c_std/cstdio: Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184774 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 29 | ||||
-rw-r--r-- | libstdc++-v3/config.h.in | 3 | ||||
-rw-r--r-- | libstdc++-v3/config/os/gnu-linux/os_defines.h | 9 | ||||
-rwxr-xr-x | libstdc++-v3/configure | 50 | ||||
-rw-r--r-- | libstdc++-v3/configure.ac | 1 | ||||
-rw-r--r-- | libstdc++-v3/include/c_global/cstdio | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/c_std/cstdio | 6 |
8 files changed, 114 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 112ac3d170f..dba9a79bedf 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2012-03-01 Benjamin Kosnik <bkoz@redhat.com> + Ramana Radhakrishnan <ramana@gcc.gnu.org> + + PR libstdc++/51785 + * acinclude.m4 (GLIBCXX_CHECK_STDIO_PROTO): New. + * configure.ac: Call it. + * configure: Regenerate. + * config.h.in: Same. + * config/os/gnu-linux/os_defines.h: Conditionally undefine + _GLIBCXX_HAVE_GETS. + * include/c_global/cstdio: Conditionally declare deprecated gets. + * include/c_std/cstdio: Same. + 2012-03-01 Michael Spertus <mike_spertus@symantec.com> * include/tr2/type_traits (typelist): To __reflection_typelist. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index fe37a91a397..56711c06475 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1809,6 +1809,35 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_PROTO], [ ]) dnl +dnl Check whether required C++ overloads are present in <stdio.h>. +dnl +AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + AC_MSG_CHECKING([for gets declaration]) + AC_CACHE_VAL(glibcxx_cv_gets, [ + AC_COMPILE_IFELSE([AC_LANG_SOURCE( + [#include <stdio.h> + namespace test + { + using ::gets; + } + ])], + [glibcxx_cv_gets=yes], + [glibcxx_cv_gets=no] + )]) + + if test $glibcxx_cv_gets = yes; then + AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.]) + fi + AC_MSG_RESULT($glibcxx_cv_gets) + + AC_LANG_RESTORE +]) + +dnl dnl Check whether macros, etc are present for <system_error> dnl AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [ diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 378ddabb3f2..4dea92b6d14 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -171,6 +171,9 @@ /* Define if _Unwind_GetIPInfo is available. */ #undef HAVE_GETIPINFO +/* Define if gets is available in <stdio.h>. */ +#undef HAVE_GETS + /* Define to 1 if you have the `hypot' function. */ #undef HAVE_HYPOT diff --git a/libstdc++-v3/config/os/gnu-linux/os_defines.h b/libstdc++-v3/config/os/gnu-linux/os_defines.h index c788cb0710d..c4aa305487d 100644 --- a/libstdc++-v3/config/os/gnu-linux/os_defines.h +++ b/libstdc++-v3/config/os/gnu-linux/os_defines.h @@ -1,6 +1,6 @@ // Specific definitions for GNU/Linux -*- C++ -*- -// Copyright (C) 2000, 2001, 2002, 2003, 2009, 2010 +// Copyright (C) 2000, 2001, 2002, 2003, 2009, 2010, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -39,4 +39,11 @@ #include <features.h> +// Provide a declaration for the possibly deprecated gets function, as +// glibc 2.15 and later does not declare gets for ISO C11 when +// __GNU_SOURCE is defined. +#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE) +# undef _GLIBCXX_HAVE_GETS +#endif + #endif diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index d3444e05099..9e5731f8c55 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -17415,6 +17415,56 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gets declaration" >&5 +$as_echo_n "checking for gets declaration... " >&6; } + if test "${glibcxx_cv_gets+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> + namespace test + { + using ::gets; + } + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_gets=yes +else + glibcxx_cv_gets=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + + if test $glibcxx_cv_gets = yes; then + +$as_echo "#define HAVE_GETS 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_gets" >&5 +$as_echo "$glibcxx_cv_gets" >&6; } + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOWNERDEAD" >&5 $as_echo_n "checking for EOWNERDEAD... " >&6; } if test "${glibcxx_cv_system_error1+set}" = set; then : diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 49de141be7b..f04563ea758 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -136,6 +136,7 @@ GLIBCXX_ENABLE_WERROR([yes]) # Checks for operating systems support that doesn't require linking. GLIBCXX_CHECK_MATH_PROTO GLIBCXX_CHECK_STDLIB_PROTO +GLIBCXX_CHECK_STDIO_PROTO GLIBCXX_CHECK_SYSTEM_ERROR # For the streamoff typedef. diff --git a/libstdc++-v3/include/c_global/cstdio b/libstdc++-v3/include/c_global/cstdio index 049704d83b9..d11743a349d 100644 --- a/libstdc++-v3/include/c_global/cstdio +++ b/libstdc++-v3/include/c_global/cstdio @@ -1,7 +1,7 @@ // -*- C++ -*- forwarding header. // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -// 2006, 2007, 2008, 2009, 2010 +// 2006, 2007, 2008, 2009, 2010, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -46,6 +46,10 @@ #ifndef _GLIBCXX_CSTDIO #define _GLIBCXX_CSTDIO 1 +#ifndef _GLIBCXX_HAVE_GETS +extern "C" extern char* gets (char* __s) __attribute__((deprecated)); +#endif + // Get rid of those macros defined in <stdio.h> in lieu of real functions. #undef clearerr #undef fclose @@ -67,7 +71,6 @@ #undef ftell #undef fwrite #undef getc -#undef getchar #undef gets #undef perror #undef printf diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio index 510f599d876..1588fc9e55b 100644 --- a/libstdc++-v3/include/c_std/cstdio +++ b/libstdc++-v3/include/c_std/cstdio @@ -1,7 +1,7 @@ // -*- C++ -*- forwarding header. // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -// 2009, 2010 Free Software Foundation, Inc. +// 2009, 2010, 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -45,6 +45,10 @@ #include <bits/c++config.h> #include <stdio.h> +#ifndef _GLIBCXX_HAVE_GETS +extern "C" extern char* gets (char* __s) __attribute__((deprecated)); +#endif + // Get rid of those macros defined in <stdio.h> in lieu of real functions. #undef clearerr #undef fclose |