package frama-c

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Pdg_types.PdgMarksSource

This module provides elements to mapped information (here called 'marks') to PDG elements and propagate it along the dependencies.

Some more functions are defined in the PDG plugin itself (in pdg/marks): the signatures of these public functions can be found in file Pdg.mli

Sourcemodule type Mark = sig ... end

Signature of the module to use in order to instantiate the computation

Sourcetype select_elem = private
  1. | SelNode of PdgTypes.Node.t * Frama_c_kernel.Locations.Zone.t option
  2. | SelIn of Frama_c_kernel.Locations.Zone.t

When selecting or propagating marks in a function, the marks are most of the time associated to pdg nodes, but we also need to associate marks to input locations in order to propage information to the callers about undefined data.

Sourceval mk_select_node : ?z_opt:Frama_c_kernel.Locations.Zone.t option -> PdgTypes.Node.t -> select_elem
Sourcetype 'tm select = (select_elem * 'tm) list
Sourceval add_to_select : 'tm select -> select_elem -> 'tm -> 'tm select
Sourceval add_node_to_select : 'tm select -> (PdgTypes.Node.t * Frama_c_kernel.Locations.Zone.t option) -> 'tm -> 'tm select
Sourceval add_undef_in_to_select : 'tm select -> Frama_c_kernel.Locations.Zone.t option -> 'tm -> 'tm select
Sourcetype 'tm pdg_select_info =
  1. | SelList of 'tm select
  2. | SelTopMarks of 'tm list

we sometime need a list of t_select associated with its pdg when dealing with several functions at one time.

Sourcetype 'tm pdg_select = (PdgTypes.Pdg.t * 'tm pdg_select_info) list
Sourcetype 'tm info_caller_inputs = (PdgIndex.Signature.in_key * 'tm) list

Represent the information to propagate from a function inputs to its calls. Notice that the input keys don't necessarily correspond to nodes especially when one want to select a data that is not defined in the function. *

Sourcetype 'tm info_called_outputs = (Frama_c_kernel.Cil_types.stmt * (PdgIndex.Signature.out_key * 'tm) list) list

Represent the information to propagate from a call outputs to the called function. The stmt are the calls to consider.

Sourcetype 'tm info_inter = 'tm info_caller_inputs * 'tm info_called_outputs

when some marks have been propagated in a function, there is some information to propagate in the callers and called functions to have an interprocedural processing.

Sourcemodule type Fct = sig ... end
Sourcemodule F_Fct (M : Mark) : Fct with type mark = M.t and type call_info = M.call_info
Sourcetype 't_mark m2m = select_elem -> 't_mark -> 't_mark option
Sourcetype 't_mark call_m2m = Frama_c_kernel.Cil_types.stmt option -> PdgTypes.Pdg.t -> 't_mark m2m
Sourcemodule type Proj = sig ... end

this is the type of the functor dedicated to interprocedural propagation. It is defined in PDG plugin

Sourcemodule type Config = sig ... end
OCaml

Innovation. Community. Security.