eh_catch.cc (uncaught_exception, [...]): Return false or zero if the library is built...
authorFederico Lenarduzzi <federico.lenarduzzi@tallertechnologies.com>
Mon, 27 Apr 2015 21:06:17 +0000 (21:06 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 27 Apr 2015 21:06:17 +0000 (22:06 +0100)
2015-04-27  Federico Lenarduzzi  <federico.lenarduzzi@tallertechnologies.com>
    Jonathan Wakely  <jwakely@redhat.com>

* libsupc++/eh_catch.cc (uncaught_exception, uncaught_exceptions):
Return false or zero if the library is built without exceptions.
* libsupc++/eh_term_handler.cc: Disable verbose terminate handler if
the library is built without exceptions.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r222484

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_catch.cc
libstdc++-v3/libsupc++/eh_term_handler.cc

index a8f82bc..be9364c 100644 (file)
@@ -1,3 +1,11 @@
+2015-04-27  Federico Lenarduzzi  <federico.lenarduzzi@tallertechnologies.com>
+           Jonathan Wakely  <jwakely@redhat.com>
+
+       * libsupc++/eh_catch.cc (uncaught_exception, uncaught_exceptions):
+       Return false or zero if the library is built without exceptions.
+       * libsupc++/eh_term_handler.cc: Disable verbose terminate handler if
+       the library is built without exceptions.
+
 2015-04-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
 
        * config/abi/pre/gnu.ver: Fix comment.
index 723ae56..44fde79 100644 (file)
@@ -136,13 +136,21 @@ __cxxabiv1::__cxa_end_catch ()
 bool
 std::uncaught_exception() throw()
 {
+#if __cpp_exceptions
   __cxa_eh_globals *globals = __cxa_get_globals ();
   return globals->uncaughtExceptions != 0;
+#else
+  return false;
+#endif
 }
 
 int
 std::uncaught_exceptions() throw()
 {
+#if __cpp_exceptions
   __cxa_eh_globals *globals = __cxa_get_globals ();
   return globals->uncaughtExceptions;
+#else
+  return 0;
+#endif
 }
index 46acee8..0d6ea2b 100644 (file)
@@ -32,7 +32,7 @@
    --disable-libstdcxx-verbose and rebuilding the library.
    In a freestanding environment, we default to this latter approach.  */
 
-#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
+#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE && __cpp_exceptions
 /* The current installed user handler.  */
 std::terminate_handler __cxxabiv1::__terminate_handler =
        __gnu_cxx::__verbose_terminate_handler;