我想要检查一些在我的模块中的任何其他代码之前执行的代码。
我想过在main函数的开头调用代码。但是并不总是有一个主要功能,或者它并不总是被称为“主要”。或者它是一个库,它甚至没有主要功能。
还有其他一些更聪明的方法吗?
答案 0 :(得分:2)
您可以将想要提前运行的代码放入函数中,并将该函数添加到llvm.global_ctors
。这相当于在C或C ++中使用__attribute__((constructor))
。
要从传递中执行此操作,您可以使用llvm/Transforms/Utils/ModuleUtils.h
中声明的llvm::appendToGlobalCtors
函数。