package goblint
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=20d5b7332a9f6072ab9ba86c4a53b898eaf681286c56a8805c41850bbf3ddf41
sha512=7c7685cfcd9aa866bc40e813df2bfcb3c79b3d40e615d8d6d0939c5798b9d70dd7f2ba87a741f5ba0ce891e9d254627207fb28057f1f2f6611e4e0d128fd6a71
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.
module Set : sig ... endmodule Hashtbl : sig ... end