package goblint

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Analysis specification and constraint system signatures.

module M = Messages
type fundecs = GoblintCil.fundec list * GoblintCil.fundec list * GoblintCil.fundec list

Analysis starts from lists of functions: start functions, exit functions, and * other functions.

module type SysVar = sig ... end
module type VarType = sig ... end
module Var : sig ... end
module VarF (LD : Printable.S) : sig ... end
module type SpecSysVar = sig ... end
module GVarF (V : SpecSysVar) : sig ... end
module GVarFC (V : SpecSysVar) (C : Printable.S) : sig ... end
module GVarG (G : Lattice.S) (C : Printable.S) : sig ... end
exception Deadcode
module Dom (LD : Lattice.S) : sig ... end

Dom (D) produces D lifted where bottom means dead-code

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, 'v) ctx = {
  1. ask : 'a. 'a Queries.t -> 'a Queries.result;
  2. emit : Events.t -> unit;
  3. node : MyCFG.node;
  4. prev_node : MyCFG.node;
  5. control_context : unit -> ControlSpecC.t;
    (*

    top-level Control Spec context, raises Ctx_failure if missing

    *)
  6. context : unit -> 'c;
    (*

    current Spec context, raises Ctx_failure if missing

    *)
  7. edge : MyCFG.edge;
  8. local : 'd;
  9. global : 'v -> 'g;
  10. spawn : ?multiple:bool -> GoblintCil.lval option -> GoblintCil.varinfo -> GoblintCil.exp list -> unit;
  11. split : 'd -> Events.t list -> unit;
  12. sideg : 'v -> 'g -> unit;
}
exception Ctx_failure of string

Failure from ctx, e.g. global initializer

val ctx_failwith : string -> 'a
val ask_of_ctx : ('a, 'b, 'c, 'd) ctx -> Queries.ask

Convert ctx to Queries.ask.

module type Spec = sig ... end
module type MCPA = sig ... end
module type MCPSpec = sig ... end
type increment_data = {
  1. server : bool;
  2. solver_data : Stdlib.Obj.t;
  3. changes : CompareCIL.change_info;
  4. restarting : VarQuery.t list;
}
type 'v sys_change_info = {
  1. obsolete : 'v list;
    (*

    Variables to destabilize.

    *)
  2. delete : 'v list;
    (*

    Variables to delete.

    *)
  3. reluctant : 'v list;
    (*

    Variables to solve reluctantly.

    *)
  4. restart : 'v list;
    (*

    Variables to restart.

    *)
}

Abstract incremental change to constraint system.

  • parameter 'v

    constrain system variable type

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 GenericEqIncrSolverBase = functor (S : EqConstrSys) -> functor (H : Batteries.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.

An incremental solver takes the argument about postsolving.

module type GenericEqSolver = functor (S : EqConstrSys) -> functor (H : Batteries.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 : Batteries.Hashtbl.S with type key = S.LVar.t) -> functor (GH : Batteries.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 StdV : sig ... end
module UnitV : sig ... end
module VarinfoV : sig ... end
module EmptyV : sig ... end
module UnitA : sig ... end
module UnitP : sig ... end
module IdentityP (D : Lattice.S) : sig ... end
module DefaultSpec : sig ... end

Relatively safe default implementations of some boring Spec functions.

module IdentitySpec : sig ... end
module type SpecSys = sig ... end
module type SpecSysSol = sig ... end
OCaml

Innovation. Community. Security.