2012-05-09 93 views
3

我已經爲CIL(C中間語言)添加了一個新功能。我能夠使用如何在我的CIL模塊中訪問給cilly的文件

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

現在,在我的testmodule,我想打電話給Cfg.computeFileCFG爲test.c的文件來執行我的新模塊。但我不知道如何訪問我的模塊中的test.c文件。

我試過使用Cil.file。但它會顯示「Unbound value 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; 
    } 

請告訴我如何計算CFG爲test1.c文件。

回答

3

我不是CIL專家,但這裏有幾點看法:

  • 的CIL在線文檔statesCil.file是一個ocaml的類型。將類型作爲參數傳遞給函數可能不是您想要在此處執行的操作;
  • 看起來功能描述符中的fd_doit函數將您正在處理的文件作爲參數f;
  • 根據Cilly手冊,f的類型爲Cil.file。方便的是,這個seems是函數computeFileCFG所需參數的類型。

希望你可以從這裏拿它。祝你好運!

相關問題