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
10 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>BufferOverrunSemantics (infer.BO.BufferOverrunSemantics)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">BO</a> &#x00BB; BufferOverrunSemantics</nav><h1>Module <code>BO.BufferOverrunSemantics</code></h1></header><dl><dt class="spec value" id="val-is_stack_exp"><a href="#val-is_stack_exp" class="anchor"></a><code><span class="keyword">val</span> is_stack_exp : <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Check if an expression is a stack variable such as <code>n$0</code> or local variable for C array</p></dd></dl><dl><dt class="spec value" id="val-eval"><a href="#val-eval" class="anchor"></a><code><span class="keyword">val</span> eval : <a href="../../IR/Typ/IntegerWidths/index.html#type-t">IR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dd><p>Evalute an expression</p></dd></dl><dl><dt class="spec value" id="val-eval_locs"><a href="#val-eval_locs" class="anchor"></a><code><span class="keyword">val</span> eval_locs : <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../AbsLoc/PowLoc/index.html#type-t">AbsLoc.PowLoc.t</a></code></dt><dd><p><code>eval_locs exp mem</code> is like <code>eval exp mem |&gt; Val.get_all_locs</code> but takes some shortcuts to avoid computing useless and/or problematic intermediate values</p></dd></dl><dl><dt class="spec value" id="val-eval_arr"><a href="#val-eval_arr" class="anchor"></a><code><span class="keyword">val</span> eval_arr : <a href="../../IR/Typ/IntegerWidths/index.html#type-t">IR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dd><p>Return the array value of the input expression. For example, when <code>x</code> is a program variable, <code>eval_arr x</code> returns array blocks the <code>x</code> is pointing to, on the other hand, <code>eval x</code> returns the abstract location of <code>x</code>.</p></dd></dl><dl><dt class="spec value" id="val-eval_lindex"><a href="#val-eval_lindex" class="anchor"></a><code><span class="keyword">val</span> eval_lindex : <a href="../../IR/Typ/IntegerWidths/index.html#type-t">IR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dd><p>Evaluate array location with index, i.e., <code>eval_lindex integer_type_widths array_exp index_exp mem</code></p></dd></dl><dl><dt class="spec value" id="val-eval_array_locs_length"><a href="#val-eval_array_locs_length" class="anchor"></a><code><span class="keyword">val</span> eval_array_locs_length : <a href="../AbsLoc/PowLoc/index.html#type-t">AbsLoc.PowLoc.t</a> <span>