我正在尝试解决 MemorySanitizer 问题@https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo。我跑:
cmake -GNinja ../llvm \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_USE_SANITIZER=MemoryWithOrigins
但出现错误:
不是一个已知项目,您是否打算将其启用为运行时libcxx
LLVM_ENABLE_RUNTIMES
如何解决?
有关初始问题的更多信息 - 在链接下: 将内存清理程序与 libstdc++ 一起使用
我的问题是一样的 - 内存清理器指向不应该的未初始化值。
解决方案如下:
~/llvm-project/llvm/CMakeList.txt
set(LLVM_DEFAULT_RUNTIMES "libcxx;libcxxabi;libunwind")
set(LLVM_SUPPORTED_RUNTIMES "libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp;llvm-libgcc;offload")
set(LLVM_ENABLE_RUNTIMES "libunwind" CACHE STRING
构建命令:
cmake -GNinja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_USE_SANITIZER=MemoryWithOrigins