我刚开始接触LLVM。我已经编写了自己的Hello pass,并且运行正常。
现在我想使用StackProtector.cpp中的堆栈保护者pass来运行opt,但是我遇到了问题。当我查看源代码时,看起来我应该使用标志-stack-protector:
INITIALIZE_PASS(StackProtector, "stack-protector", "Insert stack protectors", false, false)
但是opt不认识这个标志。
我不确定要“加载”哪个文件,因为它不像加载我的LLVMHello.so文件那样简单,而且我找不到StackProtector.so文件;我相信这可能是问题所在。
编辑:
我终于从LLVMDev得到了答案。实际上,我想运行的传递是由llc执行的,而不是opt。然而,我找不到选项-stack-protector,
llc --help
因为这个选项是隐藏的。如果我改成:
llc --help-hidden
显示通道已经存在,我只需要运行即可。
llc -print-before=stack-protector <input>