PR libstdc++/84442 if _Exit isn't declared then use _exit instead
authorJonathan Wakely <jwakely@redhat.com>
Wed, 18 Apr 2018 11:15:38 +0000 (12:15 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 18 Apr 2018 11:15:38 +0000 (12:15 +0100)
PR libstdc++/84442
* testsuite/30_threads/thread/cons/terminate.cc
[!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.

From-SVN: r259463

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc

index e407fc66ea750d3519c2076716129fd846897089..fb3abb902683f6953a82dd1d1d4ef1741da65437 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/84442
+       * testsuite/30_threads/thread/cons/terminate.cc
+       [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
+
 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
 
        PR jit/85384
index 63c3b084c5c632bf155cdc8e399efc1361880445..cb6fc3eb120babc0e0b6bbe84fe9c967e39baaca 100644 (file)
 #include <thread>
 #include <exception>
 #include <cstdlib>
+#if !_GLIBCXX_USE_C99_STDLIB && defined _GLIBCXX_HAVE_UNISTD_H
+# include <unistd.h>
+#endif
 
 void handle_terminate()
 {
+#if _GLIBCXX_USE_C99_STDLIB
   std::_Exit(0);
+#elif defined _GLIBCXX_HAVE_UNISTD_H
+  _exit(0);
+#else
+  std::exit(0);
+#endif
 }
 
 void f() { throw 1; }
@@ -38,7 +47,9 @@ test01()
 {
   std::set_terminate(handle_terminate);
   std::thread t(f);
+  // This should call the terminate handler and exit with zero status:
   t.join();
+  // Should not reach here:
   std::abort();
 }