gpt4 book ai didi

llvm - 使用 opt 运行 LLVM pass

转载 作者:行者123 更新时间:2023-12-02 02:07:03 26 4
gpt4 key购买 nike

我刚刚开始使用 LLVM。我已经编写了自己的 Hello pass,效果很好。

现在我想使用 StackProtector.cpp 中的堆栈保护程序运行 opt,但我遇到了麻烦。当我查看源代码时,看起来我应该使用标志 -stack-protector:

INITIALIZE_PASS(StackProtector, "stack-protector", "Insert stack protectors", false, false)

但是这个标志不被opt识别。

我不确定要“加载”哪个文件,因为它不像加载我自己的 LLVMHello.so 文件那么简单,而且我找不到 StackProtector.so 文件;我相信这可能是问题所在。

编辑:

我终于从LLVMDev 得到了答复。其实我想跑的pass是llc做的,不是opt。不过,我找不到选项 -stack-protector

llc --help

因为这个选项是隐藏的。如果我这样做

llc --help-hidden

显示pass已经有了,我只需要跑

llc -print-before=stack-protector <input>

最佳答案

首先你添加你的通行证:

static RegisterPass<StackProtector> X("StackProtector", "Insert stack protectors", false, false);

其次,当您在目标文件上运行 pass 时,在终端中运行 make 后,您会得到如下内容:

//home/YOURNAME/llvm/Release+Asserts/bin/opt -load //home/YOURNAME/llvm/Release+Asserts/lib/StackProtector.so -StackProtector //home/YOURNAME/llvm/tools/clang/woRKSPACE/Test.bc

其中 Test.bc 是您的目标代码。另外,请注意:在您的 Makefile 中,不要忘记添加 LIBRARYNAME = StackProtector

此外,请注意传入的内容是否尚未注册(如果已注册,您将收到段错误)

关于llvm - 使用 opt 运行 LLVM pass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com