Module InferModules.BufferOverrunModels

module L = InferBase.Logging
module BoUtils = BufferOverrunUtils
module Dom = BufferOverrunDomain
module PO = BufferOverrunProofObligations
module Sem = BufferOverrunSemantics
module Trace = BufferOverrunTrace
module TraceSet = Trace.Set
type model_env = {
pname : InferIR.Typ.Procname.t;
node_hash : int;
location : InferBase.Location.t;
tenv : InferIR.Tenv.t;
ret : (InferIR.Ident.t * InferIR.Typ.t) option;
}
val mk_model_env : InferIR.Typ.Procname.t ‑> int ‑> InferBase.Location.t ‑> ?⁠ret:(InferIR.Ident.t * InferIR.Typ.t) ‑> InferIR.Tenv.t ‑> model_env
type exec_fun = model_env ‑> Dom.Mem.astate ‑> Dom.Mem.astate
type check_fun = model_env ‑> Dom.Mem.astate ‑> PO.ConditionSet.t ‑> PO.ConditionSet.t
type model = {
exec : exec_fun;
check : check_fun;
}
type declare_local_fun = decl_local:BoUtils.Exec.decl_local ‑> model_env ‑> AbsLoc.Loc.t ‑> inst_num:int ‑> dimension:int ‑> Dom.Mem.astate ‑> Dom.Mem.astate * int
type declare_symbolic_fun = decl_sym_val:BoUtils.Exec.decl_sym_val ‑> model_env ‑> depth:int ‑> AbsLoc.Loc.t ‑> inst_num:int ‑> new_sym_num:Itv.Counter.t ‑> new_alloc_num:Itv.Counter.t ‑> Dom.Mem.astate ‑> Dom.Mem.astate
type typ_model = {
declare_local : declare_local_fun;
declare_symbolic : declare_symbolic_fun;
}
val no_check : 'a ‑> 'b ‑> 'c ‑> 'c
val get_malloc_info : InferIR.Exp.t ‑> InferIR.Typ.t * InferStdlib.IStd.Int.t option * InferIR.Exp.t * InferIR.Exp.t option
val check_alloc_size : InferIR.Exp.t ‑> model_env ‑> BufferOverrunDomain.Mem.astate ‑> InferModules__BufferOverrunProofObligations.ConditionWithTrace.t InferStdlib.IStd.List.t ‑> InferModules__BufferOverrunProofObligations.ConditionWithTrace.t InferStdlib.IStd.List.t
val set_uninitialized : InferBase.Location.t ‑> InferIR.Typ.t ‑> AbsLoc.PowLoc.t ‑> Dom.Mem.t ‑> Dom.Mem.t
val malloc : InferIR.Exp.t ‑> model
val realloc : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model
val placement_new : InferIR.Exp.t ‑> model
val inferbo_min : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model
val inferbo_set_size : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model
val model_by_value : InferModules__BufferOverrunDomain.Val.t ‑> (InferIR.Ident.t * 'a) option ‑> Dom.Mem.t ‑> Dom.Mem.t
val by_value : InferModules__BufferOverrunDomain.Val.t ‑> model
val bottom : model
val infer_print : InferIR.Exp.t ‑> model
val get_array_length : InferIR.Exp.t ‑> model
val set_array_length : (InferIR.Exp.t * InferIR.Typ.t) ‑> InferIR.Exp.t ‑> model
module Split : sig ... end
module Boost : sig ... end
module Folly : sig ... end
module StdArray : sig ... end
module Call : sig ... end
module TypName : sig ... end