繁体   English   中英

如何在LLVM中声明全局变量?

[英]How can I declare a global variable in LLVM?

我想将一些动态行为记录到一些全局变量中。 所以我写了一个传递来检测代码并插入一些指令来更新全局变量。 我尝试使用GlobalVariable构造函数来定义全局变量,但有两个问题。 首先,我如何在包含main函数的模块中定义全局变量? 其次,我如何在其他模块中声明这些全局变量? 这就像“extern double someThing;”。

目标程序用C语言编写。

有一个工具可以回答这个以及关于LLVM API的许多其他问题: llc -march=cpp 您可以使用Clang或llvm-gcc生成bitcode文件,然后构建一个C ++代码,该代码应使用cpp后端重建相同的模块。

示例输出,显示如何定义全局int *变量:

// Global Variable Declarations

GlobalVariable* gvar_ptr_abc = new GlobalVariable(/*Module=*/*mod, 
        /*Type=*/PointerTy_0,
        /*isConstant=*/false,
        /*Linkage=*/GlobalValue::CommonLinkage,
        /*Initializer=*/0, // has initializer, specified below
        /*Name=*/"abc");
gvar_ptr_abc->setAlignment(4);

// Constant Definitions
ConstantPointerNull* const_ptr_2 = ConstantPointerNull::get(PointerTy_0);

// Global Variable Definitions
gvar_ptr_abc->setInitializer(const_ptr_2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM