访问C库函数调用的LLVM IR

时间:2014-10-02 01:14:01

标签: clang llvm llvm-ir

我有一个C代码(例如名为a.c),它从stdio.h / curses.h中调用我们printftextcolorgotoxy这样的函数。用于a.c的LLVM-IR将仅声明这些函数并显示这些函数已被调用,这意味着它不具有用于在a.ll中实现这些函数的详细IR。有没有什么方法可以访问这些IR或将所有实现(这些函数调用的a.c + IR的IR)放在一个.ll文件中?我不太了解LLVM,所以如果我犯了一些概念错误,请告诉我。

1 个答案:

答案 0 :(得分:7)

您无法从 程序中获取此内容,因为它不包含这些功能。即使是静态链接,可执行文件也很可能不会,因为libc(其中printf和其他C库函数来自)作为目标文件存在于您的计算机上,而不是LLVM IR。

所能做的是使用LLVM编译其中一个C库(尝试像ulibcnewlib这样的小而简单的东西)。然后你可以从中发出LLVM IR。 FWIW,Chrome便携式原生客户端项目执行此操作(使用newlib) - 您可以使用directions on this page构建它并自行复制这些步骤。