package goblint

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
include module type of struct include Analyses.IdentitySpec end
include module type of struct include Analyses.DefaultSpec end

Relatively safe default implementations of some boring Spec functions.

module P = Analyses.UnitP
type marshal = unit
val init : 'a -> unit
val finalize : unit -> unit
val vdecl : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'a
val asm : ('a, 'b, 'c, 'd) Analyses.ctx -> 'a
val skip : ('a, 'b, 'c, 'd) Analyses.ctx -> 'a
val morphstate : 'a -> 'b -> 'b
val sync : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'a
val context : 'a -> 'b -> 'b
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.ctx -> 'a list
module A = Analyses.UnitA
val access : 'a -> 'b -> unit
val branch : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.exp -> bool -> 'a
val body : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.fundec -> 'a
val return : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.exp option -> GoblintCil.fundec -> 'a
val enter : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.lval option -> GoblintCil.fundec -> GoblintCil.exp list -> ('a * 'a) list
val combine_env : 'a -> GoblintCil.lval option -> 'b -> GoblintCil.fundec -> GoblintCil.exp list -> 'c -> 'd -> Queries.ask -> 'd
val combine_assign : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.lval option -> 'e -> GoblintCil.fundec -> GoblintCil.exp list -> 'f -> 'g -> Queries.ask -> 'a
module ThreadIdSet : sig ... end
val name : unit -> string
module G = ThreadIdSet
val reachable : Queries.ask -> GoblintCil.exp -> D.t
val thread_id : ('a, 'b, 'c, 'd) Analyses.ctx -> ThreadIdDomain.ThreadLifted.t Queries.result
val emit_escape_event : ('a, 'b, 'c, 'd) Analyses.ctx -> D.t -> unit

Emit an escape event: Only necessary when code has ever been multithreaded, or when about to go multithreaded.

val side_effect_escape : ('a, G.t, 'b, D.elt) Analyses.ctx -> D.t -> G.elt -> unit

Side effect escapes: In contrast to the emitting the event, side-effecting is necessary in single threaded mode, since we rely on escape status in Base for passing locals reachable via globals

val escape_rval : ('a, G.t, 'b, D.elt) Analyses.ctx -> GoblintCil.exp -> D.t
val special : (D.t, G.t, 'a, D.elt) Analyses.ctx -> GoblintCil.lval option -> GoblintCil.varinfo -> GoblintCil.exp list -> D.t
val startstate : 'a -> D.t
val exitstate : 'a -> D.t
val threadenter : 'a -> multiple:'b -> 'c -> 'd -> 'e -> D.t list
val threadspawn : (D.t, G.t, 'a, D.elt) Analyses.ctx -> multiple:'b -> 'c -> 'd -> GoblintCil.exp list -> 'e -> D.t
val event : (D.t, G.t, 'a, D.elt) Analyses.ctx -> Events.t -> 'b -> D.t
OCaml

Innovation. Community. Security.