c - 如何通过 llvm-c api 创建命名元数据?

标签 c metadata llvm

我想将调试元数据添加到我生成的 llvm IR,它是通过 C API 创建的。但是,我不知道如何创建命名元数据节点(例如 !llvm.dbg.cu),甚至不知道如何创建具有唯一编号(即 !0、!1 等)的元数据节点。向指令添加元数据操作数看起来非常简单,但我不知道如何创建独立的元数据节点。

最佳答案

在 LLVM 3.0 中,C API 中没有公开用于创建或修改命名元数据的函数。一个新函数 (LLVMAddNamedMetadataOperand) 是 recently added to the API , 3.0 发布后。

如果您习惯于从源代码构建 LLVM,则可以从主干获得此支持。查看Getting Started关于如何构建 LLVM 的页面。否则,您将不得不等到 LLVM 3.1 发布。

当函数可用时,只需调用即可:

LLVMAddNamedMetadataOperand(module, "named_md_name", mdnode);

如果没有名为“named_md_name”的命名元数据,则会创建一个。否则现有对象将被更新。

关于c - 如何通过 llvm-c api 创建命名元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998367/

相关文章:

c - 两个消费者一个生产者的 pthread 同步

javascript - 从多个音频文件中提取 'duration'元数据

python - 如何使用 matplotlib 将元数据添加到 Windows 10 中轻松出现的图像

从另一个文件定义的 LLVM 插入函数调用

c++ - 转储 C++ 对象的内存布局在 clang 中不起作用

c++ - 如何在 Ubuntu 上安装 Rose 编译器?

c - 查找 1 到 100 之间的缺失数字

llvm - 如何在LLVM中获取循环归纳变量的名称?

c - ifup(8) C 中的等效代码

app-store - 如何为Couchbase模式建模以存储应用程序特定的元数据?