diff options
author | Asiri Rathnayake <asiri.rathnayake@arm.com> | 2016-05-31 15:01:32 +0300 |
---|---|---|
committer | Asiri Rathnayake <asiri.rathnayake@arm.com> | 2016-05-31 15:01:32 +0300 |
commit | 57e446dafafe4609d25395c05ee3c26b05499903 (patch) | |
tree | 08a58b8d85e6744c4e7eeedcf36301a94782bef2 /libcxxabi/src/cxa_handlers.cpp | |
parent | 8f961aab25906379f84301082a899a11ad2af8f7 (diff) |
[libcxxabi] Introduce a -fno-exceptions libc++abi libary variant
Currently there is only support for a -fno-exceptions libc++ build. This is
problematic for functions such as std::terminate() which are defined in
libc++abi and using any of those functions throws away most of the benefits
of using -fno-exceptions (code-size). This patch introduces a -fno-exceptions
libc++abi build to address this issue.
This new variant of libc++abi cannot be linked against any with-exceptions
code as some symbols necessary for handling exceptions are missing in this
library.
Differential revision: http://reviews.llvm.org/D20677
Reviewers: EricWF, mclow.lists, bcraig
llvm-svn: 271267
Diffstat (limited to 'libcxxabi/src/cxa_handlers.cpp')
-rw-r--r-- | libcxxabi/src/cxa_handlers.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libcxxabi/src/cxa_handlers.cpp b/libcxxabi/src/cxa_handlers.cpp index c231b5a3ecb7..3f781313df87 100644 --- a/libcxxabi/src/cxa_handlers.cpp +++ b/libcxxabi/src/cxa_handlers.cpp @@ -61,21 +61,21 @@ __attribute__((visibility("hidden"), noreturn)) void __terminate(terminate_handler func) _NOEXCEPT { -#if __has_feature(cxx_exceptions) +#ifndef _LIBCXXABI_NO_EXCEPTIONS try { -#endif // __has_feature(cxx_exceptions) +#endif // _LIBCXXABI_NO_EXCEPTIONS func(); // handler should not return abort_message("terminate_handler unexpectedly returned"); -#if __has_feature(cxx_exceptions) +#ifndef _LIBCXXABI_NO_EXCEPTIONS } catch (...) { // handler should not throw exception abort_message("terminate_handler unexpectedly threw an exception"); } -#endif // #if __has_feature(cxx_exceptions) +#endif // _LIBCXXABI_NO_EXCEPTIONS } __attribute__((noreturn)) |