如何从LLVM IR指令中获取字符串文字

时间:2017-08-18 09:50:24

标签: llvm-ir

我想从LLVM IR获得字符串文字。

C源代码看起来像:

char *test = "string";

LLVM IR看起来像:

@.str = private unnamed_addr constant [9 x i8] c"string\00", align 1
@test = global i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i32 0, i32 0), align 8

我在ArgValue变量中得到了一些内容。 - > IR的第二行.. 我的代码看起来像这样:现在我在获得Constant *

后陷入困境
GetElementPtrInst *gep = dyn_cast<GetElementPtrInst>(ArgValue);
Value *Valop = gep->getPointerOperand();
Instruction *inst = dyn_cast<Instruction>(Valop);
Constant *cda = dyn_cast<Constant>(inst->getOperand(0));

现在在最后一个语句之后,我如何得到常量&#34;字符串&#34;是我坚持的东西。 Constant * cda不为null ..第三行是成功 如果我尝试将强制类型转换为任何其他对象,它将无法工作。 请帮忙......

0 个答案:

没有答案