Skip to content

llvm Linux premerge builders are failing ninja check-compiler-rt on #143610

Open
@gburgessiv

Description

@gburgessiv

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions