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/Precise_locs/index.html
Module Frama_c_kernel.Precise_locs
This module provides transient datastructures that may be more precise than an Ival.t, Locations.Location_Bits.t and Locations.location respectively, typically for l-values such as t[i][j], p->t[i], etc. Those structures do not have a lattice structure, and cannot be stored as an abstract domain. However, they can be use to model more precisely read or write accesses to semi-imprecise l-values.
Precise offsets
val pretty_offset : Format.formatter -> precise_offset -> unitval equal_offset : precise_offset -> precise_offset -> boolval offset_zero : precise_offsetval offset_bottom : precise_offsetval offset_top : precise_offsetval inject_ival : Ival.t -> precise_offsetval is_bottom_offset : precise_offset -> boolval imprecise_offset : precise_offset -> Ival.tval shift_offset_by_singleton : Integer.t -> precise_offset -> precise_offsetval shift_offset : Ival.t -> precise_offset -> precise_offsetPrecise location_bits
val pretty_loc_bits : Format.formatter -> precise_location_bits -> unitval bottom_location_bits : precise_location_bitsval inject_location_bits : Locations.Location_Bits.t -> precise_location_bitsval combine_base_precise_offset :
Base.t ->
precise_offset ->
precise_location_bitsval combine_loc_precise_offset :
Locations.Location_Bits.t ->
precise_offset ->
precise_location_bitsval imprecise_location_bits :
precise_location_bits ->
Locations.Location_Bits.tPrecise locations
val equal_loc : precise_location -> precise_location -> boolval loc_size : precise_location -> Int_Base.tval make_precise_loc :
precise_location_bits ->
size:Int_Base.t ->
precise_locationval imprecise_location : precise_location -> Locations.locationval loc_bottom : precise_locationval is_bottom_loc : precise_location -> boolval loc_top : precise_locationval is_top_loc : precise_location -> boolval replace_base : Base.substitution -> precise_location -> precise_locationval fold : (Locations.location -> 'a -> 'a) -> precise_location -> 'a -> 'aval enumerate_valid_bits :
Locations.access ->
precise_location ->
Locations.Zone.tval valid_cardinal_zero_or_one : for_writing:bool -> precise_location -> boolIs the restriction of the given location to its valid part precise enough to perform a strong read, or a strong update.
val cardinal_zero_or_one : precise_location -> boolShould not be used, valid_cardinal_zero_or_one is almost always more useful
val pretty_loc : precise_location Pretty_utils.formatterval valid_part :
Locations.access ->
bitfield:bool ->
precise_location ->
precise_locationOverapproximation of the valid part of the given location (without any access, or for a read or write access). bitfield indicates whether the location may be the one of a bitfield, and is true by default. If it is set to false, the location is assumed to be byte aligned, and its offset (expressed in bits) is reduced to be congruent to 0 modulo 8.