Frama-C API - Origin
This module is used to track the origin of very imprecise values (namely "garbled mix", created on imprecise or unsupported operations on addresses) propagated by an Eva analysis.
include Datatype.S
include Datatype.S_no_copy
val packed_descr : Structural_descr.packPacked version of the descriptor.
val reprs : t listList of representants of the descriptor.
val hash : t -> intHash function: same spec than Hashtbl.hash.
val pretty : Stdlib.Format.formatter -> t -> unitPretty print each value in an user-friendly way.
val mem_project : (Project_skeleton.t -> bool) -> t -> boolmem_project f x must return true iff there is a value p of type Project.t in x such that f p returns true.
Creates an origin of the given kind, associated with the current source location extracted from Current_loc.
val well : tOrigin for garbled mix created in the initial state of the analysis (not associated to a source location).
val unknown : tUnknown origin.
val is_unknown : t -> boolval pretty_as_reason : Stdlib.Format.formatter -> t -> unitPretty-print because of <origin> if the origin is not Unknown, or nothing otherwise.
val descr : t -> stringShort description of an origin.
val register : Base.SetLattice.t -> t -> unitRecords the creation of an imprecise value of the given bases.
val register_write : Base.SetLattice.t -> t -> boolRecords the write of an imprecise value of the given bases, with the given origin. Returns true if the given origin has never been written before, and if it is related to the current location — in which case a warning should probably be emitted.
val register_read : Base.SetLattice.t -> t -> unitRecords the read of an imprecise value of the given bases, with the given origin.
Pretty-print a summary of the origins of imprecise values recorded by register_write and register_read above.
