Common.AlarmsAlarms for C runtime errors
***************************
val pp_const_or_interval :
Format.formatter ->
Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.t Mopsa_utils.Core.Bot.with_bot ->
unitPrint an interval depending on its cardinal
val pp_const_or_interval_not_eq :
Format.formatter ->
(Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t
* Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t)
Mopsa_utils.Core.Bot.with_bot ->
unitPrint the not-member operator of an interval, depending on its cardinal
val pp_interval_plurial :
Format.formatter ->
(Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t
* Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t)
Mopsa_utils.Core.Bot.with_bot ->
unitval pp_interval_cardinal_plurial :
Format.formatter ->
(Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t
* Mopsa_analyzer.MopsaLib.ItvUtils.IntItv.B.t)
Mopsa_utils.Core.Bot.with_bot ->
unitval pp_base_verbose : Format.formatter -> Base.base -> unit************************************
type MopsaLib.alarm_kind += | A_c_null_deref of MopsaLib.exprpointer
*)| A_c_invalid_deref of MopsaLib.expr| A_c_out_of_bound of Base.base
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvaccessed bytes
*)| A_c_opaque_access of Base.base
* int
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvaccessed bytes
*)| A_c_dangling_pointer_deref of MopsaLib.expr * MopsaLib.var * MopsaLib.rangereturn location
*)| A_c_use_after_free of MopsaLib.expr * MopsaLib.rangedeallocation site
*)| A_c_modify_read_only of MopsaLib.expr * Base.basepointed base
*)val raise_c_null_deref_alarm :
?bottom:bool ->
MopsaLib.expr ->
?range:Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_invalid_deref_alarm :
?bottom:bool ->
MopsaLib.expr ->
?range:Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_out_bound_alarm :
?bottom:bool ->
Base.base ->
Framework.Core.Ast.Expr.expr ->
Framework.Core.Ast.Expr.expr ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Core.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_opaque_access :
?bottom:bool ->
Base.base ->
int ->
Framework.Core.Ast.Expr.expr ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Core.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_dangling_deref_alarm :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.var ->
MopsaLib.range ->
?range:Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_use_after_free_alarm :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.range ->
?range:Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_modify_read_only_alarm :
?bottom:bool ->
MopsaLib.expr ->
Base.base ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_memory_access_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval unreachable_c_memory_access_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_memory_access_warning :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow********************
val raise_c_divide_by_zero_alarm :
?bottom:bool ->
MopsaLib.expr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_divide_by_zero_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval unreachable_c_divide_by_zero_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow********************
type MopsaLib.alarm_kind += | A_c_integer_overflow of MopsaLib.expr
* Universal.Numeric.Common.int_itv
* MopsaLib.typoverflowed type
*)| A_c_pointer_to_integer_overflow of MopsaLib.expr * MopsaLib.typcast type
*)val raise_c_integer_overflow_alarm :
?warning:bool ->
MopsaLib.expr ->
Framework.Core.Ast.Expr.expr ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Core.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_pointer_to_integer_overflow_alarm :
?warning:bool ->
MopsaLib.expr ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_integer_overflow_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval unreachable_c_integer_overflow_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow*****************
type MopsaLib.alarm_kind += | A_c_invalid_shift of MopsaLib.expr
* MopsaLib.expr
* Universal.Numeric.Common.int_itvshift value
*)val raise_c_invalid_shift_alarm :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.expr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Core.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_shift_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval unreachable_c_shift_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow******************************
type MopsaLib.alarm_kind += | A_c_invalid_pointer_compare of MopsaLib.expr * MopsaLib.exprsecond pointer
*)val raise_c_invalid_pointer_compare :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.expr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_pointer_compare :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow*******************************
type MopsaLib.alarm_kind += | A_c_invalid_pointer_sub of MopsaLib.expr * MopsaLib.exprsecond pointer
*)val raise_c_invalid_pointer_sub :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.expr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_pointer_sub :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow***************
type MopsaLib.alarm_kind += | A_c_double_free of MopsaLib.expr * MopsaLib.rangedeallocation site
*)val raise_c_double_free_alarm :
?bottom:bool ->
MopsaLib.expr ->
MopsaLib.range ->
?range:Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow***********************************
type MopsaLib.alarm_kind += | A_c_insufficient_variadic_args of MopsaLib.var
* Universal.Numeric.Common.int_itv
* Universal.Numeric.Common.int_itvnumber of passed arguments
*)val raise_c_insufficient_variadic_args :
?bottom:bool ->
MopsaLib.var ->
Framework.Core.Ast.Expr.expr ->
'a list ->
Mopsa_utils.Core.Location.range ->
('b, 'c) MopsaLib.man ->
'b Core.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval safe_variadic_args_number :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow*********************************
type MopsaLib.alarm_kind += val raise_c_insufficient_format_args_alarm :
int ->
int ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_insufficient_format_args_warning :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_format_args_number :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow***********************************
type MopsaLib.alarm_kind += | A_c_invalid_format_arg_type of MopsaLib.expr * MopsaLib.typexpected type
*)val raise_c_invalid_format_arg_type_alarm :
MopsaLib.expr ->
MopsaLib.typ ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_invalid_format_arg_type_warning :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_format_arg_type :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow****************
type MopsaLib.alarm_kind += | A_c_invalid_float_class of Universal.Numeric.Common.float_itv * stringexpected class
*)val raise_c_invalid_float_class_alarm :
?bottom:bool ->
Framework.Core.Ast.Expr.expr ->
string ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Core.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowtype MopsaLib.check += There 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 MopsaLib.alarm_kind += | A_c_float_invalid_operation of MopsaLib.expr
* Universal.Numeric.Common.float_itv
* MopsaLib.typdestination type
*)| A_c_float_division_by_zero of MopsaLib.expr
* Universal.Numeric.Common.float_itvdenominator interval
*)| A_c_float_overflow of MopsaLib.expr
* Universal.Numeric.Common.float_itv
* MopsaLib.typtype
*)val raise_c_float_invalid_operation_alarm :
?bottom:bool ->
?warning:bool ->
MopsaLib.expr ->
Universal.Numeric.Common.float_itv ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_float_division_by_zero_alarm :
?bottom:bool ->
?warning:bool ->
MopsaLib.expr ->
Universal.Numeric.Common.float_itv ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval raise_c_float_overflow_alarm :
?bottom:bool ->
?warning:bool ->
MopsaLib.expr ->
Universal.Numeric.Common.float_itv ->
MopsaLib.typ ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_float_invalid_operation_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_float_division_by_zero_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_float_overflow_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow****************
val raise_c_unreachable_memory :
MopsaLib.addr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flow**********************
val raise_c_negative_array_size_alarm :
?bottom:bool ->
MopsaLib.expr ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_negative_array_size_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowval unreachable_c_negative_array_size_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flowtype MopsaLib.alarm_kind += | A_c_incorrect_number_of_arguments of Lang.Ast.c_fundec * MopsaLib.expr listarguments
*)val raise_c_incorrect_number_of_arguments_alarm :
Lang.Ast.c_fundec ->
MopsaLib.expr list ->
Mopsa_utils.Core.Location.range ->
('a, 'b) MopsaLib.man ->
'a Mopsa_analyzer.MopsaLib.Flow.flow ->
'a Mopsa_analyzer.MopsaLib.Flow.flowval safe_c_incorrect_number_of_arguments_check :
Mopsa_utils.Core.Location.range ->
'a ->
'b Mopsa_analyzer.MopsaLib.Flow.flow ->
'b Mopsa_analyzer.MopsaLib.Flow.flow