package goblint

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

Module CompareCILSource

Comparison of CIL files.

include module type of struct include CompareAST end
include module type of struct include CompareCFG end
include module type of struct include CompareAST end
Sourcemodule StringMap = CompareCFG.StringMap
Sourcetype method_rename_assumptions = GoblintCil.varinfo CilMaps.VarinfoMap.t
Sourcetype glob_var_rename_assumptions = GoblintCil.varinfo CilMaps.VarinfoMap.t
Sourceval rename_mapping_aware_name_comparison : string -> string -> rename_mapping -> bool
Sourceval create_locals_rename_mapping : string list -> string list -> string StringMap.t
Sourceval is_rename_mapping_empty : rename_mapping -> bool
Sourceval (&&>>) : (bool * rename_mapping) -> (rename_mapping:rename_mapping -> bool * rename_mapping) -> bool * rename_mapping
Sourceval (&&>) : (bool * rename_mapping) -> bool -> bool * rename_mapping
Sourceval forward_list_equal : ?propF: ((bool * rename_mapping) -> (rename_mapping:rename_mapping -> bool * rename_mapping) -> bool * rename_mapping) -> ('a -> 'b -> rename_mapping:rename_mapping -> bool * rename_mapping) -> 'a list -> 'b list -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval compare_name : string -> string -> bool
Sourceval eq_constant : rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> GoblintCil.constant -> GoblintCil.constant -> bool * rename_mapping
Sourceval eq_lhost : GoblintCil.lhost -> GoblintCil.lhost -> rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> bool * rename_mapping
Sourceval global_typ_acc : (GoblintCil.typ * GoblintCil.typ) list ref
Sourceval mem_typ_acc : GoblintCil.typ -> GoblintCil.typ -> (GoblintCil.typ * GoblintCil.typ) list -> bool
Sourceval pretty_length : unit -> (GoblintCil.typ * GoblintCil.typ) list -> GoblintCil.Pretty.doc
Sourceval eq_typ_acc : ?fun_parameter_name_comparison_enabled:bool -> GoblintCil.typ -> GoblintCil.typ -> rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> bool * rename_mapping
Sourceval eq_enuminfo : GoblintCil.enuminfo -> GoblintCil.enuminfo -> rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> bool * rename_mapping
Sourceval eq_args : ?fun_parameter_name_comparison_enabled:bool -> (string * GoblintCil.typ * GoblintCil.attributes) -> (string * GoblintCil.typ * GoblintCil.attributes) -> rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> bool * rename_mapping
Sourceval eq_attrparam : GoblintCil.attrparam -> GoblintCil.attrparam -> rename_mapping:rename_mapping -> acc:(GoblintCil.typ * GoblintCil.typ) list -> bool * rename_mapping
Sourceval eq_attribute : GoblintCil.attribute -> GoblintCil.attribute -> acc:(GoblintCil.typ * GoblintCil.typ) list -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_fieldinfo : GoblintCil.fieldinfo -> GoblintCil.fieldinfo -> acc:(GoblintCil.typ * GoblintCil.typ) list -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_typ : ?fun_parameter_name_comparison_enabled:bool -> GoblintCil.typ -> GoblintCil.typ -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_exp : GoblintCil.exp -> GoblintCil.exp -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_varinfo : GoblintCil.varinfo -> GoblintCil.varinfo -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_lval : GoblintCil.lval -> GoblintCil.lval -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_offset : GoblintCil.offset -> GoblintCil.offset -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_instr : GoblintCil.instr -> GoblintCil.instr -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_label : GoblintCil.label -> GoblintCil.label -> bool
Sourceval eq_stmt_with_location : (GoblintCil.stmt * GoblintCil.fundec) -> (GoblintCil.stmt * GoblintCil.fundec) -> bool
Sourceval eq_stmtkind : ?cfg_comp:bool -> (GoblintCil.stmtkind * GoblintCil.fundec) -> (GoblintCil.stmtkind * GoblintCil.fundec) -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_stmt : ?cfg_comp:bool -> (GoblintCil.stmt * GoblintCil.fundec) -> (GoblintCil.stmt * GoblintCil.fundec) -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_init : GoblintCil.init -> GoblintCil.init -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_initinfo : GoblintCil.initinfo -> GoblintCil.initinfo -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval (&&<>) : (bool * rename_mapping) -> (rename_mapping:rename_mapping -> bool * rename_mapping) -> bool * rename_mapping
Sourceval eq_edge : MyCFG.edge -> MyCFG.edge -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval eq_edge_list : MyCFG.edge list -> MyCFG.edge list -> rename_mapping:rename_mapping -> bool * rename_mapping
Sourceval to_edge_list : ('a * 'b) list -> 'b list
Sourcetype biDirectionNodeMap = CompareCFG.biDirectionNodeMap = {
  1. node1to2 : MyCFG.node NH.t;
  2. node2to1 : MyCFG.node NH.t;
}
Sourceval reexamine : 'a -> CilType.Fundec.t -> biDirectionNodeMap -> unit NH.t -> (module MyCFG.CfgForward) -> (module MyCFG.CfgBidir) -> (NH.key * MyCFG.node) Seq.t * NH.key Seq.t
include module type of struct include CilMaps end
Sourcemodule FundecForMap = CilMaps.FundecForMap
Sourcemodule FundecMap = CilMaps.FundecMap
Sourcemodule VarinfoOrdered = CilMaps.VarinfoOrdered
Sourcemodule VarinfoMap = CilMaps.VarinfoMap
Sourcemodule GlobalMap : sig ... end
Sourcetype global_def =
  1. | Var of GoblintCil.varinfo
  2. | Fun of GoblintCil.fundec
Sourcetype global_col = {
  1. decls : GoblintCil.varinfo option;
  2. def : global_def option;
}
Sourceval name_of_global_col : global_col -> string
Sourceval compare_global_col : global_col -> global_col -> int
Sourceval equal_name_global_col : global_col -> global_col -> bool
Sourcemodule GlobalColMap : sig ... end
Sourceval name_of_global : GoblintCil.global -> string
Sourcetype nodes_diff = {
  1. unchangedNodes : (MyCFG.node * MyCFG.node) list;
  2. primObsoleteNodes : MyCFG.node list;
    (*

    primary obsolete nodes -> all obsolete nodes are reachable from these

    *)
}
Sourcetype unchanged_global = {
  1. old : global_col;
  2. current : global_col;
}

For semantically unchanged globals, still keep old and current version of global for resetting current to old.

Sourcetype changed_global = {
  1. old : global_col;
  2. current : global_col;
  3. unchangedHeader : bool;
  4. diff : nodes_diff option;
}
Sourcemodule VarinfoSet : sig ... end
Sourcetype change_info = {
  1. mutable changed : changed_global list;
  2. mutable unchanged : unchanged_global list;
  3. mutable removed : global_col list;
  4. mutable added : global_col list;
  5. mutable exclude_from_rel_destab : VarinfoSet.t;
    (*

    Set of functions that are to be force-reanalyzed. These functions are additionally included in the changed field, among the other changed globals.

    *)
}
Sourceval empty_change_info : unit -> change_info
Sourcetype change_status =
  1. | Unchanged
  2. | Changed
  3. | ChangedFunHeader of GoblintCil.Cil.fundec
  4. | ForceReanalyze of GoblintCil.Cil.fundec
Sourceval unchanged_to_change_status : bool -> change_status

Given a boolean that indicates whether the code object is identical to the previous version, returns the corresponding change_status

Sourceval empty_rename_mapping : rename_mapping
Sourceval should_reanalyze : GoblintCil.Cil.fundec -> bool
Sourceval performRenames : renamesOnSuccess -> unit
Sourceval preservesSameNameMatches : GlobalMap.key -> 'a GlobalMap.t -> GlobalMap.key -> 'b GlobalMap.t -> bool
Sourceval empty_rename_assms : GoblintCil.varinfo VarinfoMap.t -> bool
Sourceval already_matched : VarinfoMap.key -> 'a -> (GoblintCil.varinfo VarinfoMap.t * 'b) -> bool
Sourceval change_info_lookup : global_col -> global_col -> change_info -> bool
Sourceval addNewGlobals : 'a -> global_col -> (change_info * ('b * 'c VarinfoMap.t)) -> change_info * ('b * 'c VarinfoMap.t)
Sourceval addOldGlobals : 'a -> global_col -> (change_info * ('b VarinfoMap.t * 'c)) -> change_info * ('b VarinfoMap.t * 'c)

Given an (optional) equality function between Cil.globals, an old and a new Cil.file, this function computes a change_info, which describes which globals are changed, unchanged, removed and added.

OCaml

Innovation. Community. Security.