[libcxx-commits] [libcxx] [libcxxabi] [lldb] [libc++] Stop copying headers to the build directory (PR #115380)

Vitaly Buka via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jan 14 12:59:43 PST 2025


vitalybuka wrote:

> @kstoimenov @vitalybuka Could you folks show us how the sanitizer builds you run are different from the ones we already run in our CI pipeline? It would be important to align both since we often run into issues with your post-commit CI jobs failing but our pre-commit CI not catching it.

We have many of them:
1. This one is from https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh, which is strange build for `cmake -DCOMPILER_RT_ENABLE_INTERNAL_SYMBOLIZER=ON`
This build is strange, but I don't remember it breaks libc++ before. I don't think it worse having it on pre-submit.

2. Then a bunch of https://lab.llvm.org/buildbot/#/builders/sanitizer-{x86_64,aarch64}-linux-bootstrap-{asan,msan,ubsan,hwasan}/

```
/usr/bin/cmake -DLLVM_APPEND_VC_REV=OFF -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_CCACHE_BUILD=ON -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_C_COMPILER=/home/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build0/bin/clang -DCMAKE_CXX_COMPILER=/home/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build0/bin/clang++ -DLIBCXXABI_USE_LLVM_UNWINDER=OFF -DCMAKE_INSTALL_PREFIX=/home/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/libcxx_install_ubsan '-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi' -DLIBCXX_TEST_PARAMS=long_tests=False -DLIBCXX_INCLUDE_BENCHMARKS=OFF -DLLVM_USE_SANITIZER=Undefined '-DCMAKE_C_FLAGS=-fsanitize=undefined -fno-sanitize-recover=all   -fno-sanitize=vptr' '-DCMAKE_CXX_FLAGS=-fsanitize=undefined -fno-sanitize-recover=all   -fno-sanitize=vptr' /home/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/llvm/../runtimes--
```

These must be very close to what libc++ have in CI.
Main diff is that we repeat sanitizers in -DCMAKE_CXX_FLAGS.

The most important part of this build is instrumented libc++ used  for 2nd stage clang build. But it's very slow. I don't expect we can afford this on pre-commit CI.

3. For some sanitizers there is nested libcxx build https://github.com/search?q=repo%3Allvm%2Fllvm-project%20add_custom_libcxx&type=code
correctly configured "check-compiler-rt" should cover them. I suspect you don't have these on pre-commit, maybe it worse having them.

https://github.com/llvm/llvm-project/pull/115380


More information about the libcxx-commits mailing list