当我尝试在文件XXC上运行llvm中给出的非常简单(Hello world)传递(我的文件是传递Hello.cpp)时 (X64 OS) opt命令
opt -load ../../../Release+Asserts/lib/Hello.so -hello vv.bc > vv.txt
发出此错误
0 libLLVM-3.2svn.so 0x00007f314b0f1e52
1 libLLVM-3.2svn.so 0x00007f314b0f22b3
2 libpthread.so.0 0x00007f314a0c7340
3 libstdc++.so.6 0x00007f31499645cb std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) + 11
4 libLLVM-3.2svn.so 0x00007f314aadef1d llvm::createPrintFunctionPass(std::string const&, llvm::raw_ostream*, bool) + 77
5 libLLVM-3.2svn.so 0x00007f314aad1585 llvm::PMTopLevelManager::schedulePass(llvm::Pass*) + 37
6 opt 0x0000000000413e4f main + 4767
7 libc.so.6 0x00007f31492eeec5 __libc_start_main + 245
8 opt 0x000000000040dfca
堆栈转储:
0. Program arguments: opt -load ../../../Release+Asserts/lib/Hello.so -hello vv.bc
分段错误(核心转储)
任何建议都会令人感激。我是Linux和llvm的新手
答案 0 :(得分:1)
我发现非常有用的东西是使用verifier pass。
首先,确保基本opt
流按预期工作,并且输入文件是合法的:
opt -verify vv.bc -o out.bc
然后确保您的通行证成为合法模块:
opt -load ../../../Release+Asserts/lib/Hello.so -hello -verify vv.bc -o out.bc
如果仍然没有帮助,我会启动调试器。