package frama-c
Install
dune-project
Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=5b13574a16a58971c27909bee94ae7f37b17d897852b40c768a3d4e2e09e39d2
doc/frama-c.kernel/Frama_c_kernel/Lmap/Make_LOffset/index.html
Module Lmap.Make_LOffset
Parameters
module V : sig ... endmodule Offsetmap :
Offsetmap_sig.S
with type v = V.t
and type widen_hint = V.numerical_widen_hintmodule Default_offsetmap : sig ... endSignature
type v = V.ttype of the values associated to a location
type offsetmap = Offsetmap.ttype of the maps associated to a base
type widen_hint_base = V.numerical_widen_hintwidening hints for each base
include Datatype.S_with_collections with type t = lmap
include Datatype.S with type t = lmap
include Datatype.S_no_copy with type t = lmap
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 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.
module Set : Datatype.Set with type elt = tmodule Map : Datatype.Map with type key = tmodule Hashtbl : Datatype.Hashtbl with type key = tval pretty : Format.formatter -> t -> unitval pretty_debug : Format.formatter -> t -> unitval pretty_filter : Format.formatter -> t -> Locations.Zone.t -> unitpretty_filter m z pretties only the part of m that correspond to the bases present in z
val pretty_diff : Format.formatter -> t -> t -> unitGeneral shape
val top : tval is_top : t -> boolval empty_map : tEmpty map. Casual users do not need this except to create a custom initial state.
val is_empty_map : t -> boolval bottom : tEvery location is associated to the value bottom of type v in this state. This state can be reached only in dead code.
val is_reachable : t -> boolJoin and inclusion
module Make_Narrow (X : sig ... end) : sig ... endtype widen_hint = Base.Set.t * (Base.t -> widen_hint_base)Bases that must be widening in priority, plus widening hints for each base.
val widen : widen_hint -> t -> t -> tFinding values
val find : ?conflate_bottom:bool -> t -> Locations.location -> vval copy_offsetmap :
Locations.Location_Bits.t ->
Integer.t ->
t ->
offsetmap Lattice_bounds.or_bottomcopy_offsetmap alarms loc size m returns the superposition of the ranges of size bits starting at loc within m. size must be strictly greater than zero. Return None if all pointed addresses are invalid in m.
val find_base : Base.t -> t -> offsetmap Lattice_bounds.or_top_bottomval find_base_or_default :
Base.t ->
t ->
offsetmap Lattice_bounds.or_top_bottomSame as find_base, but return the default values for bases that are not currently present in the map. Prefer the use of this function to find_base, unless you explicitly want to see if the base is bound.
Binding variables
val add_binding : exact:bool -> t -> Locations.location -> v -> tadd_binding ~exact initial_mem loc v simulates the effect of writing v at location loc, in the initial memory state given by initial_mem. If loc is not writable, bottom is returned. If exact is true, and loc is a precise location, a strong update is performed. Only locations that may be valid are written. Returns the resulting memory after the write.
val paste_offsetmap :
from:offsetmap ->
dst_loc:Locations.Location_Bits.t ->
size:Integer.t ->
exact:bool ->
t ->
tpaste_offsetmap ~from ~dst_loc ~size ~exact m copies from, which is supposed to be exactly size bits, and pastes them at dst_loc in m. The copy is exact if and only if dst_loc is exact, and exact is true. Only the locations that may be valid are written.
add_base b o m adds base b bound to o, replacing any previous bindings of b. No effect on Top or Bottom.
Creates the offsetmap described by size, v and size_v, and binds it to the base. No effect on Top or Bottom.
Filters
Remove from the map all the bases that do not satisfy the predicate.
val filter_by_shape : 'a Hptmap.Shape(Base.Base).t -> t -> tRemove from the map all the bases that are not also present in the given Base.t-indexed tree.
val replace_base : Base.substitution -> t -> treplace_bases substitition map replaces some bases in map according to substitution. If substitution conflates different bases, the offsetmaps bound to these bases are joined.
Iterators
Notice that some iterators require an argument of type map: the cases Top and Bottom must be handled separately. All the iterators below only present bases that are bound to non-default values, according to the function is_default_offsetmap of the function Lmap.Make_Loffset.
Cached iterators
These functions are meant to be partially applied to all their arguments but the final one (the map). They must be called at the toplevel of OCaml modules, as they create persistent caches.
Misc
val remove_variables : Cil_types.varinfo list -> t -> tval shape : map -> offsetmap Hptmap.Shape(Base.Base).tShape of the map. This can be used for simultaneous iterations on other maps indexed by type Base.Base.t.