You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

aarch64架构下LLVM16/17调用llvm::MemoryBuffer::getFile触发段错误

问题:LLVM 16/17在AArch64(Kunpeng920)上调用MemoryBuffer::getFile触发段错误

我运行如下代码:

#include <llvm/Bitcode/BitcodeReader.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/ExecutionEngine/Orc/LLJIT.h>
#include <llvm/ExecutionEngine/Orc/ThreadSafeModule.h>

llvm::Expected<llvm::orc::ThreadSafeModule> parseIRfile(llvm::StringRef filename){
    auto Ctx = std::make_unique<llvm::LLVMContext>();
    llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> BufferOr = llvm::MemoryBuffer::getFile(filename);
    if (!BufferOr) {
        llvm::errs() << "Can not open: " << BufferOr.getError().message()
        << "\n";
        llvm::errs().flush();
        exit(EXIT_FAILURE);
    }

    llvm::MemoryBuffer *Buffer = BufferOr.get().get();
    auto ME = llvm::parseBitcodeFile(Buffer->getMemBufferRef(), *Ctx);

    return llvm::orc::ThreadSafeModule(std::move(ME.get()), std::move(Ctx));
}

int main() {
    auto TSM = parseIRfile("xxx.bc");
    return 0;
}

编译命令:

clang++-15 -g zllvm.cpp `llvm-config-15 --cxxflags --ldflags --system-libs --libs core orcjit support nativecodegen` -O3 -o zllvm.o

问题现象

  • x86-64架构:LLVM 15/16/17版本下代码均运行正常
  • Kunpeng920(Ubuntu 18.04 aarch64):LLVM15版本可正常运行,LLVM16/17版本触发段错误,错误输出如下:
Program received signal SIGSEGV, Segmentation fault.
0x0000fffff1ed6934 in llvm::MemoryBuffer::getFile(llvm::Twine const&, bool, bool, bool, std::optional<llvm::Align>) () from /usr/lib/aarch64-linux-gnu/libLLVM-16.so.1

无法定位错误原因,恳请提供技术帮助。

内容的提问来源于stack exchange,提问作者mxw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:21:06