0
我想測試一些在模塊中的任何其他代碼之前執行的代碼。LLVM如何在任何其他代碼之前執行模塊中的代碼
我想過在主函數的開始調用代碼。但是並不總是一個主要功能,或者它並不總是被命名爲「主要」。或者它是一個圖書館,它甚至沒有主要功能。
還有其他更智能的方法嗎?
我想測試一些在模塊中的任何其他代碼之前執行的代碼。LLVM如何在任何其他代碼之前執行模塊中的代碼
我想過在主函數的開始調用代碼。但是並不總是一個主要功能,或者它並不總是被命名爲「主要」。或者它是一個圖書館,它甚至沒有主要功能。
還有其他更智能的方法嗎?
您可以將要提前運行的代碼放入函數中,並將該函數添加到llvm.global_ctors
。這相當於在C或C++中使用__attribute__((constructor))
。
要做到這一點,您可以使用llvm::appendToGlobalCtors
函數,該函數在llvm/Transforms/Utils/ModuleUtils.h
中聲明。
http://llvm.org/docs/LangRef.html#the-llvm-global-ctors-global-variable –
@IsmailBadawi這似乎是一個很好的答案。你有什麼想法我可以從編譯器通道追加到這個變量嗎? – user2600312