我刚刚开始使用 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
显示通行证在那里,我只需要运行
llc -print-before=stack-protector <input>