You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
20 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>BufferOverrunModels (infer.InferModules.BufferOverrunModels)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../../index.html">infer</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferModules.BufferOverrunModels</span></h1></header><div class="spec module" id="module-L"><a href="#module-L" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>L = <a href="../../../InferBase/InferBase/index.html#module-Logging">InferBase.Logging</a></code></div><div class="doc"></div></div><div class="spec module" id="module-BoUtils"><a href="#module-BoUtils" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>BoUtils = <a href="../index.html#module-BufferOverrunUtils">BufferOverrunUtils</a></code></div><div class="doc"></div></div><div class="spec module" id="module-Dom"><a href="#module-Dom" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>Dom = <a href="../index.html#module-BufferOverrunDomain">BufferOverrunDomain</a></code></div><div class="doc"></div></div><div class="spec module" id="module-PO"><a href="#module-PO" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>PO = <a href="../index.html#module-BufferOverrunProofObligations">BufferOverrunProofObligations</a></code></div><div class="doc"></div></div><div class="spec module" id="module-Sem"><a href="#module-Sem" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>Sem = <a href="../index.html#module-BufferOverrunSemantics">BufferOverrunSemantics</a></code></div><div class="doc"></div></div><div class="spec module" id="module-Trace"><a href="#module-Trace" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>Trace = <a href="../index.html#module-BufferOverrunTrace">BufferOverrunTrace</a></code></div><div class="doc"></div></div><div class="spec module" id="module-TraceSet"><a href="#module-TraceSet" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>TraceSet = <a href="../BufferOverrunTrace/index.html#module-Set">Trace.Set</a></code></div><div class="doc"></div></div><div class="spec type" id="type-model_env"><a href="#type-model_env" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>model_env</code><code></code><code><span class="keyword"> = </span></code><code>{</code><table class="record"><tr id="type-model_env.pname" class="anchored"><td class="def field"><a href="#type-model_env.pname" class="anchor"></a><code>pname : <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a>;</code></td></tr><tr id="type-model_env.node_hash" class="anchored"><td class="def field"><a href="#type-model_env.node_hash" class="anchor"></a><code>node_hash : int;</code></td></tr><tr id="type-model_env.location" class="anchored"><td class="def field"><a href="#type-model_env.location" class="anchor"></a><code>location : <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a>;</code></td></tr><tr id="type-model_env.tenv" class="anchored"><td class="def field"><a href="#type-model_env.tenv" class="anchor"></a><code>tenv : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a>;</code></td></tr><tr id="type-model_env.ret" class="anchored"><td class="def field"><a href="#type-model_env.ret" class="anchor"></a><code>ret : (<a href="../../../InferIR/InferIR/Ident/index.html#type-t">InferIR.Ident.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a>) option;</code></td></tr></table><code>}</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-mk_model_env"><a href="#val-mk_model_env" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mk_model_env : <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;ret:(<a href="../../../InferIR/InferIR/Ident/index.html#type-t">InferIR.Ident.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a>) <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model_env">model_env</a></code></div><div class="doc"></div></div><div class="spec type" id="type-exec_fun"><a href="#type-exec_fun" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>exec_fun</code><code><span class="keyword"> = </span><a href="index.html#type-model_env">model_env</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-check_fun"><a href="#type-check_fun" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>check_fun</code><code><span class="keyword"> = </span><a href="index.html#type-model_env">model_env</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunProofObligations/ConditionSet/index.html#type-t">PO.ConditionSet.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunProofObligations/ConditionSet/index.html#type-t">PO.ConditionSet.t</a></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-model"><a href="#type-model" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>model</code><code></code><code><span class="keyword"> = </span></code><code>{</code><table class="record"><tr id="type-model.exec" class="anchored"><td class="def field"><a href="#type-model.exec" class="anchor"></a><code>exec : <a href="index.html#type-exec_fun">exec_fun</a>;</code></td></tr><tr id="type-model.check" class="anchored"><td class="def field"><a href="#type-model.check" class="anchor"></a><code>check : <a href="index.html#type-check_fun">check_fun</a>;</code></td></tr></table><code>}</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-declare_local_fun"><a href="#type-declare_local_fun" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>declare_local_fun</code><code><span class="keyword"> = </span>decl_local:<a href="../../InferModules__BufferOverrunUtils/Exec/index.html#type-decl_local">BoUtils.Exec.decl_local</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model_env">model_env</a> <span class="keyword">&#8209;&gt;</span> <a href="../AbsLoc/Loc/index.html#type-t">AbsLoc.Loc.t</a> <span class="keyword">&#8209;&gt;</span> inst_num:int <span class="keyword">&#8209;&gt;</span> dimension:int <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a><span class="keyword"> * </span>int</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-declare_symbolic_fun"><a href="#type-declare_symbolic_fun" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>declare_symbolic_fun</code><code><span class="keyword"> = </span>decl_sym_val:<a href="../../InferModules__BufferOverrunUtils/Exec/index.html#type-decl_sym_val">BoUtils.Exec.decl_sym_val</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model_env">model_env</a> <span class="keyword">&#8209;&gt;</span> depth:int <span class="keyword">&#8209;&gt;</span> <a href="../AbsLoc/Loc/index.html#type-t">AbsLoc.Loc.t</a> <span class="keyword">&#8209;&gt;</span> inst_num:int <span class="keyword">&#8209;&gt;</span> new_sym_num:<a href="../Itv/Counter/index.html#type-t">Itv.Counter.t</a> <span class="keyword">&#8209;&gt;</span> new_alloc_num:<a href="../Itv/Counter/index.html#type-t">Itv.Counter.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-astate">Dom.Mem.astate</a></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-typ_model"><a href="#type-typ_model" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>typ_model</code><code></code><code><span class="keyword"> = </span></code><code>{</code><table class="record"><tr id="type-typ_model.declare_local" class="anchored"><td class="def field"><a href="#type-typ_model.declare_local" class="anchor"></a><code>declare_local : <a href="index.html#type-declare_local_fun">declare_local_fun</a>;</code></td></tr><tr id="type-typ_model.declare_symbolic" class="anchored"><td class="def field"><a href="#type-typ_model.declare_symbolic" class="anchor"></a><code>declare_symbolic : <a href="index.html#type-declare_symbolic_fun">declare_symbolic_fun</a>;</code></td></tr></table><code>}</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-no_check"><a href="#val-no_check" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>no_check : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span></code></div><div class="doc"></div></div><div class="spec val" id="val-get_malloc_info"><a href="#val-get_malloc_info" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_malloc_info : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a><span class="keyword"> * </span><a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Int.t option<span class="keyword"> * </span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</code></div><div class="doc"></div></div><div class="spec val" id="val-check_alloc_size"><a href="#val-check_alloc_size" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>check_alloc_size : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model_env">model_env</a> <span class="keyword">&#8209;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-astate">BufferOverrunDomain.Mem.astate</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunProofObligations/ConditionWithTrace/index.html#type-t">InferModules__BufferOverrunProofObligations.ConditionWithTrace.t</a> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunProofObligations/ConditionWithTrace/index.html#type-t">InferModules__BufferOverrunProofObligations.ConditionWithTrace.t</a> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</code></div><div class="doc"></div></div><div class="spec val" id="val-set_uninitialized"><a href="#val-set_uninitialized" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_uninitialized : <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../AbsLoc/PowLoc/index.html#type-t">AbsLoc.PowLoc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-t">Dom.Mem.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-t">Dom.Mem.t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-malloc"><a href="#val-malloc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>malloc : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-realloc"><a href="#val-realloc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>realloc : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-placement_new"><a href="#val-placement_new" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>placement_new : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-inferbo_min"><a href="#val-inferbo_min" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inferbo_min : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-inferbo_set_size"><a href="#val-inferbo_set_size" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inferbo_set_size : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-model_by_value"><a href="#val-model_by_value" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>model_by_value : <a href="../../InferModules__BufferOverrunDomain/Val/index.html#type-t">InferModules__BufferOverrunDomain.Val.t</a> <span class="keyword">&#8209;&gt;</span> (<a href="../../../InferIR/InferIR/Ident/index.html#type-t">InferIR.Ident.t</a><span class="keyword"> * </span><span class="type-var">'a</span>) option <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-t">Dom.Mem.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferModules__BufferOverrunDomain/Mem/index.html#type-t">Dom.Mem.t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-by_value"><a href="#val-by_value" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>by_value : <a href="../../InferModules__BufferOverrunDomain/Val/index.html#type-t">InferModules__BufferOverrunDomain.Val.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-bottom"><a href="#val-bottom" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bottom : <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-infer_print"><a href="#val-infer_print" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>infer_print : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-get_array_length"><a href="#val-get_array_length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_array_length : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec val" id="val-set_array_length"><a href="#val-set_array_length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_array_length : (<a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a>) <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-model">model</a></code></div><div class="doc"></div></div><div class="spec module" id="module-Split"><a href="#module-Split" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Split/index.html">Split</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Boost"><a href="#module-Boost" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Boost/index.html">Boost</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Folly"><a href="#module-Folly" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Folly/index.html">Folly</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-StdArray"><a href="#module-StdArray" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="StdArray/index.html">StdArray</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Call"><a href="#module-Call" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Call/index.html">Call</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-TypName"><a href="#module-TypName" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="TypName/index.html">TypName</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div></body></html>