module Alarms:sig..end
type overflow_kind =
| |
Signed |
| |
Unsigned |
| |
Signed_downcast |
| |
Unsigned_downcast |
type access_kind =
| |
For_reading |
| |
For_writing |
type bound_kind =
| |
Lower_bound |
| |
Upper_bound |
type alarm =
| |
Division_by_zero of |
|||
| |
Memory_access of |
|||
| |
Logic_memory_access of |
|||
| |
Index_out_of_bound of |
(* |
None = lower bound is zero; Some up = upper bound
| *) |
| |
Invalid_shift of |
(* |
strict upper bound, if any
| *) |
| |
Pointer_comparison of |
|||
| |
Differing_blocks of |
(* |
The two expressions (which evaluate to
pointers) must point to the same allocated block
| *) |
| |
Overflow of |
|||
| |
Float_to_int of |
|||
| |
Not_separated of |
(* |
the two lvalues must be separated
| *) |
| |
Overlap of |
(* |
overlapping read/write: the two lvalues must be
separated or equal
| *) |
| |
Uninitialized of |
|||
| |
Dangling of |
|||
| |
Is_nan_or_infinite of |
|||
| |
Valid_string of |
|||
| |
Function_pointer of |
(* |
the type of the pointer is compatible with
the type of the pointed function.
| *) |
include Datatype.S_with_collections
val self : State.t
val register : Emitter.t ->
?kf:Cil_types.kernel_function ->
Cil_types.kinstr ->
?loc:Cil_types.location ->
?status:Property_status.emitted_status ->
alarm -> Cil_types.code_annotation * boolkf must be given only if the kinstr is a statement, and
must be the function enclosing this statement.kf, loc and
save; also returns the corresponding code_annotationAlarms.to_annot instead.val to_annot : Cil_types.kinstr ->
?loc:Cil_types.location -> alarm -> Cil_types.code_annotation * boolcode_annotation, without any registration.
The returned boolean indicates that the alarm has not been registered
in the kernel yet.val iter : (Emitter.t ->
Cil_types.kernel_function ->
Cil_types.stmt ->
rank:int -> alarm -> Cil_types.code_annotation -> unit) ->
unitval fold : (Emitter.t ->
Cil_types.kernel_function ->
Cil_types.stmt ->
rank:int -> alarm -> Cil_types.code_annotation -> 'a -> 'a) ->
'a -> 'aval find : Cil_types.code_annotation -> alarm optionval remove : ?filter:(alarm -> bool) ->
?kinstr:Cil_types.kinstr -> Emitter.t -> unitkinstr is specified, remove only the ones associated with this
kinstr. If filter is specified, remove only the alarms a such that
filter a is true.val create_predicate : ?loc:Cil_types.location -> t -> Cil_types.predicate Cil_types.namedval get_name : t -> stringval get_short_name : t -> stringval get_description : t -> string