package codex
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=bc7266a140c6886add673ede90e335d3
sha512=8da42c0ff2c1098c5f9cb2b5b43b306faf7ac93b8f5ae00c176918cee761f249ff45b29309f31a05bbcf6312304f86a0d5a000eb3f1094d3d3c2b9b4c7f5c386
doc/codex.operator/Operator/Alarm/index.html
Module Operator.AlarmSource
In the concrete, an alarm would correspond to an exception/panic due to a partial operator.
In the abstract, it corresponds to a (possible) error reported to the user.
Some transfer functions are partial: e.g. division by zero, loading at invalid addresses, arithmetic operation that overflow when overflowing is not permitted. When this situation happens in the analyzer, we raise an alarm.
TODO: we should add more information to better report what is the alarm. For instance, for overflows, we should tell what kind of operation created an overflow (add, sub, mul, div by -1, etc.), what kind of overflow (signed,unsigned, or unsigned + signed), etc.
TODO: We should raise the corresponding alarm as an exception in the concrete implementation too, to better document what is happening.
TODO: We should factorize and document each alarm.
Signed means that both operations were signed, the result was signed and did not fit in size bits.
Unsigned means that both operations were unsigned, the result was unsigned and did not fit in size bits.
Unsigned_signed means that the first operation was unsigned, the second signed, the result was unsigned and did not fit in size bits.
Operation that triggered the overflow warning.
type _ t = | Integer_overflow : {overflow_type : integer_overflow_type;size : Units.In_bits.t;operation : integer_overflow_operation;
} -> [ `Any ] t(*An integer operation on bitvector overflows its type.
*)| Integer_underflow : {overflow_type : integer_overflow_type;size : Units.In_bits.t;operation : integer_overflow_operation;
} -> [ `Any ] t(*An integer operation on bitvector underflows its type.
*)| Free_on_null_address : [ `Any ] t| Extract_offset : [ `Any ] t| Heap_typing : [ `Any ] t| Weak_type : [ `Any ] t| Weak_array_type : [ `Any ] t| Array_offset_access : [ `Any ] t| Load_param_nonptr : [ `Any ] t| Store_param_nonptr : [ `Any ] t| Load_param_nonptr_old : [ `Any ] t| Incompatible_function_pointer : [ `Any ] t| Incompatible_return_type : [ `Any ] t| Impure_store : [ `Any ] t| Manual_stub : [ `Any ] t| Ptr_arith : [ `Any ] t| Invalid_load_access : [ `Any ] t| Invalid_store_access : [ `Any ] t| Possibly_false_assertion : [ `Any ] t| Unresolved_dynamic_jump : [ `Any ] t| Weak_type_use : [ `Typing ] t| Typing_store : [ `Typing ] t
This is a list of all alarms that can be raised by Codex