mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-04 16:26:46 +00:00
[compiler-rt][test] Add shared_unwind requirement
When using a static libunwind, the check_memcpy.c can fail because it checks that tsan intercepted all memcpy/memmoves in the final binary. Though if the static libunwind is not instrumented, then this will fail because it may contain regular memcpy/memmoves. This adds a new REQUIRES check for ensuring that this test won't run unless a dynamic libunwind.so is provided. Differential Revision: https://reviews.llvm.org/D111194
This commit is contained in:
parent
8d64314ffe
commit
77d5ccdc6f
@ -233,6 +233,7 @@ endif()
|
||||
|
||||
option(SANITIZER_USE_STATIC_LLVM_UNWINDER
|
||||
"Use static LLVM unwinder." ${DEFAULT_SANITIZER_USE_STATIC_LLVM_UNWINDER})
|
||||
pythonize_bool(SANITIZER_USE_STATIC_LLVM_UNWINDER)
|
||||
|
||||
set(DEFAULT_SANITIZER_USE_STATIC_CXX_ABI OFF)
|
||||
if (DEFINED LIBCXXABI_ENABLE_SHARED AND NOT LIBCXXABI_ENABLE_SHARED)
|
||||
|
@ -366,6 +366,9 @@ if sanitizer_can_use_cxxabi:
|
||||
if not getattr(config, 'sanitizer_uses_static_cxxabi', False):
|
||||
config.available_features.add('shared_cxxabi')
|
||||
|
||||
if not getattr(config, 'sanitizer_uses_static_unwind', False):
|
||||
config.available_features.add('shared_unwind')
|
||||
|
||||
if config.has_lld:
|
||||
config.available_features.add('lld-available')
|
||||
|
||||
|
@ -34,6 +34,7 @@ set_default("apple_platform", "osx")
|
||||
set_default("apple_platform_min_deployment_target_flag", "-mmacosx-version-min")
|
||||
set_default("sanitizer_can_use_cxxabi", @SANITIZER_CAN_USE_CXXABI_PYBOOL@)
|
||||
set_default("sanitizer_uses_static_cxxabi", @SANITIZER_USE_STATIC_CXX_ABI_PYBOOL@)
|
||||
set_default("sanitizer_uses_static_unwind", @SANITIZER_USE_STATIC_LLVM_UNWINDER_PYBOOL@)
|
||||
set_default("has_lld", @COMPILER_RT_HAS_LLD_PYBOOL@)
|
||||
set_default("can_symbolize", @CAN_SYMBOLIZE@)
|
||||
set_default("use_lld", @COMPILER_RT_TEST_USE_LLD_PYBOOL@)
|
||||
|
@ -2,6 +2,11 @@
|
||||
// memcpy/memmove calls. It builds the binary with TSan and check's
|
||||
// its objdump.
|
||||
|
||||
// This could fail if using a static libunwind because that static libunwind
|
||||
// could be uninstrumented and contain memcpy/memmove calls not intercepted by
|
||||
// tsan.
|
||||
// REQUIRES: shared_unwind
|
||||
|
||||
// RUN: %clang_tsan -O1 %s -o %t
|
||||
// RUN: llvm-objdump -d -l %t | FileCheck %s
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user