Module Callgraph.Uses

Several useful functions over the callgraph

val iter_in_order : ( Frama_c_kernel.Kernel_function.t -> unit ) -> unit

Iterate over all the functions, in the callgraph order, i.e. from callers to callees. In case of cycles (mutual recursive functions), the order is unspecified.

val iter_in_rev_order : ( Frama_c_kernel.Kernel_function.t -> unit ) -> unit

Iterate over all the functions, in the callgraph reverse order, i.e. from callees to callers. In case of cycles (mutual recursive functions), the order is unspecified.

val iter_on_callers : ( Frama_c_kernel.Kernel_function.t -> unit ) -> Frama_c_kernel.Kernel_function.t -> unit

Iterate over all the callers of a given function in a (reverse) depth-first way. Do nothing if the function is not in the callgraph.

val iter_on_callees : ( Frama_c_kernel.Kernel_function.t -> unit ) -> Frama_c_kernel.Kernel_function.t -> unit

Iterate over all the callees of a given function in a (reverse) depth-first way. Do nothing if the function is not in the callgraph.

val accept_base : with_formals:bool -> with_locals:bool -> Frama_c_kernel.Kernel_function.t -> Frama_c_kernel.Base.t -> bool

accept_base formals locals kf b returns true if and only if b is

  • a global
  • a formal or local of one of the callers of kf
  • a formal or local of kf and the corresponding argument is true.
val nb_calls : unit -> int
  • returns

    the number of function calls in the whole callgraph. It is not (necessarily) equal to the number of graph edges (depending on the underlying graph datastructure)