现在我们正在为 llvm 实现一个分析插件,参照 这个教程。需要像下面这样传递一个额外的参数给插件:
opt -load /path/to/myplugin.so -mypass -mypass_option input.bc
然而,我没有找到任何告诉我如何做的手册。因此,我想知道这在实践中是否可能。
先行感谢。
现在我们正在为 llvm 实现一个分析插件,参照 这个教程。需要像下面这样传递一个额外的参数给插件:
opt -load /path/to/myplugin.so -mypass -mypass_option input.bc
然而,我没有找到任何告诉我如何做的手册。因此,我想知道这在实践中是否可能。
先行感谢。
你应该使用内置在LLVM中的CommandLine库。基本上,你只需要在pass的.cpp文件顶部放置:
#include "llvm/Support/CommandLine.h"
static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));
但我建议你检查上面的链接,它有完整的参考资料和方便的快速入门部分。
以内置的循环展开pass为例 - 它在源文件顶部使用cl::opt<unsigned>
和cl::opt<bool>
定义了两个无符号选项和两个布尔选项。
stdin
读取。可能你有另一个使用案例在脑海中? - Brian Cain-mypass
通道的分析级别或分析位置。也许它类似于 gcc 优化级别-O1
、-O2
等。 - Hongxu Chenmypass_option
пјҢдҪҶжҳҜдјјд№ҺжҜҸж¬ЎдҪҝз”ЁеҜҶз Ғж—¶йғҪеҝ…йЎ»дҝ®ж”№жҢҮе®ҡзҡ„ж–Ү件гҖӮ - Hongxu Chen