sig
type state = Relations_type.Model.t
type t = Cvalue_type.V.t
exception Aborted
val self : State.t
val mark_as_computed : unit -> unit
val compute : (unit -> unit) Pervasives.ref
val is_computed : unit -> bool
module Table :
sig
val self : State.t
val name : string
val kind : State.kind
val mark_as_computed : ?project:Project.t -> unit -> unit
val is_computed : ?project:Project.t -> unit -> bool
module Datatype : Datatype.S
val howto_marshal : (Datatype.t -> 'a) -> ('a -> Datatype.t) -> unit
type key = Cil_types.kinstr
type data = state
val replace : key -> data -> unit
val add : key -> data -> unit
val clear : unit -> unit
val length : unit -> int
val iter : (key -> data -> unit) -> unit
val fold : (key -> data -> 'a -> 'a) -> 'a -> 'a
val memo : ?change:(data -> data) -> (key -> data) -> key -> data
val find : key -> data
val find_all : key -> data list
val mem : key -> bool
val remove : key -> unit
end
val degeneration_occurred :
(Cil_types.kinstr -> Cil_types.lval option -> unit) Pervasives.ref
val register_builtin :
(string ->
(Db.Value.state ->
(Cil_types.exp * Db.Value.t * Cvalue_type.V_Offsetmap.t) list ->
Cvalue_type.V_Offsetmap.t option * Db.Value.state *
Locations.Location_Bits.Top_Param.t) ->
unit)
Pervasives.ref
val mem_builtin : (string -> bool) Pervasives.ref
val fun_set_args : Db.Value.t list -> unit
val fun_use_default_args : unit -> unit
val fun_get_args : unit -> Db.Value.t list option
exception Incorrect_number_of_arguments
val globals_set_initial_state : Db.Value.state -> unit
val globals_use_default_initial_state : unit -> unit
val globals_state : unit -> Db.Value.state
val globals_use_supplied_state : unit -> bool
val get_initial_state : Db_types.kernel_function -> Db.Value.state
val get_state : Cil_types.kinstr -> Db.Value.state
val find : Db.Value.state -> Locations.location -> Db.Value.t
val eval_lval :
(with_alarms:CilE.warn_mode ->
Locations.Zone.t option ->
Db.Value.state -> Cil_types.lval -> Locations.Zone.t option * Db.Value.t)
Pervasives.ref
val eval_expr :
(with_alarms:CilE.warn_mode ->
Db.Value.state -> Cil_types.exp -> Db.Value.t)
Pervasives.ref
val eval_expr_with_state :
(with_alarms:CilE.warn_mode ->
Db.Value.state -> Cil_types.exp -> Db.Value.state * Db.Value.t)
Pervasives.ref
val find_lv_plus :
(with_alarms:CilE.warn_mode ->
Relations_type.Model.t ->
Cil_types.exp -> (Cil_types.lval * Ival.t) list)
Pervasives.ref
val expr_to_kernel_function :
(Cil_types.kinstr ->
with_alarms:CilE.warn_mode ->
deps:Locations.Zone.t option ->
Cil_types.exp -> Locations.Zone.t * Kernel_function.Hptset.t)
Pervasives.ref
val expr_to_kernel_function_state :
(Db.Value.state ->
deps:Locations.Zone.t option ->
Cil_types.exp -> Locations.Zone.t * Kernel_function.Hptset.t)
Pervasives.ref
exception Not_a_call
val call_to_kernel_function : Cil_types.stmt -> Kernel_function.Hptset.t
val valid_behaviors :
(Db_types.kernel_function -> Db.Value.state -> Cil_types.funbehavior list)
Pervasives.ref
val is_accessible : Cil_types.kinstr -> bool
val is_reachable : Db.Value.state -> bool
val is_reachable_stmt : Cil_types.stmt -> bool
exception Void_Function
val find_return_loc : Db_types.kernel_function -> Locations.location
val is_called : (Db_types.kernel_function -> bool) Pervasives.ref
val callers :
(Db_types.kernel_function ->
(Db_types.kernel_function * Cil_types.stmt list) list)
Pervasives.ref
val access :
(Cil_types.kinstr -> Cil_types.lval -> Db.Value.t) Pervasives.ref
val access_expr :
(Cil_types.kinstr -> Cil_types.exp -> Db.Value.t) Pervasives.ref
val access_location :
(Cil_types.kinstr -> Locations.location -> Db.Value.t) Pervasives.ref
val access_after :
(Cil_types.kinstr -> Cil_types.lval -> Db.Value.t) Pervasives.ref
val access_location_after :
(Cil_types.kinstr -> Locations.location -> Db.Value.t) Pervasives.ref
val lval_to_offsetmap_after :
(Cil_types.kinstr -> Cil_types.lval -> Cvalue_type.V_Offsetmap.t option)
Pervasives.ref
val lval_to_loc :
(Cil_types.kinstr ->
with_alarms:CilE.warn_mode -> Cil_types.lval -> Locations.location)
Pervasives.ref
val lval_to_loc_with_deps :
(Cil_types.kinstr ->
with_alarms:CilE.warn_mode ->
deps:Locations.Zone.t ->
Cil_types.lval -> Locations.Zone.t * Locations.location)
Pervasives.ref
val lval_to_loc_with_deps_state :
(Db.Value.state ->
deps:Locations.Zone.t ->
Cil_types.lval -> Locations.Zone.t * Locations.location)
Pervasives.ref
val lval_to_loc_state :
(Db.Value.state -> Cil_types.lval -> Locations.location) Pervasives.ref
val lval_to_offsetmap :
(Cil_types.kinstr ->
Cil_types.lval ->
with_alarms:CilE.warn_mode -> Cvalue_type.V_Offsetmap.t option)
Pervasives.ref
val lval_to_zone :
(Cil_types.kinstr ->
with_alarms:CilE.warn_mode -> Cil_types.lval -> Locations.Zone.t)
Pervasives.ref
val lval_to_zone_state :
(Db.Value.state -> Cil_types.lval -> Locations.Zone.t) Pervasives.ref
val assigns_to_zone_inputs_state :
(Db.Value.state ->
Cil_types.identified_term Cil_types.assigns list -> Locations.Zone.t)
Pervasives.ref
module Record_Value_Callbacks :
sig
type param =
(Db_types.kernel_function * Cil_types.kinstr) list *
state Cil_datatype.Kinstr.Hashtbl.t
type result = unit
val extend : (param -> result) -> unit
val apply : param -> result
val is_empty : unit -> bool
val clear : unit -> unit
val length : unit -> int
end
module Record_Value_Superposition_Callbacks :
sig
type param =
(Db_types.kernel_function * Cil_types.kinstr) list *
State_set.t Cil_datatype.Kinstr.Hashtbl.t
type result = unit
val extend : (param -> result) -> unit
val apply : param -> result
val is_empty : unit -> bool
val clear : unit -> unit
val length : unit -> int
end
module Call_Value_Callbacks :
sig
type param = state * (Db_types.kernel_function * Cil_types.kinstr) list
type result = unit
val extend : (param -> result) -> unit
val apply : param -> result
val is_empty : unit -> bool
val clear : unit -> unit
val length : unit -> int
end
val pretty : Format.formatter -> Db.Value.t -> unit
val pretty_state_without_null : Format.formatter -> Db.Value.state -> unit
val pretty_state : Format.formatter -> Db.Value.state -> unit
val display : Format.formatter -> Db_types.kernel_function -> unit
val display_globals : Format.formatter -> unit -> unit
val noassert_get_state : Cil_types.kinstr -> Db.Value.state
val initial_state_only_globals : (unit -> Db.Value.state) Pervasives.ref
val update_table : Cil_types.kinstr -> Db.Value.state -> unit
val memoize : (Db_types.kernel_function -> unit) Pervasives.ref
val merge_initial_state :
Db_types.kernel_function -> Db.Value.state -> unit
end