LLVM 选择找不到函数传递
LLVM opt cannot find function pass
给定以下函数传递定义和注册:
// STL
#include <map>
#include <vector>
#include <utility>
// LLVM
#include <llvm/Pass.h>
#include <llvm/IR/LLVMContext.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/Instruction.h>
#include <llvm/IR/Instructions.h>
#include <llvm/IR/CFG.h>
#include <llvm/Support/raw_ostream.h>
#include <llvm/IR/InstIterator.h>
#include <llvm/IR/Constants.h>
// For older versions of llvm you may have to include instead:
// #include "llvm/Support/CFG.h"
// #include <llvm/Support/InstIterator.h>
using namespace llvm;
namespace {
class DefinitionPass : public FunctionPass {
public:
static char ID;
DefinitionPass() : FunctionPass(ID) {}
virtual void getAnalysisUsage(AnalysisUsage &au) const {
au.setPreservesAll();
}
virtual bool runOnFunction(Function &F) {
// TODO
errs() << "def-passn";
return false;
}
};
class FixingPass : public FunctionPass {
public:
static char ID;
FixingPass() : FunctionPass(ID){}
virtual bool runOnFunction(Function &F){
// TODO
errs() << "fix-passn";
return true;
}
};
} // namespace
char DefinitionPass::ID = 0;
char FixingPass::ID = 1;
// Pass registrations
static RegisterPass<DefinitionPass> X("defpass", "Reaching definitions pass");
static RegisterPass<FixingPass> Y("fixpass", "Fixing initialization pass");
我根据以下制作文件编译它。编译成功:
CXXFLAGS = -rdynamic $(shell llvm-config --cxxflags) -g -O0 -std=c++0x
all: p34.so
%.so: %.o
$(CXX) $(CXXFLAGS) -dylib -shared -fPIC $^ -o $@
clean:
rm -f *.o *~ *.so
然后,我使用以下方法为要分析的文件创建位码文件:
clang -O3 -emit-llvm test1.c -c -o test1.bc
并通过以下方式使用 opt:
opt -load p34.so -defpass < test1.bc > /dev/null
但是 opt 无法找到函数 pass "defpass":
opt: Unknown command line argument '-defpass'. Try: 'opt --help'
我在OSX上并使用自制安装的LLVM版本。
安博迪是否知道为什么选择找不到通行证?
.so 文件适用于 Linux/Unix。在MAC上,您应该使用p34.dylib
引用"https://github.com/banach-space/llvm-tutor" "最后,使用 opt 运行 HelloWorld(在 Linux 上使用 libHelloWorld.so,在 Mac OS 上运行 libHelloWorld.dylib(:">
相关文章:
- 编译器找不到'aligned_alloc'函数
- 在 c++ 中找不到此函数的标识符
- LLVM 选择找不到函数传递
- 找不到 #define 的函数定义
- LD 找不到生成的函数
- C++线程找不到函数作为参数(链接器)
- 为什么 std::sort 找不到合适的(静态成员)函数重载?
- Javascript 找不到使用 emscripten 编译的导出 WASM 函数
- 给定一个 3 x 3 矩阵或任何 n x n 矩阵,为什么我的以下函数找不到对角线差异?
- QObject::连接不起作用 - 使用函数语法找不到信号
- VS 2017 C++编译器在 VS 2005 中找不到匹配函数
- 找不到如何创建使用指针、字符和 for 函数组合的程序
- 这个基于范围的'for'语句需要一个合适的函数,但找不到任何函数
- im调用函数时找不到标识符?
- 找不到使用 bitset 实例化模板函数的有效方法
- 如何修复找不到匹配的重载函数?
- ADL 找不到重载函数
- 构造函数找不到合适的定义,以及 100 个其他错误?
- 类函数找不到类定义的变量
- 平均函数找不到正确的平均c++