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.pack
Packed version of the descriptor.
val reprs : t list
List of representants of the descriptor.
val hash : t -> int
Hash function: same spec than Hashtbl.hash
.
val pretty : Stdlib.Format.formatter -> t -> unit
Pretty print each value in an user-friendly way.
val mem_project : (Project_skeleton.t -> bool) -> t -> bool
mem_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 : t
Origin for garbled mix created in the initial state of the analysis (not associated to a source location).
val unknown : t
Unknown origin.
val is_unknown : t -> bool
val pretty_as_reason : Stdlib.Format.formatter -> t -> unit
Pretty-print because of <origin>
if the origin is not Unknown
, or nothing otherwise.
val descr : t -> string
Short description of an origin.
val register : Base.SetLattice.t -> t -> unit
Records the creation of an imprecise value of the given bases.
val register_write : Base.SetLattice.t -> t -> bool
Records 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 -> unit
Records 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.