https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78979
Bug ID: 78979 Summary: 27_io/headers/cstdio/functions_neg.cc FAILs on Solaris Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: redi at gcc dot gnu.org Target Milestone: --- Host: *-*-solaris2.* Target: *-*-solaris2.* Build: *-*-solaris2.* The 27_io/headers/cstdio/functions_neg.cc testcase started to FAIL on Solaris between between 20160930 and 20161003: FAIL: 27_io/headers/cstdio/functions_neg.cc (test for errors, line 24) This is using std::gets; // { dg-error "has not been declared" } obviously caused by 2016-09-30 Jonathan Wakely <jwak...@redhat.com> PR libstdc++/77795 * acinclude.m4 (GLIBCXX_CHECK_STDIO_PROTO): Use -std=gnu++11 to check for gets. * config.h.in: Regenerate. * configure: Regenerate. * include/c_global/cstdio [!_GLIBCXX_HAVE_GETS] (gets): Only declare for C++98 and C++11. * include/c_std/cstdio [!_GLIBCXX_HAVE_GETS] (gets): Likewise. * testsuite/27_io/headers/cstdio/functions_neg.cc: New test. Ultimately, this happens because config/sol2.h (TARGET_OS_CPP_BUILTINS) always has if (c_dialect_cxx ()) \ { \ builtin_define ("__STDC_VERSION__=199901L");\ so enabling the gets decl in <iso/stdio_iso.h>, which is #if __STDC_VERSION__ < 201112L extern char *gets(char *) __ATTR_DEPRECATED; #endif even for C++11 mode. The gcc-5 and gcc-6 branches are also affected. I'm uncertain how best to proceed. Conditionalizing the __STDC_VERSION__ define based on cxx_dialect might be an option... Rainer