Frama-C:
Plug-ins:
Libraries:

Frama-C API - Pdg_aux

Useful functions that are not directly accessible through the other Pdg modules.

Refinement of a PDG node: we add an indication of which zone is really impacted

module NS : sig ... end

Sets of pairs Node.t * Zone.t, with a special semantics for zones: add n z (add n z' empty) results in (n, Zone.join z z') instead of a set with two different elements. All operations see only instance of a node, with the join of all possible zones. Conversely, a node should not be present with an empty zone.

type call_interface = (Pdg_types.PdgTypes.Node.t * NS.t) list

Abstract view of a call frontier. An element n, S of the list is such that n is impacted if one of the nodes of S is impacted.

all_call_input_nodes caller callee call_stmt find all the nodes above call_stmt in the pdg of caller that define the inputs of callee. Each input node in callee is returned with the set of nodes that define it in caller.

val all_call_out_nodes : callee:Pdg.Api.t -> caller:Pdg.Api.t -> Frama_c_kernel.Cil_types.stmt -> call_interface

all_call_out_nodes ~callee ~caller stmt find all the nodes of callee that define the Call/Out nodes of caller for the call to callee that occurs at stmt. Each such out node is returned, with the set of nodes that define it in callee