summaryrefslogtreecommitdiffstats
path: root/libcxxabi/src
diff options
context:
space:
mode:
Diffstat (limited to 'libcxxabi/src')
-rw-r--r--libcxxabi/src/cxa_unexpected.cpp27
-rw-r--r--libcxxabi/src/private_typeinfo.cpp6
-rw-r--r--libcxxabi/src/private_typeinfo.h4
-rw-r--r--libcxxabi/src/temporary.cpp21
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
OpenPOWER on IntegriCloud