package goblint
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=af01aac256229f33a90a9fcbfed04b01e3097f154d4d124f006476d6387c6a66
sha512=2a93bfe16881adbc2d8dcbfe38c1e19cd24ca105d8e1eda13d02440f3002874ffe2957dfd937510765233a054a40568b0052db92e31d382a5bd215d1ec12565c
doc/goblint.lib/Goblint_lib/Queries/index.html
Module Goblint_lib.Queries
Queries and their result lattices.
module VDQ = ValueDomainQueriesmodule ID = VDQ.IDmodule LS = VDQ.LSmodule TS : sig ... endmodule ES : sig ... endmodule VS : sig ... endmodule NS : sig ... endmodule NFL = WrapperFunctionAnalysis0.NodeFlatLatticemodule TC = WrapperFunctionAnalysis0.ThreadCreateUniqueCountmodule ThreadNodeLattice : sig ... endmodule ML = LibraryDesc.MathLiftedmodule VI : sig ... endmodule VarQuery = Goblint_constraint.VarQuerytype iterprevvar =
int ->
(MyCFG.node * Obj.t * int) ->
MyARG.inline_edge ->
unitmodule FlatYojson : sig ... endmodule VD = ValueDomain.Compoundmodule AD = ValueDomain.ADmodule MayBool = BoolDomain.MayBoolmodule MustBool = BoolDomain.MustBoolmodule Unit = Lattice.Unitmodule ProtectionKind : sig ... endmodule Protection : sig ... endDifferent notions of protection for a global variables g by a mutex m m protects g strongly if:
module AllocationLocation : sig ... endval compare_maybepublic :
maybepublic ->
maybepublic ->
Ppx_deriving_runtime.intval hash_maybepublic : maybepublic -> inttype maybepublicwithout = {global : CilType.Varinfo.t;kind : ProtectionKind.t;without_mutex : LockDomain.MustLock.t;protection : Protection.t;
}val compare_maybepublicwithout :
maybepublicwithout ->
maybepublicwithout ->
Ppx_deriving_runtime.intval hash_maybepublicwithout : maybepublicwithout -> inttype mustbeprotectedby = {mutex : LockDomain.MustLock.t;global : CilType.Varinfo.t;kind : ProtectionKind.t;protection : Protection.t;
}val compare_mustbeprotectedby :
mustbeprotectedby ->
mustbeprotectedby ->
Ppx_deriving_runtime.intval hash_mustbeprotectedby : mustbeprotectedby -> intval compare_mustprotectedvars :
mustprotectedvars ->
mustprotectedvars ->
Ppx_deriving_runtime.intval hash_mustprotectedvars : mustprotectedvars -> intval compare_mustprotectinglocks :
mustprotectinglocks ->
mustprotectinglocks ->
Ppx_deriving_runtime.intval hash_mustprotectinglocks : mustprotectinglocks -> inttype access = | Memory of {exp : CilType.Exp.t;var_opt : CilType.Varinfo.t option;kind : AccessKind.t;
}(*Memory location access (race).
*)| Point(*Program point and state access (MHP), independent of memory location.
*)
val compare_access : access -> access -> Ppx_deriving_runtime.intval hash_access : access -> intval compare_invariant_context :
invariant_context ->
invariant_context ->
Ppx_deriving_runtime.intval hash_invariant_context : invariant_context -> intmodule YS : sig ... endtype _ t = | EqualSet : GoblintCil.exp -> ES.t t| MayPointTo : GoblintCil.exp -> AD.t t| ReachableFrom : GoblintCil.exp -> AD.t t| ReachableUkTypes : GoblintCil.exp -> TS.t t| Regions : GoblintCil.exp -> LS.t t| MayEscape : GoblintCil.varinfo -> MayBool.t t| MayBePublic : maybepublic -> MayBool.t t| MayBePublicWithout : maybepublicwithout -> MayBool.t t| MustBeProtectedBy : mustbeprotectedby -> MustBool.t t| MustLockset : LockDomain.MustLockset.t t| MustBeAtomic : MustBool.t t| MustBeSingleThreaded : {} -> MustBool.t t| MustBeUniqueThread : MustBool.t t| CurrentThreadId : ThreadIdDomain.ThreadLifted.t t| ThreadCreateIndexedNode : ThreadNodeLattice.t t| MayBeThreadReturn : MayBool.t t| EvalFunvar : GoblintCil.exp -> AD.t t| EvalInt : GoblintCil.exp -> ID.t t| EvalStr : GoblintCil.exp -> SD.t t| EvalLength : GoblintCil.exp -> ID.t t| EvalValue : GoblintCil.exp -> VD.t t| BlobSize : {exp : GoblintCil.Cil.exp;base_address : bool;
} -> ID.t t| CondVars : GoblintCil.exp -> ES.t t| PartAccess : access -> Obj.t t(*Only queried by access and deadlock analysis.
*)Obj.trepresentsMCPAccess.A.t, needed to break dependency cycle.| IterPrevVars : iterprevvar -> Unit.t t| IterVars : itervar -> Unit.t t| PathQuery : int * 'a t -> 'a t(*Query only one path under witness lifter.
*)| DYojson : FlatYojson.t t(*Get local state Yojson of one path under
*)PathQuery.| AllocVar : AllocationLocation.t -> VI.t t| IsAllocVar : GoblintCil.varinfo -> MayBool.t t| IsHeapVar : GoblintCil.varinfo -> MayBool.t t| IsMultiple : GoblintCil.varinfo -> MustBool.t t| MutexType : Mval.Unit.t -> MutexAttrDomain.t t| EvalThread : GoblintCil.exp -> ConcDomain.ThreadSet.t t| EvalMutexAttr : GoblintCil.exp -> MutexAttrDomain.t t| EvalJumpBuf : GoblintCil.exp -> JmpBufDomain.JmpBufSet.t t| ActiveJumpBuf : JmpBufDomain.ActiveLongjmps.t t| ValidLongJmp : JmpBufDomain.JmpBufSet.t t| CreatedThreads : ConcDomain.ThreadSet.t t| MustJoinedThreads : ConcDomain.MustThreadSet.t t| ThreadsJoinedCleanly : MustBool.t t| MustProtectedVars : mustprotectedvars -> VS.t t| MustProtectingLocks : mustprotectinglocks -> LockDomain.MustLockset.t t| Invariant : invariant_context -> Invariant.t t| InvariantGlobal : Obj.t -> Invariant.t t(*Argument must be of corresponding
*)Spec.V.t.| WarnGlobal : Obj.t -> Unit.t t(*Argument must be of corresponding
*)Spec.V.t.| IterSysVars : VarQuery.t * Obj.t VarQuery.f -> Unit.t t(*
*)iter_varsforConstraints.FromSpec.Obj.trepresentsSpec.V.t.| MayAccessed : AccessDomain.EventSet.t t| MayBeTainted : AD.t t| MayBeModifiedSinceSetjmp : JmpBufDomain.BufferEntry.t -> VS.t t| MustTermLoop : GoblintCil.stmt -> MustBool.t t| MustTermAllLoops : MustBool.t t| IsEverMultiThreaded : MayBool.t t| TmpSpecial : Mval.Exp.t -> ML.t t| MaySignedOverflow : GoblintCil.exp -> MayBool.t t| GasExhausted : CilType.Fundec.t -> MustBool.t t| YamlEntryGlobal : Obj.t * YamlWitnessType.Task.t -> YS.t t(*YAML witness entries for a global unknown (
*)Obj.trepresentsSpec.V.t) and YAML witness task.| GhostVarAvailable : Goblint_lib__.WitnessGhostVar.t -> MayBool.t t| InvariantGlobalNodes : NS.t t(*Nodes where YAML witness flow-insensitive invariants should be emitted as location invariants (if
*)witness.invariant.flow_insensitive-asis configured to do so).
GADT for queries with specific result type.
Container for explicitly polymorphic man.ask function out of man. To be used when passing entire man around seems inappropriate. Use Analyses.ask_of_man to convert man to ask.
module Result : sig ... endmodule Any : sig ... endval eval_int_binop :
(module Lattice.S with type t = bool) ->
GoblintCil.Cil.binop ->
ask ->
GoblintCil.exp ->
GoblintCil.exp ->
boolval must_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MustBeEqual query.
val may_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MayBeEqual query.
val may_be_less : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MayBeLess query.
val eval_bool : ask -> GoblintCil.exp -> BoolDomain.FlatBool.tmodule Set : sig ... endmodule Hashtbl : sig ... end