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