Reland "Enable `-funwind-tables` flag when building libunwind"
Summary:
Relands https://reviews.llvm.org/D70815.
The original commit set `CMAKE_TRY_COMPILE_TARGET_TYPE` to
`STATIC_LIBRARY` globally in libunwind/CMakeLists.txt, which effectively
disabled the linking step in CMake checks.
This broke some builds (see 938c70b86c7d2165f8c28d5700e9c1ac1263307e).
Here we set CMAKE_TRY_COMPILE_TARGET_TYPE to
STATIC_LIBRARY only when checking for presence of the `-funwind-tables`
flag, and then set it back to the original value so it doesn't affect
other checks.
Reviewers: mstorsjo, jfb
Subscribers: mgorny, christof, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D71117
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 57fc8ecdbaa7fbb1a13907ca3f7a3cb9f9459d27
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index d902e3e..40d4acd 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -16,6 +16,7 @@
pythonize_bool(LIBUNWIND_ENABLE_SHARED)
pythonize_bool(LIBUNWIND_ENABLE_THREADS)
pythonize_bool(LIBUNWIND_ENABLE_EXCEPTIONS)
+pythonize_bool(LIBUNWIND_USES_ARM_EHABI)
pythonize_bool(LIBUNWIND_USE_COMPILER_RT)
pythonize_bool(LIBUNWIND_BUILD_EXTERNAL_THREAD_LIBRARY)
set(LIBUNWIND_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
diff --git a/test/libunwind/test/config.py b/test/libunwind/test/config.py
index 05e3f3c..41ca3f9 100644
--- a/test/libunwind/test/config.py
+++ b/test/libunwind/test/config.py
@@ -37,6 +37,8 @@
super(Configuration, self).configure_features()
if not self.get_lit_bool('enable_exceptions', True):
self.config.available_features.add('libcxxabi-no-exceptions')
+ if self.get_lit_bool('arm_ehabi', False):
+ self.config.available_features.add('libunwind-arm-ehabi')
def configure_compile_flags(self):
self.cxx.compile_flags += ['-DLIBUNWIND_NO_TIMER']
@@ -66,3 +68,11 @@
def configure_compile_flags_rtti(self):
pass
+
+ def configure_link_flags_cxx_library(self):
+ # libunwind tests should not link with libc++
+ pass
+
+ def configure_link_flags_abi_library(self):
+ # libunwind tests should not link with libc++abi
+ pass
diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in
index 34da72a..37f90a9 100644
--- a/test/lit.site.cfg.in
+++ b/test/lit.site.cfg.in
@@ -19,6 +19,7 @@
config.libunwind_shared = @LIBUNWIND_ENABLE_SHARED@
config.enable_shared = @LIBCXX_ENABLE_SHARED@
config.enable_exceptions = @LIBUNWIND_ENABLE_EXCEPTIONS@
+config.arm_ehabi = @LIBUNWIND_USES_ARM_EHABI@
config.host_triple = "@LLVM_HOST_TRIPLE@"
config.target_triple = "@TARGET_TRIPLE@"
config.use_target = bool("@LIBUNWIND_TARGET_TRIPLE@")
diff --git a/test/signal_frame.pass.cpp b/test/signal_frame.pass.cpp
index a6f3f48..a899461 100644
--- a/test/signal_frame.pass.cpp
+++ b/test/signal_frame.pass.cpp
@@ -9,6 +9,8 @@
// Ensure that functions marked as signal frames are reported as such.
+// UNSUPPORTED: libunwind-arm-ehabi
+
#include <assert.h>
#include <stdlib.h>
#include <libunwind.h>
@@ -20,9 +22,7 @@
unw_getcontext(&uc);
unw_init_local(&cursor, &uc);
assert(unw_step(&cursor) > 0);
-#if !defined(_LIBUNWIND_ARM_EHABI)
assert(unw_is_signal_frame(&cursor));
-#endif
}
int main() {