如何在 LLVM 中声明全局变量?
我想将一些动态行为记录到一些全局变量中。因此,我编写了一个过程来检测代码并插入一些指令来更新全局变量。我尝试使用GlobalVariable构造函数来定义全局变量,但是有两个问题。首先,如何在包含 main 函数的模块中定义全局变量?其次,如何在其他模块中声明这些全局变量?就像“extern double someThing;”。
目标程序是用C语言编写的。
I'd like to record some dynamic behaviors into some global variables. So I wrote a pass to instrument the code and insert some instructions to update the global variable. I tried to use the GlobalVariable constructor to define a global variable, but there are two problems. First, how can I DEFINE the global variables in the module containing main function? Second, how can I DECLARE those global variables in other modules? It's like "extern double someThing;".
The target programs are written in C.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一个工具可以回答这个问题以及有关 LLVM API 的许多其他问题:
llc -march=cpp
。您可以使用 Clang 或 llvm-gcc 生成位码文件,然后构建 C++ 代码,该代码应使用cpp
后端重建相同的模块。示例输出显示如何定义全局
int *
变量:There is a tool which can answer this and many other questions about LLVM API:
llc -march=cpp
. You can generate a bitcode file using Clang or llvm-gcc, and then build a C++ code which should reconstruct the same module using thecpp
backend.A sample output, showing how to define a global
int *
variable: