unwind: tweak inclusion ordering to work around GCC
authorSaleem Abdulrasool <compnerd@compnerd.org>
Wed, 11 Feb 2015 05:20:53 +0000 (05:20 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Wed, 11 Feb 2015 05:20:53 +0000 (05:20 +0000)
This is a slightly convoluted workaround.  GCC does not support the
__has_feature extension of clang, and this results in some issues with
static_asserts.  config.h defines static_assert as a macro with a C-specific
trickery.  This then propagates into the C++ headers included after config.h,
which are used with C++11 mode, enabling constexpr constructors.  The macro'ed
static_assert does not get treated as the static_assert builtin, and will cause
an error due to a non-empty constexpr constructor.  Tweaking the include order
permits the use of libc++ headers to build libunwind with GCC on Linux.

llvm-svn: 228809

libcxxabi/src/Unwind/Unwind-EHABI.cpp
libcxxabi/src/Unwind/libunwind.cpp

index f740674..b296ff1 100644 (file)
@@ -20,6 +20,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <type_traits>
+
 #include "config.h"
 #include "libunwind.h"
 #include "libunwind_ext.h"
index d43e5d2..f497500 100644 (file)
@@ -16,6 +16,9 @@
 #include <cstdlib> // getenv
 #endif
 #include <new>
+#include <tuple>
+#include <memory>
+#include <vector>
 
 #include "libunwind_ext.h"
 #include "config.h"