Common.AlarmsSourceAlarms for C runtime errors
***************************
val pp_const_or_interval :
Stdlib.Format.formatter ->
Universal.Numeric.Common.I.t Mopsa.Bot.with_bot ->
unitPrint an interval depending on its cardinal
val pp_const_or_interval_not_eq :
Stdlib.Format.formatter ->
(Universal.Numeric.Common.I.B.t * Universal.Numeric.Common.I.B.t)
Mopsa.Bot.with_bot ->
unitPrint the not-member operator of an interval, depending on its cardinal
val pp_interval_plurial :
Stdlib.Format.formatter ->
(Universal.Numeric.Common.I.B.t * Universal.Numeric.Common.I.B.t)
Mopsa.Bot.with_bot ->
unitval pp_interval_cardinal_plurial :
Stdlib.Format.formatter ->
(Universal.Numeric.Common.I.B.t * Universal.Numeric.Common.I.B.t)
Mopsa.Bot.with_bot ->
unit************************************
type Mopsa.alarm_kind += | A_c_null_deref of Mopsa.exprpointer
*)| A_c_invalid_deref of Mopsa.expr| A_c_out_of_bound of C_common__.Base.base
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvaccessed bytes
*)| A_c_opaque_access of C_common__.Base.base
* int
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvaccessed bytes
*)| A_c_dangling_pointer_deref of Mopsa.expr * Mopsa.var * Mopsa.rangereturn location
*)| A_c_use_after_free of Mopsa.expr * Mopsa.rangedeallocation site
*)| A_c_modify_read_only of Mopsa.expr * C_common__.Base.basepointed base
*)val raise_c_null_deref_alarm :
?bottom:bool ->
Mopsa.expr ->
?range:Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_invalid_deref_alarm :
?bottom:bool ->
Mopsa.expr ->
?range:Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_out_bound_alarm :
?bottom:bool ->
C_common__.Base.base ->
Ast.Expr.expr ->
Ast.Expr.expr ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Core.Flow.flow ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_opaque_access :
?bottom:bool ->
C_common__.Base.base ->
int ->
Ast.Expr.expr ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Core.Flow.flow ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_dangling_deref_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa.var ->
Mopsa.range ->
?range:Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_use_after_free_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa.range ->
?range:Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_modify_read_only_alarm :
?bottom:bool ->
Mopsa.expr ->
C_common__.Base.base ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_memory_access_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval unreachable_c_memory_access_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval raise_c_memory_access_warning :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow********************
val raise_c_divide_by_zero_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_divide_by_zero_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval unreachable_c_divide_by_zero_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow********************
type Mopsa.alarm_kind += | A_c_integer_overflow of Mopsa.expr
* Universal.Numeric.Common.int_itv
* Mopsa.typoverflowed type
*)| A_c_pointer_to_integer_overflow of Mopsa.expr * Mopsa.typcast type
*)val raise_c_integer_overflow_alarm :
?warning:bool ->
Mopsa.expr ->
Ast.Expr.expr ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Core.Flow.flow ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_pointer_to_integer_overflow_alarm :
?warning:bool ->
Mopsa.expr ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_integer_overflow_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval unreachable_c_integer_overflow_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow*****************
type Mopsa.alarm_kind += | A_c_invalid_shift of Mopsa.expr * Mopsa.expr * Universal.Numeric.Common.int_itvshift value
*)val raise_c_invalid_shift_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa.expr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Core.Flow.flow ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_shift_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval unreachable_c_shift_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow******************************
type Mopsa.alarm_kind += | A_c_invalid_pointer_compare of Mopsa.expr * Mopsa.exprsecond pointer
*)val raise_c_invalid_pointer_compare :
?bottom:bool ->
Mopsa.expr ->
Mopsa.expr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_pointer_compare :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow*******************************
type Mopsa.alarm_kind += | A_c_invalid_pointer_sub of Mopsa.expr * Mopsa.exprsecond pointer
*)val raise_c_invalid_pointer_sub :
?bottom:bool ->
Mopsa.expr ->
Mopsa.expr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_pointer_sub :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow***************
val raise_c_double_free_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa.range ->
?range:Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flow***********************************
type Mopsa.alarm_kind += | A_c_insufficient_variadic_args of Mopsa.var
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvnumber of passed arguments
*)val raise_c_insufficient_variadic_args :
?bottom:bool ->
Mopsa.var ->
Ast.Expr.expr ->
'a list ->
Mopsa_utils.Location.range ->
('b, 'c) Mopsa.man ->
'b Core.Flow.flow ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval safe_variadic_args_number :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow*********************************
val raise_c_insufficient_format_args_alarm :
int ->
int ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_insufficient_format_args_warning :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval safe_c_format_args_number :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow***********************************
type Mopsa.alarm_kind += | A_c_invalid_format_arg_type of Mopsa.expr * Mopsa.typexpected type
*)val raise_c_invalid_format_arg_type_alarm :
Mopsa.expr ->
Mopsa.typ ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_invalid_format_arg_type_warning :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval safe_c_format_arg_type :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow****************
type Mopsa.alarm_kind += | A_c_invalid_float_class of Universal.Numeric.Common.float_itv * stringexpected class
*)val raise_c_invalid_float_class_alarm :
?bottom:bool ->
Ast.Expr.expr ->
string ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Core.Flow.flow ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowThere are five IEEE 754 exceptions. We only singal include invalid operation, division by zero and overflow. We don't care about underflow (rounding to 0) and inexact (rounding).
type Mopsa.alarm_kind += | A_c_float_invalid_operation of Mopsa.expr
* Universal.Numeric.Common.float_itv
* Mopsa.typdestination type
*)| A_c_float_division_by_zero of Mopsa.expr * Universal.Numeric.Common.float_itvdenominator interval
*)| A_c_float_overflow of Mopsa.expr
* Universal.Numeric.Common.float_itv
* Mopsa.typtype
*)val raise_c_float_invalid_operation_alarm :
?bottom:bool ->
?warning:bool ->
Mopsa.expr ->
Universal.Numeric.Common.float_itv ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_float_division_by_zero_alarm :
?bottom:bool ->
?warning:bool ->
Mopsa.expr ->
Universal.Numeric.Common.float_itv ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval raise_c_float_overflow_alarm :
?bottom:bool ->
?warning:bool ->
Mopsa.expr ->
Universal.Numeric.Common.float_itv ->
Mopsa.typ ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_float_invalid_operation_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval safe_c_float_division_by_zero_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval safe_c_float_overflow_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow****************
val raise_c_unreachable_memory :
Mopsa.addr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flow**********************
val raise_c_negative_array_size_alarm :
?bottom:bool ->
Mopsa.expr ->
Mopsa_utils.Location.range ->
('a, 'b) Mopsa.man ->
'a Mopsa.Flow.flow ->
'a Mopsa.Flow.flowval safe_c_negative_array_size_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flowval unreachable_c_negative_array_size_check :
Mopsa_utils.Location.range ->
'a ->
'b Mopsa.Flow.flow ->
'b Mopsa.Flow.flow