summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-02-05 23:55:15 +0000
committerDan Albert <danalbert@google.com>2015-02-05 23:55:15 +0000
commit8414c5a5176832964a5c9789344cf39714846841 (patch)
treea412bdf45e137b9bfa8735f6bfd3d43fc2617dbf
parentda5a6b1de034870097d881d8f7ab5b77e2ed4b7f (diff)
downloadlibcxxabi-8414c5a5176832964a5c9789344cf39714846841.tar.gz
[libcxxabi] Fix -Werror build for 32-bit non-ARM.
Summary: The inclusion of Unwind-EHABI.h was insufficiently guarded (LIBCXXABI_ARM_EHABI was beign checked without ever being defined). Move the check into the header file itself, add the check to the source file, and clean up the existing checks. LIBCXXABI_ARM_EHABI didn't have a canonical defintion; it was duplicated across cxxabi.h, libunwind.h, and unwind.h. Move the definition into __cxxabi_config.h and clean up the old cruft (note: we will have to ship this header). There are also a few drive-by formatting/whitespace cleanups. Reviewers: jroelofs, thakis, compnerd Reviewed By: compnerd Subscribers: compnerd, aemerson, cfe-commits Differential Revision: http://reviews.llvm.org/D7419 git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@228363 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/__cxxabi_config.h20
-rw-r--r--include/cxxabi.h10
-rw-r--r--include/libunwind.h8
-rw-r--r--include/unwind.h10
-rw-r--r--src/Unwind/Unwind-EHABI.cpp3
-rw-r--r--src/Unwind/Unwind-EHABI.h6
-rw-r--r--src/Unwind/UnwindCursor.hpp10
-rw-r--r--src/Unwind/UnwindLevel1-gcc-ext.c9
8 files changed, 37 insertions, 39 deletions
diff --git a/include/__cxxabi_config.h b/include/__cxxabi_config.h
new file mode 100644
index 0000000..c040a06
--- /dev/null
+++ b/include/__cxxabi_config.h
@@ -0,0 +1,20 @@
+//===-------------------------- __cxxabi_config.h -------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef ____CXXABI_CONFIG_H
+#define ____CXXABI_CONFIG_H
+
+#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
+ !defined(__ARM_DWARF_EH__)
+#define LIBCXXABI_ARM_EHABI 1
+#else
+#define LIBCXXABI_ARM_EHABI 0
+#endif
+
+#endif // ____CXXABI_CONFIG_H
diff --git a/include/cxxabi.h b/include/cxxabi.h
index ae75f86..767acfe 100644
--- a/include/cxxabi.h
+++ b/include/cxxabi.h
@@ -18,17 +18,11 @@
#include <stddef.h>
#include <stdint.h>
+#include <__cxxabi_config.h>
+
#define _LIBCPPABI_VERSION 1001
#define LIBCXXABI_NORETURN __attribute__((noreturn))
-// FIXME: This is also in unwind.h and libunwind.h, can we consolidate?
-#if !defined(__USING_SJLJ_EXCEPTIONS__) && defined(__arm__) && \
- !defined(__ARM_DWARF_EH__) && !defined(__APPLE__)
-#define LIBCXXABI_ARM_EHABI 1
-#else
-#define LIBCXXABI_ARM_EHABI 0
-#endif
-
#ifdef __cplusplus
namespace std {
diff --git a/include/libunwind.h b/include/libunwind.h
index 9c69551..b0f6979 100644
--- a/include/libunwind.h
+++ b/include/libunwind.h
@@ -17,13 +17,7 @@
#include <stdint.h>
#include <stddef.h>
-// FIXME: This is also in unwind.h and cxxabi.h, can we consolidate?
-#if !defined(__USING_SJLJ_EXCEPTIONS__) && defined(__arm__) && \
- !defined(__ARM_DWARF_EH__) && !defined(__APPLE__)
-#define LIBCXXABI_ARM_EHABI 1
-#else
-#define LIBCXXABI_ARM_EHABI 0
-#endif
+#include <__cxxabi_config.h>
#ifdef __APPLE__
#include <Availability.h>
diff --git a/include/unwind.h b/include/unwind.h
index 6a265cc..3d889cf 100644
--- a/include/unwind.h
+++ b/include/unwind.h
@@ -23,13 +23,7 @@
#define LIBUNWIND_UNAVAIL
#endif
-// FIXME: This is also in cxxabi.h and libunwind.h, can we consolidate?
-#if !defined(__USING_SJLJ_EXCEPTIONS__) && defined(__arm__) && \
- !defined(__ARM_DWARF_EH__) && !defined(__APPLE__)
-#define LIBCXXABI_ARM_EHABI 1
-#else
-#define LIBCXXABI_ARM_EHABI 0
-#endif
+#include <__cxxabi_config.h>
typedef enum {
_URC_NO_REASON = 0,
@@ -208,9 +202,7 @@ extern _Unwind_VRS_Result
_Unwind_VRS_Pop(_Unwind_Context *context, _Unwind_VRS_RegClass regclass,
uint32_t discriminator,
_Unwind_VRS_DataRepresentation representation);
-#endif
-#if LIBCXXABI_ARM_EHABI
static inline uintptr_t _Unwind_GetGR(struct _Unwind_Context* context,
int index) {
uintptr_t value = 0;
diff --git a/src/Unwind/Unwind-EHABI.cpp b/src/Unwind/Unwind-EHABI.cpp
index 3211cf1..e2fced2 100644
--- a/src/Unwind/Unwind-EHABI.cpp
+++ b/src/Unwind/Unwind-EHABI.cpp
@@ -12,7 +12,7 @@
#include "Unwind-EHABI.h"
-#include <unwind.h>
+#if LIBCXXABI_ARM_EHABI
#include <stdbool.h>
#include <stdint.h>
@@ -26,7 +26,6 @@
#include "unwind.h"
#include "../private_typeinfo.h"
-#if LIBCXXABI_ARM_EHABI
namespace {
// Strange order: take words in order, but inside word, take from most to least
diff --git a/src/Unwind/Unwind-EHABI.h b/src/Unwind/Unwind-EHABI.h
index 2011a67..5a3c293 100644
--- a/src/Unwind/Unwind-EHABI.h
+++ b/src/Unwind/Unwind-EHABI.h
@@ -11,6 +11,10 @@
#ifndef __UNWIND_EHABI_H__
#define __UNWIND_EHABI_H__
+#include <__cxxabi_config.h>
+
+#if LIBCXXABI_ARM_EHABI
+
#include <stdint.h>
#include <unwind.h>
@@ -44,6 +48,6 @@ extern _Unwind_Reason_Code __aeabi_unwind_cpp_pr2(
} // extern "C"
#endif
-#endif
+#endif // LIBCXXABI_ARM_EHABI
#endif // __UNWIND_EHABI_H__
diff --git a/src/Unwind/UnwindCursor.hpp b/src/Unwind/UnwindCursor.hpp
index db6e188..b50c09e 100644
--- a/src/Unwind/UnwindCursor.hpp
+++ b/src/Unwind/UnwindCursor.hpp
@@ -23,17 +23,15 @@
#include <mach-o/dyld.h>
#endif
-#include "libunwind.h"
+#include "config.h"
#include "AddressSpace.hpp"
-#include "Registers.hpp"
-#include "DwarfInstructions.hpp"
#include "CompactUnwinder.hpp"
#include "config.h"
-
-#if LIBCXXABI_ARM_EHABI
+#include "DwarfInstructions.hpp"
+#include "libunwind.h"
+#include "Registers.hpp"
#include "Unwind-EHABI.h"
-#endif
namespace libunwind {
diff --git a/src/Unwind/UnwindLevel1-gcc-ext.c b/src/Unwind/UnwindLevel1-gcc-ext.c
index b8c70bf..4c2e9cc 100644
--- a/src/Unwind/UnwindLevel1-gcc-ext.c
+++ b/src/Unwind/UnwindLevel1-gcc-ext.c
@@ -16,14 +16,11 @@
#include <stdio.h>
#include <stdlib.h>
-#include "libunwind.h"
-#include "unwind.h"
-#include "libunwind_ext.h"
#include "config.h"
-
-#if LIBCXXABI_ARM_EHABI
+#include "libunwind_ext.h"
+#include "libunwind.h"
#include "Unwind-EHABI.h"
-#endif
+#include "unwind.h"
#if _LIBUNWIND_BUILD_ZERO_COST_APIS