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=9c1b14a689ac8ccda9e827c2eede13bb8d781fb8e4e33c1b5360408e312127d2
doc/frama-c.kernel/Frama_c_kernel/Locations/Location_Bytes/index.html
Module Locations.Location_Bytes
Association between bases and offsets in byte.
module M : sig ... endtype t = private | Top of Base.SetLattice.t * Origin.t(*Garbled mix of the addresses in the set
*)| Map of M.t(*Precise set of addresses+offsets
*)
type size_widen_hint = Ival.size_widen_hinttype numerical_widen_hint = Base.t -> Ival.numerical_widen_hinttype widen_hint = size_widen_hint * numerical_widen_hintThose locations have a lattice structure, including standard operations such as join, narrow, etc.
include Lattice_type.AI_Lattice_with_cardinal_one
with type t := t
and type widen_hint := widen_hint
include Lattice_type.Bounded_Join_Semi_Lattice with type t := t
include Lattice_type.Join_Semi_Lattice with type t := t
datatype of element of the lattice
include Datatype.S with type t := t
include Datatype.S_no_copy with type t := t
include Datatype.Ty with type t := t
val bottom : tsmallest element
include Lattice_type.With_Top with type t := t
val top : tlargest element
include Lattice_type.With_Widening
with type t := t
with type widen_hint := widen_hint
val widen : widen_hint -> t -> t -> twiden h t1 t2 is an over-approximation of join t1 t2. Assumes is_included t1 t2
include Lattice_type.With_Cardinal_One with type t := t
include Lattice_type.With_Intersects with type t := t
include Datatype.S_with_collections with type t := t
include Datatype.S with type t := t
include Datatype.S_no_copy with type t := t
include Datatype.Ty with type t := t
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 : 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.
module Set : Datatype.Set with type elt = tmodule Map : Datatype.Map with type key = tmodule Hashtbl : Datatype.Hashtbl with type key = tval singleton_zero : tthe set containing only the value for to the C expression 0
val singleton_one : tthe set containing only the value 1
val zero_or_one : tval is_zero : t -> boolval is_bottom : t -> boolval top_int : tval top_float : tval top_single_precision_float : tadd b i loc binds b to i in loc when i is not Ival.bottom, and returns bottom otherwise.
val replace_base : Base.substitution -> t -> bool * treplace_base subst loc changes the location loc by substituting the pointed bases according to subst. If substitution conflates different bases, the offsets bound to these bases are joined.
Over-approximation of difference. arg2 needs to be exact or an under_approximation.
Over- and under-approximation of shifting the value by the given Ival.
val sub_pointwise : ?factor:Int_Base.t -> t -> t -> Ival.tSubtracts the offsets of two locations loc1 and loc2. Returns the pointwise subtraction of their offsets off1 - factor * off2. factor defaults to 1.
Subtracts the offsets of two locations. Same as sub_pointwise factor:1, except that garbled mixes from operands are propagated into the result.
val topify_with_origin_kind : Origin.kind -> t -> tval inject_top_origin : Origin.t -> Base.Hptset.t -> tinject_top_origin origin p creates a top with origin origin and additional information param
Fold on all the bases of the location, including Top bases.
Fold with offsets, including in the case Top bases. In this case, Ival.top is supplied to the iterator.
fold_enum f loc acc enumerates the locations in acc, and passes them to f. Make sure to call cardinal_less_than before calling this function, as all possible combinations of bases/offsets are presented to f. Raises Error_Top if loc is Top _ or if one offset cannot be enumerated.
Builds a sequence of all bases (with their offsets) of the location.
val cached_fold :
cache_name:string ->
temporary:bool ->
f:(Base.t -> Ival.t -> 'a) ->
projection:(Base.t -> Ival.t) ->
joiner:('a -> 'a -> 'a) ->
empty:'a ->
t ->
'aCached version of fold_i, for advanced users
Number of locations
val cardinal_zero_or_one : t -> boolval cardinal_less_than : t -> int -> intcardinal_less_than v card returns the cardinal of v if it is less than card, or raises Not_less_than.
if there is only one base b in the location, then returns the pair b,o where o are the offsets associated to b.
if there is only one binding b -> o in the location (that is, only one base b with cardinal_zero_or_one o), returns the pair b,o.
val get_bases : t -> Base.SetLattice.tReturns the bases the location may point to. Never fails, but may return Base.SetLattice.Top.
Local variables inside locations
contains_addresses_of_locals is_local loc returns true if loc contains the address of a variable for which is_local returns true
remove_escaping_locals is_local v removes from v the information associated with bases for which is_local returns true. The returned boolean indicates that v contained some locals.
val contains_addresses_of_any_locals : t -> boolcontains_addresses_of_any_locals loc returns true iff loc contains the address of a local variable or of a formal variable.
Misc
val is_relationable : t -> boolis_relationable loc returns true iff loc represents a single memory location.
val get_garbled_mix : unit -> t listAll the garbled mix that have been created so far, sorted by "temporal" order of emission.