hctim added a comment. In D127812#4011372 <https://reviews.llvm.org/D127812#4011372>, @ilinpv wrote:
> Regular builds works fine for me, pthreads located here > "/lib/x86_64-linux-gnu/libpthread.so" > "/usr/lib/x86_64-linux-gnu/libpthread.so". Enabling > "-DLLVM_USE_SANITIZER=Memory" resulted in many "WARNING: MemorySanitizer: > use-of-uninitialized-value" on tblgen like: > > cd /data/ReleasesToCommit/llvm-project/build && > /data/ReleasesToCommit/llvm-project/build/bin/llvm-tblgen > -gen-intrinsic-enums -intrinsic-prefix=s390 -I > /data/ReleasesToCommit/llvm-project/llvm/include/llvm/IR > -I/data/ReleasesToCommit/llvm-project/build/include > -I/data/ReleasesToCommit/llvm-project/llvm/include > /data/ReleasesToCommit/llvm-project/llvm/include/llvm/IR/Intrinsics.td > --write-if-changed -o include/llvm/IR/IntrinsicsS390.h -d > include/llvm/IR/IntrinsicsS390.h.d > [build] ==2441251==WARNING: MemorySanitizer: use-of-uninitialized-value Yeah that's a false-positive because of bad-ordering. MSan is much tricker because it requires an instrumented libcxx. If you can't use the buildscript, an MVP for the right ordering should be something like: 1. Build a new clang. $ cd /tmp/1/ $ cmake \ -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lld" \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_USE_LINKER=lld \ -DCMAKE_C_FLAGS="-Wall" \ -DCMAKE_CXX_FLAGS="-Wall" \ /path/to/llvm/llvm $ ninja clang lld compiler-rt llvm-symbolizer 2. Build a sanitizer libcxx. $ cd /tmp/2 $ cmake \ -DCMAKE_C_COMPILER=/tmp/1/bin/clang \ -DCMAKE_CXX_COMPILER=/tmp/1/bin/clang++ \ -GNinja \ -DLLVM_USE_SANITIZER=Memory \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_ENABLE_RUNTIMES="'libcxx;libcxxabi'" \ -DLLVM_USE_LINKER="'lld'" \ /path/to/llvm/runtimes/ # <-------- Make sure this is *runtimes*, not llvm. $ ninja cxx cxxabi 3. Build a msan-ified clang, and use the libcxx from step 2. $ cd /tmp/3 $ cat .cmake_script.sh #!/bin/bash -e LDFLAGS="-lc++abi" LDFLAGS="$LDFLAGS -Wl,--rpath=/tmp/2/lib" # <---- use the instrumented libcxx from step 2 LDFLAGS="$LDFLAGS -L/tmp/2/lib" CFLAGS="$LDFLAGS" CFLAGS="$CFLAGS -fsanitize=memory" CFLAGS="$CFLAGS -nostdinc++" CFLAGS="$CFLAGS -isystem /tmp/2/include" # <---- use the instrumented libcxx from step 2 CFLAGS="$CFLAGS -isystem /tmp/2/include/c++/v1" CFLAGS="$CFLAGS -w" CFLAGS="$CFLAGS -fsanitize-memory-use-after-dtor -fsanitize-memory-param-retval" USE_SANITIZER="Memory" # USE_SANITIZER="MemoryWithOrigins" # <-------------------+-- uncomment these and comment the USE_SANITIZER="Memory" above to get track-origins. # CFLAGS="$CFLAGS -fsanitize-memory-track-origins=2" # <--+ cmake \ -DCMAKE_C_COMPILER=/tmp/1/bin/clang \ -DCMAKE_CXX_COMPILER=/tmp/1/bin/clang++ \ -DLLVM_ENABLE_LIBCXX=ON \ -GNinja \ -DLLVM_USE_SANITIZER="$USE_SANITIZER" \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DCMAKE_CXX_FLAGS="$CFLAGS" \ -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS" \ -DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" \ -DLLVM_USE_LINKER="lld" \ /path/to/llvm/llvm $ . .cmake_script.sh $ ninja clang lld $ ninja check-clang check-llvm # <----- finally, run your tests Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127812/new/ https://reviews.llvm.org/D127812 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits