问题标签 [c-intermediate-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

ocaml - 如何在我的 CIL 模块中访问给 cilly 的文件

我在 CIL(C 中间语言)中添加了一个新功能。我可以使用执行我的新模块

现在,在我的 testmodule 中,我想为 test.c 文件调用 Cfg.computeFileCFG。但我不知道如何访问我模块中的 test.c 文件。

我尝试使用 Cil.file。但它说“未绑定值 Cil.file”。

我的代码:

请告诉我如何计算 test.c 文件的 Cfg。

0 投票
0 回答
613 浏览

linux-kernel - 使用 CIL 合并 Linux 内核

我正在尝试使用 CIL 合并来合并 Linux 内核并对其进行分析。我在不同版本的内核上试过这个。每个人都给出了不同的错误。

Linux-3.4.2:

在 Linux Kernel-3.4.2 源文件夹中,我使用了以下命令

$ make CC="cilly --save-temps --dofsvd --merge"

它给出了以下错误

/home/srikanth/projects2test/linux-3.4.2/arch/x86/include/asm/cpufeature.h[345:0-0]:语法错误解析错误致命错误:异常Frontc.ParseError(“解析错误”)

错误是由于这一行:

asm goto(... : : "i" (bit) : : t_no);

它无法识别“asm”指令。我用谷歌搜索它。在 BLAST 错误报告(此处)中,我发现我们可以使用一些外观选项来防止此类构造。但我不知道使用什么选项。如何忽略 asm(或任何其他不受支持的构造)?

Linux-2.4.5:

在 Linux Kernel-2.4.5 源文件夹中,我使用了以下命令

$ make CC="cilly --save-temps --dofsvd --merge"

上面的命令给出了以下错误

Makefile:229: arch/x86_64/Makefile: 没有这样的文件或目录 make: *没有规则来制作目标 `arch/x86_64/Makefile'。停止。

为此,我包含了 ARCH=i386 选项来制作文件。

$ make ARCH=i386 CC="cilly --save-temps --dofsvd --merge"

它说

init/main.c:1:0:错误:您选择的 CPU 不支持 x86-64 指令集

如何修复此错误?

我想在 Linux Kernel(任何版本)上运行分析。由于这些错误,我无法合并它。请帮我解决这些问题。

0 投票
1 回答
118 浏览

types - 具有有限数量元素的类型 - OCaml

我正在使用 CIL 来处理使用 pthread 库的 C 程序。我必须以不同于 pthread 函数的方式处理用户定义和非 pthread 函数。我可以有一个看起来像这样的类型定义:

这样我首先对函数名称进行模式匹配,然后将其发送到

或者

0 投票
0 回答
114 浏览

static-analysis - 将所有源 C 文件合并到一个 C 文件中以进行静态分析

我正在研究一些静态代码分析算法,如果在整个程序上完成这些算法会更有效(也更容易)。为此,我需要将目标程序的所有 C 源文件合并到一个 C 文件中。我尝试了CIL合并,但它只支持 ISO C89。我主要针对 GNU,它主要针对 gnu99 进行编译。

那么,是否有任何工具可以结合 C 的其他风格或 GNU 扩展?扩展 CIL 以支持 C99 或 gnu99 需要什么?