Skip to content

Commit

Permalink
[compiler-rt][test] Add shared_unwind requirement
Browse files Browse the repository at this point in the history
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
  • Loading branch information
PiJoules committed Oct 6, 2021
1 parent 8d64314 commit 77d5ccd
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 0 deletions.
1 change: 1 addition & 0 deletions compiler-rt/CMakeLists.txt
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions compiler-rt/test/lit.common.cfg.py
Expand Up @@ -366,6 +366,9 @@ def get_ios_commands_dir():
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')

Expand Down
1 change: 1 addition & 0 deletions compiler-rt/test/lit.common.configured.in
Expand Up @@ -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@)
Expand Down
5 changes: 5 additions & 0 deletions compiler-rt/test/tsan/Linux/check_memcpy.c
Expand Up @@ -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

Expand Down

0 comments on commit 77d5ccd

Please sign in to comment.