3
다음 LLVM IR이 있고 저장 지침에서 변수 이름 string
을 추출하려고합니다. 내가 어떻게 할 수 있는지 안내해주세요.LLVM 패스에서 변수 이름 가져 오기
%call = call noalias i8* @malloc(i64 100) #3
store i8* %call, i8** %string, align 8
내 LLVM 패스 I
이 StoreInst
당신이 반복 할 수 있음을 확인한 후
virtual bool runOnModule(Module &M) {
for (Function &F: M) {
for (BasicBlock &B: F) {
for (Instruction &I: B) {
if(CallInst* call_inst = dyn_cast<CallInst>(&I)) {
Function* fn = call_inst->getCalledFunction();
StringRef fn_name = fn->getName();
errs() << fn_name << " : " << call_inst->getArgOperand(0) << "\n";
//for(auto args = fn->arg_begin(); args != fn->arg_end(); ++args) {
// ConstantInt* arg = dyn_cast<ConstantInt>(&(*args));
// errs() << arg->getValue() << "\n";
//}
} else {
errs() << I.getName() << "\n" << I.getOpcodeName();
}
}
}
}
return false;
}