package goblint
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=452d8491527aea21f2cbb11defcc14ba0daf9fdb6bdb9fc0af73e56eac57b916
sha512=1993cd45c4c7fe124ca6e157f07d17ec50fab5611b270a434ed1b7fb2910aa85a8e6eaaa77dad770430710aafb2f6d676c774dd33942d921f23e2f9854486551
doc/goblint.lib/Goblint_lib/WitnessConstraints/PathSensitive3/index.html
Module WitnessConstraints.PathSensitive3
Add path sensitivity to a analysis
Parameters
module Spec : Analyses.Spec
Signature
module C : Printable.S
module V : Analyses.SpecSysVar
Global constraint variables.
module P : DisjointDomain.Representative with type elt := D.t
Global constraint variables.
Auxiliary data (outside of solution domains) that needs to be marshaled and unmarshaled. This includes: * hashtables, * varinfos (create_var), * RichVarinfos.
val init : marshal option -> unit
Initialize using unmarshaled auxiliary data (if present).
val finalize : unit -> marshal
Finalize and return auxiliary data to be marshaled.
val startstate : GoblintCil.varinfo -> D.t
val morphstate : GoblintCil.varinfo -> D.t -> D.t
val exitstate : GoblintCil.varinfo -> D.t
val context :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.fundec ->
D.t ->
C.t
val startcontext : unit -> C.t
val sync :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
[ `Normal | `Join | `JoinCall of CilType.Fundec.t | `Return ] ->
D.t
val query :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
'a Queries.t ->
'a Queries.result
val assign :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.lval ->
GoblintCil.exp ->
D.t
A transfer function which handles the assignment of a rval to a lval, i.e., it handles program points of the form "lval = rval;"
val vdecl : (D.t, G.t, C.t, V.t) Analyses.ctx -> GoblintCil.varinfo -> D.t
A transfer function used for declaring local variables. By default only for variable-length arrays (VLAs).
val branch : (D.t, G.t, C.t, V.t) Analyses.ctx -> GoblintCil.exp -> bool -> D.t
A transfer function which handles conditional branching yielding the truth value passed as a boolean argument
val body : (D.t, G.t, C.t, V.t) Analyses.ctx -> GoblintCil.fundec -> D.t
A transfer function which handles going from the start node of a function (fundec) into its function body. Meant to handle, e.g., initialization of local variables
val return :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.exp option ->
GoblintCil.fundec ->
D.t
A transfer function which handles the return statement, i.e., "return exp" or "return" in the passed function (fundec)
A transfer function meant to handle inline assembler program points
A transfer function which works as the identity function, i.e., it skips and does nothing. Used for empty loops.
val special :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
D.t
A transfer function which, for a call to a special function f "lval = f(args)" or "f(args)", computes the caller state after the function call
val enter :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.lval option ->
GoblintCil.fundec ->
GoblintCil.exp list ->
(D.t * D.t) list
For a function call "lval = f(args)" or "f(args)", enter
returns a caller state, and the initial state of the callee. In enter
, the caller state can usually be returned unchanged, as combine_env
and combine_assign
(below) will compute the caller state after the function call, given the return state of the callee
val combine_env :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.lval option ->
GoblintCil.exp ->
GoblintCil.fundec ->
GoblintCil.exp list ->
C.t option ->
D.t ->
Queries.ask ->
D.t
Combine environment (global variables, mutexes, etc) between local state (first component from enter) and function return.
This shouldn't yet assign to the lval.
val combine_assign :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
GoblintCil.lval option ->
GoblintCil.exp ->
GoblintCil.fundec ->
GoblintCil.exp list ->
C.t option ->
D.t ->
Queries.ask ->
D.t
Combine return value assignment to local state (result from combine_env) and function return.
This should only assign to the lval.
val threadenter :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
multiple:bool ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
D.t list
Returns initial state for created thread.
val threadspawn :
(D.t, G.t, C.t, V.t) Analyses.ctx ->
multiple:bool ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
(D.t, G.t, C.t, V.t) Analyses.ctx ->
D.t
Updates the local state of the creator thread using initial state of created thread.