12
現在我們正在執行llvm的分析階段,跟隨this tutorial。並需要通過額外的參數插件,例如下面:是否有可能爲用戶定義的通道添加參數llvm
opt -load /path/to/myplugin.so -mypass -mypass_option input.bc
但是我沒有找到任何手動告訴我該怎麼做。所以我想知道在實踐中是否可能。
在此先感謝。
現在我們正在執行llvm的分析階段,跟隨this tutorial。並需要通過額外的參數插件,例如下面:是否有可能爲用戶定義的通道添加參數llvm
opt -load /path/to/myplugin.so -mypass -mypass_option input.bc
但是我沒有找到任何手動告訴我該怎麼做。所以我想知道在實踐中是否可能。
在此先感謝。
您應該使用內置LLVM的CommandLine庫。基本上,你只要把在傳球的.cpp文件的頂部:
#include "llvm/Support/CommandLine.h"
static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));
但我建議你檢查上面的鏈接,它有完整的參考+便捷快速入門部分。
例如,看看內置的loop unrolling pass - 它使用cl::opt<unsigned>
和定義了源文件頂部的兩個無符號和兩個布爾選項。
這個特殊的例子不是最優的,因爲這個習慣用法是從'stdin'中讀取的。大概你有另一個用例呢? –
你需要什麼樣的論點?據我所知,通過應該從IR中獲取所需的一切,然後再次輸出IR。 –
@TobiasLangner這是一些像'-mypass'通行證的分析級別或分析位置的參數。也許它就像gcc優化級別「-O1」,「-O2」等。 –