[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

llvm-svn: 228363
This commit is contained in:
Dan Albert 2015-02-05 23:55:15 +00:00
parent 8ab869010f
commit f25c866ba6
8 changed files with 39 additions and 41 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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>

View File

@ -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;

View File

@ -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

View File

@ -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__

View File

@ -23,17 +23,15 @@
#include <mach-o/dyld.h>
#endif
#include "libunwind.h"
#include "AddressSpace.hpp"
#include "Registers.hpp"
#include "DwarfInstructions.hpp"
#include "CompactUnwinder.hpp"
#include "config.h"
#if LIBCXXABI_ARM_EHABI
#include "AddressSpace.hpp"
#include "CompactUnwinder.hpp"
#include "config.h"
#include "DwarfInstructions.hpp"
#include "libunwind.h"
#include "Registers.hpp"
#include "Unwind-EHABI.h"
#endif
namespace libunwind {

View File

@ -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