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

$cilly --dotestmodule --save-temps -D HAPPY_MOOD -o test test.c

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

我尝试使用Cil.file。但显示“未绑定(bind)值Cil.file”。

我的代码:
open Pretty
open Cfg
open Cil

module RD = Reachingdefs

let () = Cfg.computeFileCFG Cil.file

let rec fact n = if n < 2 then 1 else n * fact(n-1)
let doIt n = fact n

let feature : featureDescr =
  { fd_name = "testmodule";
    fd_enabled = ref false;
    fd_description = "simple test 1240";
    fd_extraopt = [];
    fd_doit = (function (f: file) -> ignore (doIt 10));
    fd_post_check = true;
  }

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

最佳答案

我不是CIL专家,但请注意以下几点:

  • CIL在线文档states表示Cil.file是Ocaml类型。将类型作为参数传递给函数可能不是您想要在此处执行的操作;
  • 似乎您的功能描述符中的fd_doit函数将您要处理的文件作为其参数f
  • 根据Cilly手册中的
  • f的类型为Cil.file。方便地,此seemscomputeFileCFG函数所需的参数的类型。

  • 希望你可以从这里拿走。祝好运!

    关于ocaml - 如何在我的CIL模块中访问提供给cilly的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10515254/

    10-09 05:48