RFA: v3 PATCH to add on_quick_exit/quick_exit to std
Paolo Carlini
paolo.carlini@oracle.com
Mon Feb 11 23:44:00 GMT 2013
... this is what I committed.
Thanks,
Paolo.
/////////////////////
-------------- next part --------------
2013-02-11 Paolo Carlini <paolo.carlini@oracle.com>
* include/c_std/cstdlib (at_quick_exit, quick_exit): Do not declare.
* include/c_global/cstdlib (at_quick_exit, quick_exit): Declare only
in C++11 mode and if available in the underlying C library.
* testsuite/18_support/quick_exit/quick_exit.cc: Compile with
-std=gnu++11; check _GLIBCXX_HAVE_AT_QUICK_EXIT and
_GLIBCXX_HAVE_QUICK_EXIT.
-------------- next part --------------
Index: include/c_global/cstdlib
===================================================================
--- include/c_global/cstdlib (revision 195952)
+++ include/c_global/cstdlib (working copy)
@@ -57,8 +57,14 @@
extern "C" void abort(void) throw () _GLIBCXX_NORETURN;
extern "C" int atexit(void (*)()) throw ();
extern "C" void exit(int) throw () _GLIBCXX_NORETURN;
+#if __cplusplus >= 201103L
+# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
extern "C" int at_quick_exit(void (*)()) throw ();
+# endif
+# ifdef _GLIBCXX_HAVE_QUICK_EXIT
extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN;
+# endif
+#endif
} // namespace std
#else
@@ -69,7 +75,11 @@
#undef abort
#undef abs
#undef atexit
-#undef at_quick_exit
+#if __cplusplus >= 201103L
+# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
+# undef at_quick_exit
+# endif
+#endif
#undef atof
#undef atoi
#undef atol
@@ -86,7 +96,11 @@
#undef mbstowcs
#undef mbtowc
#undef qsort
-#undef quick_exit
+#if __cplusplus >= 201103L
+# ifdef _GLIBCXX_HAVE_QUICK_EXIT
+# undef quick_exit
+# endif
+#endif
#undef rand
#undef realloc
#undef srand
@@ -107,8 +121,10 @@
using ::abort;
using ::abs;
using ::atexit;
-#ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
+#if __cplusplus >= 201103L
+# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
using ::at_quick_exit;
+# endif
#endif
using ::atof;
using ::atoi;
@@ -128,8 +144,10 @@
using ::mbtowc;
#endif // _GLIBCXX_HAVE_MBSTATE_T
using ::qsort;
-#ifdef _GLIBCXX_HAVE_QUICK_EXIT
+#if __cplusplus >= 201103L
+# ifdef _GLIBCXX_HAVE_QUICK_EXIT
using ::quick_exit;
+# endif
#endif
using ::rand;
using ::realloc;
Index: include/c_std/cstdlib
===================================================================
--- include/c_std/cstdlib (revision 195952)
+++ include/c_std/cstdlib (working copy)
@@ -57,8 +57,6 @@
extern "C" void abort(void) throw () _GLIBCXX_NORETURN;
extern "C" int atexit(void (*)()) throw ();
extern "C" void exit(int) throw () _GLIBCXX_NORETURN;
- extern "C" int at_quick_exit(void (*)()) throw ();
- extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN;
} // namespace
#else
@@ -69,7 +67,6 @@
#undef abort
#undef abs
#undef atexit
-#undef at_quick_exit
#undef atof
#undef atoi
#undef atol
@@ -86,7 +83,6 @@
#undef mbstowcs
#undef mbtowc
#undef qsort
-#undef quick_exit
#undef rand
#undef realloc
#undef srand
@@ -107,9 +103,6 @@
using ::abort;
using ::abs;
using ::atexit;
-#ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
- using ::at_quick_exit;
-#endif
using ::atof;
using ::atoi;
using ::atol;
@@ -128,9 +121,6 @@
using ::mbtowc;
#endif // _GLIBCXX_HAVE_MBSTATE_T
using ::qsort;
-#ifdef _GLIBCXX_HAVE_QUICK_EXIT
- using ::quick_exit;
-#endif
using ::rand;
using ::realloc;
using ::srand;
Index: testsuite/18_support/quick_exit/quick_exit.cc
===================================================================
--- testsuite/18_support/quick_exit/quick_exit.cc (revision 195952)
+++ testsuite/18_support/quick_exit/quick_exit.cc (working copy)
@@ -1,5 +1,7 @@
-// 2013-02-11 Jason Merrill
-
+// { dg-options "-std=gnu++11" }
+//
+// 2013-02-11 Jason Merrill
+//
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -33,7 +35,9 @@
int main()
{
+#if defined(_GLIBCXX_HAVE_AT_QUICK_EXIT) && defined(_GLIBCXX_HAVE_QUICK_EXIT)
std::at_quick_exit (handler);
std::atexit (wrong_handler);
std::quick_exit (1);
+#endif
}
More information about the Libstdc++
mailing list