diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a8f82bc1c431..be9364c4ec92 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2015-04-27 Federico Lenarduzzi + Jonathan Wakely + + * 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 * config/abi/pre/gnu.ver: Fix comment. diff --git a/libstdc++-v3/libsupc++/eh_catch.cc b/libstdc++-v3/libsupc++/eh_catch.cc index 723ae56723df..44fde7969ce1 100644 --- a/libstdc++-v3/libsupc++/eh_catch.cc +++ b/libstdc++-v3/libsupc++/eh_catch.cc @@ -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 } diff --git a/libstdc++-v3/libsupc++/eh_term_handler.cc b/libstdc++-v3/libsupc++/eh_term_handler.cc index 46acee8ce22c..0d6ea2b32163 100644 --- a/libstdc++-v3/libsupc++/eh_term_handler.cc +++ b/libstdc++-v3/libsupc++/eh_term_handler.cc @@ -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;