module BuildPdg: sig
.. end
Module to build the PDG.
type
t_state = State.t
type
t_loc = Locations.Zone.t
type
t_arg_nodes = t_node list
type
t = {
|
fct : Db_types.kernel_function ; |
|
mutable topinput : PdgTypes.Node.t option ; |
|
mutable other_inputs : (PdgTypes.Node.t * Build.Dpd.td * Locations.Zone.t) list ; |
|
graph : Build.G.t ; |
|
states : State.t_states ; |
|
index : PdgTypes.InternalPdg.t_index ; |
|
ctrl_dpds : Build.SimpleNodeSet.t Cilutil.InstrHashtbl.t ; |
|
decl_nodes : t_node Cilutil.VarinfoHashtbl.t ; |
}
The PDG used during its computation.
val create : Kernel_function.t -> t
val get_kf : t -> Db_types.kernel_function
val get_states : t -> State.t_states
val pretty : Format.formatter -> t -> unit
val test_and_merge_states : old:State.t -> State.t -> bool * State.t
val print_state : Format.formatter -> State.t -> unit
val process_declarations : t ->
formals:Cilutil.VarinfoHashtbl.key list ->
locals:Cilutil.VarinfoHashtbl.key list -> State.t
val process_call_node : t -> Cil_types.stmt -> unit
val process_call_args : t ->
State.t ->
Cil_types.stmt ->
(Locations.Zone.t * Cilutil.VarinfoSet.t) list -> int * PdgTypes.Node.t list
val process_call_params : t ->
State.t ->
Cil_types.stmt -> Kernel_function.t -> State.t_node list -> State.t
Add a PDG node for each formal argument,
and add its dependencies to the corresponding argument node.
val process_call_ouput : t ->
State.t ->
State.t ->
Cil_types.stmt ->
int ->
Locations.Zone.t -> bool -> Locations.Zone.t -> Locations.Zone.t -> State.t
val process_call_return : t ->
State.t ->
State.t ->
Cil_types.stmt ->
l_loc:Locations.Zone.t ->
exact:bool ->
l_dpds:Locations.Zone.t ->
l_decl:Cilutil.VarinfoSet.t ->
r_dpds:Locations.Zone.t -> Locations.Zone.t -> State.t
mix between process_call_ouput and process_asgn
val process_asgn : t ->
State.t ->
Cil_types.stmt ->
l_loc:Locations.Zone.t ->
exact:bool ->
l_dpds:Locations.Zone.t ->
l_decl:Cilutil.VarinfoSet.t ->
r_dpds:Locations.Zone.t -> r_decl:Cilutil.VarinfoSet.t -> State.t
val process_skip : t -> Cil_types.stmt -> unit
val process_jump : t -> Cil_types.stmt -> Cil_types.stmt list -> unit
val process_jump_with_exp : t ->
Cil_types.stmt ->
Cil_types.stmt list ->
State.t -> Locations.Zone.t -> Cilutil.VarinfoSet.t -> unit
val process_block : t -> Cil_types.stmt -> Cil_types.block -> unit
val process_entry_point : t -> Cil_types.stmt list -> unit
val add_retres : t ->
State.t ->
Cil_types.stmt -> Locations.Zone.t -> Cilutil.VarinfoSet.t -> State.t
val store_last_state : t -> State.t -> unit
val finalize_pdg : t -> Function_Froms.t option -> PdgTypes.InternalPdg.t
from_opt
: for undefined functions (declarations)