正常情況下如果要修改LLVM IR,則需要寫入通行證。然而,如果一個更高級別的工具可以幫助你,那麼自己寫一遍就是一種矯枉過正的行爲。用於在LLVM中寫入通行證的更高級別的工具
例如,有人可能希望在程序中記錄每個load
和store
。爲此,他需要注入代碼來完成日誌記錄。現在如果有更高層次的工具,它可以爲我們提供回調以寫出我們想要的東西。因此,在這種情況下,例如,它可以爲我們提供OnLoad
和OnStore
函數,我們可以填寫這些函數以告知工具在每個加載和存儲上應執行哪些操作。這種工具是否存在?
所以基本上我想要的東西類似於動態二進制工具工具提供的東西,但它適用於LLVM,用於編譯時代碼注入。
你檢查現有的LLVM API,如果是這樣,你發現了什麼缺什麼?我記得LLVM API足夠強大,可以在幾行代碼中完成類似的事情,儘管我從未使用它。 – delnan
它們確實足夠強大,但如果存在更高級別的工具,我仍然認爲可以更輕鬆地完成一些任務。例如,在這種情況下,儘管可以通過編寫一個通行證來記錄每個負載和存儲的地址,但是通過簡單地實施OnLoad並不能告訴工具該做什麼這樣簡單OnStore功能。用一個工具來做這件事將會容易10倍。 – pythonic
這就是LLVM IR文本表示的一個小小的grep-fu或sed-fu。或者,更好的是,使用LLVM API的30行C++。 – CAFxX