package goblint
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=9175eec0143102243964e34a0786584fd590c60422009259c705a89a27f88de4
sha512=9d760007dd8d003cf596516444ed7acc7370fc3d446e75ac71b0176522c3baae090410762f9035e7aae4f6b0e394bf28bb5b1c08ca0476920b94aa919ef04f42
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 ... endmodule CL : sig ... endmodule LH : 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.FiniteMustThreadSet.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).| DescendantThreads : ThreadIdDomain.Thread.t -> ConcDomain.ThreadSet.t t| CreationLockset : ThreadIdDomain.Thread.t -> CL.t t| MustlockHistory : LH.t t| TutorialEffectivelyLocal : GoblintCil.varinfo -> MustBool.t t(*Used in tutorial for effectively local variables.
*)
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 Bool : Lattice.S
with type t = bool)
->
GoblintCil.Cil.binop ->
ask ->
GoblintCil.exp ->
GoblintCil.exp ->
Bool.tval must_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> MustBool.tBackwards-compatibility for former MustBeEqual query.
val may_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> MayBool.tBackwards-compatibility for former MayBeEqual query.
val may_be_less : ask -> GoblintCil.exp -> GoblintCil.exp -> MayBool.tBackwards-compatibility for former MayBeLess query.
val eval_bool : ask -> GoblintCil.exp -> BoolDomain.FlatBool.tmodule Set : sig ... endmodule Hashtbl : sig ... end