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
相关产品推荐
相关产品推荐

