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
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=29612882330ecb6eddd0b4ca3afc0492b70d0feb3379a1b8e893194c6e173983
doc/frama-c-eva.gui/Eva_gui/Gui_eval/Make/argument-1-X/Loc/index.html
Module X.Loc
type value = Val.tval top : locationval pretty_loc : Format.formatter -> location -> unitval pretty_offset : Format.formatter -> offset -> unitval to_value : location -> value Eva.Eval.or_bottomval size : location -> Frama_c_kernel.Int_Base.tval replace_base : Frama_c_kernel.Base.substitution -> location -> locationreplace_base substitution location replaces the variables represented by the location according to substitution.
Alarms
These functions are used to create the alarms that report undesirable behaviors, when a location abstraction does not meet the prerequisites of an operation. Thereafter, the location is assumed to meet them to continue the analysis. See the documentation of Abstract_value.truth for more details.
val assume_no_overlap :
partial:bool ->
location ->
location ->
[ `False
| `Unknown of location * location
| `True
| `TrueReduced of location * location
| `Unreachable ]Assumes that two locations do not overlap. If partial is true, the concrete locations may be equal, but different locations must not overlap. Otherwise, the locations must be completely separate.
val assume_valid_location :
for_writing:bool ->
bitfield:bool ->
location ->
[ `False
| `Unknown of location
| `True
| `TrueReduced of location
| `Unreachable ]Assumes that the given location is valid for a read or write operation, according to the for_writing boolean. Used to emit memory access alarms. If the location is not completely valid, reduces it to its valid part. bitfield indicates whether the location may be the one of a bitfield; if it is false, the location can be assumed to be byte aligned.
Forward Offset Operations
val no_offset : offsetval forward_field :
Frama_c_kernel.Cil_types.typ ->
Frama_c_kernel.Cil_types.fieldinfo ->
offset ->
offsetComputes the field offset of a fieldinfo, with the given remaining offset. The given type must the one of the structure or the union.
val forward_index : Frama_c_kernel.Cil_types.typ -> value -> offset -> offsetforward_index typ value offset computes the array index offset of (Index (ind, off)), where the index expression ind evaluates to value and the remaining offset off evaluates to offset. typ must be the type pointed by the array.
Forward Locations Operations
Evaluation of the location of an lvalue, when the offset has already been evaluated. In case of a pointer, its expression has also been evaluated to a value.
val forward_variable :
Frama_c_kernel.Cil_types.typ ->
Frama_c_kernel.Cil_types.varinfo ->
offset ->
location Eva.Eval.or_bottomVar case in the AST: the host is a variable.
val forward_pointer :
Frama_c_kernel.Cil_types.typ ->
value ->
offset ->
location Eva.Eval.or_bottomMem case in the AST: the host is a pointer.
val eval_varinfo : Frama_c_kernel.Cil_types.varinfo -> locationBackward Operations
For an unary forward operation F, the inverse backward operator B tries to reduce the argument values of the operation, given its result.
It must satisfy: if B arg res = v then ∀ a ⊆ arg such that F a ⊆ res, a ⊆ v
i.e. B arg res returns a value v larger than all subvalues of arg whose result through F is included in res.
If F arg ∈ res is impossible, then v should be bottom.
Any n-ary operator may be considered as a unary operator on a vector of values, the inclusion being lifted pointwise.
val backward_variable :
Frama_c_kernel.Cil_types.varinfo ->
location ->
offset Eva.Eval.or_bottomval backward_field :
Frama_c_kernel.Cil_types.typ ->
Frama_c_kernel.Cil_types.fieldinfo ->
offset ->
offset Eva.Eval.or_bottomval backward_index :
Frama_c_kernel.Cil_types.typ ->
index:value ->
remaining:offset ->
offset ->
(value * offset) Eva.Eval.or_bottomval structure : location Eva__.Abstract.Location.structureval get : 'a Eva__.Structure.Key_Location.key -> (location -> 'a) optionFor a key of type k key:
- if the values of type
tcontain a subpart of typekfrom a module identified by the key, thenget keyreturns an accessor for it. - otherwise,
get keyreturns None.
For a key of type k key:
- if the values of type
tcontain a subpart of typekfrom a module identified by the key, thenset key v treturns the valuetin which this subpart has been replaced byv. - otherwise,
set key _is the identity function.
Iterators on the components of a structure.
val iter : polymorphic_iter_fun -> location -> unitval fold : 'b polymorphic_fold_fun -> location -> 'b -> 'bval map : polymorphic_map_fun -> location -> location