diff options
Diffstat (limited to 'libcxxabi/src')
-rw-r--r-- | libcxxabi/src/cxa_unexpected.cpp | 27 | ||||
-rw-r--r-- | libcxxabi/src/private_typeinfo.cpp | 6 | ||||
-rw-r--r-- | libcxxabi/src/private_typeinfo.h | 4 | ||||
-rw-r--r-- | libcxxabi/src/temporary.cpp | 21 |
4 files changed, 54 insertions, 4 deletions
diff --git a/libcxxabi/src/cxa_unexpected.cpp b/libcxxabi/src/cxa_unexpected.cpp new file mode 100644 index 00000000000..98c6a16ab59 --- /dev/null +++ b/libcxxabi/src/cxa_unexpected.cpp @@ -0,0 +1,27 @@ +//===------------------------- cxa_unexpected.cpp -------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include <exception> + +#pragma GCC visibility push(default) + +extern "C" +{ + +__attribute__((noreturn)) +void +__cxa_call_unexpected (void*) +{ + // TODO: Completely unfinished! + std::terminate(); +} + +} + +#pragma GCC visibility pop diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp index e6cafd7b00a..a09deb58eed 100644 --- a/libcxxabi/src/private_typeinfo.cpp +++ b/libcxxabi/src/private_typeinfo.cpp @@ -16,7 +16,7 @@ namespace __cxxabiv1 { -#pragma GCC visibility push(hidden) +//#pragma GCC visibility push(hidden) // __shim_type_info @@ -88,6 +88,8 @@ __pointer_to_member_type_info::~__pointer_to_member_type_info() { } +#pragma GCC visibility push(hidden) + #ifdef DEBUG void @@ -427,7 +429,7 @@ __pointer_type_info::can_catch(const __shim_type_info* thrown_type, return false; } -#pragma GCC visibility pop +//#pragma GCC visibility pop #pragma GCC visibility push(default) // __dynamic_cast diff --git a/libcxxabi/src/private_typeinfo.h b/libcxxabi/src/private_typeinfo.h index b6c875e0b04..0569243f3b9 100644 --- a/libcxxabi/src/private_typeinfo.h +++ b/libcxxabi/src/private_typeinfo.h @@ -16,7 +16,7 @@ namespace __cxxabiv1 { -#pragma GCC visibility push(hidden) +//#pragma GCC visibility push(hidden) class __shim_type_info : public std::type_info @@ -259,7 +259,7 @@ public: #endif }; -#pragma GCC visibility pop +//#pragma GCC visibility pop } // __cxxabiv1 diff --git a/libcxxabi/src/temporary.cpp b/libcxxabi/src/temporary.cpp new file mode 100644 index 00000000000..03701e19c4c --- /dev/null +++ b/libcxxabi/src/temporary.cpp @@ -0,0 +1,21 @@ +//===---------------------------- temporary.cpp ---------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#pragma GCC visibility push(default) + +extern "C" +{ + +void (*__cxa_new_handler)() = 0; +void (*__cxa_terminate_handler)() = 0; +void (*__cxa_unexpected_handler)() = 0; + +} + +#pragma GCC visibility pop |