尝试构建使用内存清理程序检测的 libcxx 时出现 llvm 错误

问题描述 投票:0回答:1

我正在尝试解决 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++ 一起使用

我的问题是一样的 - 内存清理器指向不应该的未初始化值。

c++ memory cmake address-sanitizer libc++
1个回答
0
投票

解决方案如下:

~/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

第二部分源自 启用 MemorySanitizer 时 LLVM 构建失败

© www.soinside.com 2019 - 2024. All rights reserved.