summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2015-08-13 14:21:03 +0000
committerEd Maste <emaste@freebsd.org>2015-08-13 14:21:03 +0000
commitef766a7e7096d37a4c2d83d9f778c95eac9e8564 (patch)
tree42df68fe0144840a4cd2d88391acec74f24877ad
parent76050da17ee887aa269d9aeef8e11a657cf9d335 (diff)
downloadbcm5719-llvm-ef766a7e7096d37a4c2d83d9f778c95eac9e8564.tar.gz
bcm5719-llvm-ef766a7e7096d37a4c2d83d9f778c95eac9e8564.zip
Enable zero-cost exceptions on non-Apple arm64 platforms
Use the canonical __aarch64__ predefined macro for 64-bit ARM. Apple- specific cases are left as __arm64__. Also add an #error for unsupported architectures to catch this sort of case in the future. Differential Revision: http://reviews.llvm.org/D12005 llvm-svn: 244893
-rw-r--r--libunwind/src/config.h3
-rw-r--r--libunwind/src/libunwind.cpp4
2 files changed, 5 insertions, 2 deletions
diff --git a/libunwind/src/config.h b/libunwind/src/config.h
index c9ec087a7ea..9b246347a85 100644
--- a/libunwind/src/config.h
+++ b/libunwind/src/config.h
@@ -72,7 +72,8 @@
#define _LIBUNWIND_BUILD_ZERO_COST_APIS (defined(__i386__) || \
defined(__x86_64__) || \
- defined(__arm__))
+ defined(__arm__) || \
+ defined(__aarch64__))
#define _LIBUNWIND_BUILD_SJLJ_APIS 0
#define _LIBUNWIND_SUPPORT_FRAME_APIS (defined(__i386__) || \
defined(__x86_64__))
diff --git a/libunwind/src/libunwind.cpp b/libunwind/src/libunwind.cpp
index 9a16e4868b3..c408e060729 100644
--- a/libunwind/src/libunwind.cpp
+++ b/libunwind/src/libunwind.cpp
@@ -58,12 +58,14 @@ _LIBUNWIND_EXPORT int unw_init_local(unw_cursor_t *cursor,
#elif defined(__ppc__)
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_ppc>(
context, LocalAddressSpace::sThisAddressSpace);
-#elif defined(__arm64__)
+#elif defined(__arm64__) || defined(__aarch64__)
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_arm64>(
context, LocalAddressSpace::sThisAddressSpace);
#elif _LIBUNWIND_ARM_EHABI
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_arm>(
context, LocalAddressSpace::sThisAddressSpace);
+#else
+#error Architecture not supported
#endif
AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
co->setInfoBasedOnIPRegister();
OpenPOWER on IntegriCloud