package goblint
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=999272bfbd3b9b96fcd58987b237ac6e9fa6d92ef935cc89f1ea2b4205185141
sha512=f3bf6ab71cf8c258d3290da4bf9f6fe42d7c671822e0efeb0fc50afdff078ab15e352237e5c1db31c5aa3a9d430691268ed2e5e00da10f2615835f672f91683d
doc/goblint.lib/Analyses/index.html
Module Analyses
Signatures for analyzers, analysis specifications, and result output.
module GU = Goblintutil
module M = Messages
Analysis starts from lists of functions: start functions, exit functions, and * other functions.
module type VarType = sig ... end
module Var : sig ... end
module VarF (LD : Printable.S) : sig ... end
module ResultNode : Printable.S with type t = MyCFG.node
module type ResultConf = sig ... end
module Result (Range : Printable.S) (C : ResultConf) : sig ... end
type ('d, 'g, 'c) ctx = {
ask : 'a. 'a Queries.t -> 'a Queries.result;
emit : Events.t -> unit;
node : MyCFG.node;
prev_node : MyCFG.node;
control_context : Obj.t;
(*(Control.get_spec ()) context, represented type: unit -> (Control.get_spec ()).C.t
*)context : unit -> 'c;
(*current Spec context
*)edge : MyCFG.edge;
local : 'd;
global : Cil.varinfo -> 'g;
presub : (string * Obj.t) list;
postsub : (string * Obj.t) list;
spawn : Cil.lval option -> Cil.varinfo -> Cil.exp list -> unit;
split : 'd -> Events.t list -> unit;
sideg : Cil.varinfo -> 'g -> unit;
assign : ?name:string -> Cil.lval -> Cil.exp -> unit;
}
val ask_of_ctx : ('a, 'b, 'c) ctx -> Queries.ask
Convert ctx
to Queries.ask
.
val set_st_gl :
('a, 'b, 'c) ctx ->
'd ->
(Cil.varinfo -> 'e) ->
((Cil.lval option -> Cil.varinfo -> Cil.exp list -> unit) ->
Cil.lval option ->
Cil.varinfo ->
Cil.exp list ->
unit) ->
((Cil.varinfo -> 'b -> unit) -> Cil.varinfo -> 'e -> unit) ->
(('a -> Events.t list -> unit) -> 'd -> Events.t list -> unit) ->
('d, 'e, 'c) ctx
module type Spec = sig ... end
module type MCPSpec = sig ... end
type increment_data = {
old_data : analyzed_data option;
new_file : Cil.file;
changes : CompareCIL.change_info;
}
val empty_increment_data : Cil.file -> increment_data
module type MonSystem = sig ... end
A side-effecting system.
module type EqConstrSys = MonSystem with type 'a m := 'a option
Any system of side-effecting equations over lattices.
module type GlobConstrSys = sig ... end
A side-effecting system with globals.
module type GenericEqBoxIncrSolverBase =
functor (S : EqConstrSys) ->
functor (H : Prelude.Hashtbl.S with type key = S.v) ->
sig ... end
A solver is something that can translate a system into a solution (hash-table). Incremental solver has data to be marshaled.
module type IncrSolverArg = sig ... end
(Incremental) solver argument, indicating which postsolving should be performed by the solver.
module type GenericEqBoxIncrSolver =
functor (Arg : IncrSolverArg) ->
GenericEqBoxIncrSolverBase
An incremental solver takes the argument about postsolving.
module type GenericEqBoxSolver =
functor (S : EqConstrSys) ->
functor (H : Prelude.Hashtbl.S with type key = S.v) ->
sig ... end
A solver is something that can translate a system into a solution (hash-table)
module type GenericGlobSolver =
functor (S : GlobConstrSys) ->
functor (LH : Prelude.Hashtbl.S with type key = S.LVar.t) ->
functor (GH : Prelude.Hashtbl.S with type key = S.GVar.t) ->
sig ... end
A solver is something that can translate a system into a solution (hash-table)
module ResultType2 (S : Spec) : sig ... end
module DefaultSpec : sig ... end
Relatively safe default implementations of some boring Spec functions.
module IdentitySpec : sig ... end