Frama-C API - Callstack
A call is identified by the function called and the call statement
module Call : Frama_c_kernel.Datatype.S with type t = calltype callstack = {thread : int;entry_point : Frama_c_kernel.Cil_types.kernel_function;(*The first function function of the callstack.
*)stack : call list;(*A call stack is a list of calls. The head is the latest call.
*)
}Eva callstacks.
include Frama_c_kernel.Datatype.S_with_collections with type t = callstack
include Frama_c_kernel.Datatype.S with type t = callstack
include Frama_c_kernel.Datatype.S_no_copy with type t = callstack
include Frama_c_kernel.Datatype.Ty with type t = callstack
type t = callstackval ty : t Frama_c_kernel.Type.tval datatype_descr : t Frama_c_kernel.Descr.tDatatype descriptor.
val packed_descr : Frama_c_kernel.Structural_descr.packPacked version of the descriptor.
val reprs : t listList of representants of the descriptor.
val hash : t -> intHash function: same spec than Hashtbl.hash.
val pretty : Stdlib.Format.formatter -> t -> unitPretty print each value in an user-friendly way.
val mem_project : (Frama_c_kernel.Project_skeleton.t -> bool) -> t -> boolmem_project f x must return true iff there is a value p of type Project.t in x such that f p returns true.
module Set : Frama_c_kernel.Datatype.Set with type elt = tmodule Map : Frama_c_kernel.Datatype.Map with type key = tmodule Hashtbl : Frama_c_kernel.Datatype.Hashtbl with type key = tval pretty_short : Stdlib.Format.formatter -> t -> unitPrints a callstack without displaying call sites.
val pretty_hash : Stdlib.Format.formatter -> t -> unitPrints a hash of the callstack.
compare_lex compares callstack lexicographically, slightly slower than compare but in a more natural order, giving more importance to the function at bottom of the callstack - the first functions called.
val is_empty : t -> boolis_empty cs returns true if the callstack is empty, i.e., top_callsite would return Kglobal.
val init : thread:int -> entry_point:Frama_c_kernel.Cil_types.kernel_function -> tval push : Frama_c_kernel.Cil_types.kernel_function -> Frama_c_kernel.Cil_types.stmt -> t -> tAdds a new call to the top of the callstack.
val pop_call : t -> Frama_c_kernel.Cil_types.kernel_function * (Frama_c_kernel.Cil_types.stmt * t) optionRemoves the topmost call from the callstack and returns it.
val top : t -> (Frama_c_kernel.Cil_types.kernel_function * Frama_c_kernel.Cil_types.stmt) optionval top_kf : t -> Frama_c_kernel.Cil_types.kernel_functionval top_callsite : t -> Frama_c_kernel.Cil_types.kinstrval top_call : t -> Frama_c_kernel.Cil_types.kernel_function * Frama_c_kernel.Cil_types.kinstrval top_caller : t -> (Frama_c_kernel.Cil_types.stmt * Frama_c_kernel.Cil_types.kernel_function) optionReturns the function that called the topmost function of the callstack and the top callsite.
Conversion
val to_kf_list : t -> Frama_c_kernel.Cil_types.kernel_function listGives the list of kf in the callstack from the entry point to the top of the callstack (i.e. reverse order of the call stack).
val to_stmt_list : t -> Frama_c_kernel.Cil_types.stmt listGives the list of call statements from the bottom to the top of the callstack (i.e. reverse order of the call stack).
val to_call_list : t -> (Frama_c_kernel.Cil_types.kernel_function * Frama_c_kernel.Cil_types.kinstr) listGives the list of call from the bottom to the top of the callstack (i.e. reverse order of the call stack).
