LLVM如何在任何其他代码之前执行模块中的代码

时间:2016-10-09 17:55:05

标签: llvm

我想要检查一些在我的模块中的任何其他代码之前执行的代码。

我想过在main函数的开头调用代码。但是并不总是有一个主要功能,或者它并不总是被称为“主要”。或者它是一个库,它甚至没有主要功能。

还有其他一些更聪明的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以将想要提前运行的代码放入函数中,并将该函数添加到llvm.global_ctors。这相当于在C或C ++中使用__attribute__((constructor))

要从传递中执行此操作,您可以使用llvm/Transforms/Utils/ModuleUtils.h中声明的llvm::appendToGlobalCtors函数。