Description
Repro (not minimized, from ${llvm_root}/build/release
):
$ cmake -S ../../llvm -B . -D'LLVM_ENABLE_PROJECTS=clang;clang-tools-extra;lld;llvm' -D'LLVM_ENABLE_RUNTIMES=compiler-rt;libcxx;libcxxabi;libunwind' -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_BUILD_EXAMPLES=ON -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DLLVM_ENABLE_LLD=ON -DCMAKE_CXX_FLAGS=-gmlt -DLLVM_CCACHE_BUILD=ON -DLIBCXX_CXX_ABI=libcxxabi -DLLDB_ENFORCE_STRICT_TEST_REQUIREMENTS=ON -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
$ ninja check-compiler-rt
This fails many tests with /usr/bin/ld: cannot find /usr/local/google/home/gbiv/misc/btrfs/llvm/tysan-stuff/build/release/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
. Indeed, this file doesn't exist. Partial listing of tests:
TypeSanitizer-x86_64 :: anon-ns.cpp
TypeSanitizer-x86_64 :: anon-same-struct.c
TypeSanitizer-x86_64 :: anon-struct.c
TypeSanitizer-x86_64 :: basic.c
TypeSanitizer-x86_64 :: char-memcpy.c
TypeSanitizer-x86_64 :: constexpr-subobject.cpp
TypeSanitizer-x86_64 :: derrived_default_constructor.cpp
TypeSanitizer-x86_64 :: global.c
TypeSanitizer-x86_64 :: ignorelist.c
TypeSanitizer-x86_64 :: inherited_member.cpp
TypeSanitizer-x86_64 :: int-long.c
TypeSanitizer-x86_64 :: preprocessor.c
TypeSanitizer-x86_64 :: print_stacktrace.c
TypeSanitizer-x86_64 :: ptr-float.c
TypeSanitizer-x86_64 :: struct-offset-different-base.cpp
TypeSanitizer-x86_64 :: struct-offset-multiple-compilation-units.cpp
TypeSanitizer-x86_64 :: struct-offset.c
TypeSanitizer-x86_64 :: struct.c
TypeSanitizer-x86_64 :: union-wr-wr.c
Example failing CI builder: https://github.com/llvm/llvm-project/actions/runs/15568239026/job/43837528051
I've tested up through 100a1d0 (~a week ago) and these fail for this reason. Since the failing command was introduced ~13h ago in #142696, I'll propose a revert of that.
From glancing at the CMakeFiles, I suspect there's a subtle misconfiguration there. Specifically, in the compiler-rt/test/tysan/CMakeLists.txt
file, I see:
set(TYSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
if(NOT COMPILER_RT_STANDALONE_BUILD)
list(APPEND TYSAN_TEST_DEPS tysan)
endif()
I suspect that on these builders, COMPILER_RT_STANDALONE_BUILD
is true, since the (necessary) tysan
dep isn't being added