Frama-C-Plugin:在插件

时间:2016-03-31 07:11:58

标签: frama-c

我正在写一个Frama-C插件。

我想开发一个插件,用于设置局部变量的值。通过这个想法,我尝试之后进行价值分析,然后我可以通过我的第二个插件分析可达性,路径分析和其他事情。

是否可以在插件中设置局部变量的值(在我知道名称的函数的开头)?

修改

我现在发现了如何创建新的局部变量,如何获取变量的Varinfo以及如何创建新的varinfos。唯一缺少的是设置变量的值。

我开始使用这样的代码:

match kf_cil_fun with
| Cil_types.Definition(a,b) -> 
    let val_visitor = new value_set_visitor kf in
        Visitor.visitFramacFileSameGlobals (val_visitor :> Visitor.frama_c_visitor) (Ast.get());
    let old_varinfo = Cil.makeLocalVar a "x" Cil.intType in
    let new_varinfo = Cil.makeVarinfo false false "x" Cil.intType in
    val_visitor#doStuff old_varinfo new_varinfo;
    ()
| _ -> ()

其中访问者是带有方法doStuff的简单访问者,以及只调用Cil.DoChildren的内置方法vfile,vglob_aux和vstmt_aux

method doStuff old_varinfo new_varinfo =
            Cil.set_varinfo self#behavior old_varinfo new_varinfo;

有没有人知道如何将x的值设置为1(或固定的其他值)?我做得对吗?

0 个答案:

没有答案