package goblint
- Overview
- No Docs
You can search for identifiers within the package.
in-package search v0.2.0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=af01aac256229f33a90a9fcbfed04b01e3097f154d4d124f006476d6387c6a66
sha512=2a93bfe16881adbc2d8dcbfe38c1e19cd24ca105d8e1eda13d02440f3002874ffe2957dfd937510765233a054a40568b0052db92e31d382a5bd215d1ec12565c
doc/goblint.incremental/CompareCIL/index.html
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
type renamesOnSuccess =
(GoblintCil.compinfo * GoblintCil.compinfo) list
* (GoblintCil.enuminfo * GoblintCil.enuminfo) listtype rename_mapping =
string StringMap.t
* method_rename_assumptions
* glob_var_rename_assumptions
* renamesOnSuccessval (&&>>) :
(bool * rename_mapping) ->
(rename_mapping:rename_mapping -> bool * rename_mapping) ->
bool * rename_mappingval 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_mappingval eq_constant :
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
GoblintCil.constant ->
GoblintCil.constant ->
bool * rename_mappingval eq_lhost :
GoblintCil.lhost ->
GoblintCil.lhost ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
bool * rename_mappingval mem_typ_acc :
GoblintCil.typ ->
GoblintCil.typ ->
(GoblintCil.typ * GoblintCil.typ) list ->
boolval 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_mappingval eq_eitems :
(string * GoblintCil.attributes * GoblintCil.exp * GoblintCil.location) ->
(string * GoblintCil.attributes * GoblintCil.exp * GoblintCil.location) ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
bool * rename_mappingval eq_enuminfo :
GoblintCil.enuminfo ->
GoblintCil.enuminfo ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
bool * rename_mappingval 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_mappingval eq_attrparam :
GoblintCil.attrparam ->
GoblintCil.attrparam ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
bool * rename_mappingval eq_attribute :
GoblintCil.attribute ->
GoblintCil.attribute ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_compinfo :
GoblintCil.compinfo ->
GoblintCil.compinfo ->
(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping ->
bool * rename_mappingval eq_fieldinfo :
GoblintCil.fieldinfo ->
GoblintCil.fieldinfo ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_typ :
?fun_parameter_name_comparison_enabled:bool ->
GoblintCil.typ ->
GoblintCil.typ ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_exp :
GoblintCil.exp ->
GoblintCil.exp ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_varinfo :
GoblintCil.varinfo ->
GoblintCil.varinfo ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_lval :
GoblintCil.lval ->
GoblintCil.lval ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_offset :
GoblintCil.offset ->
GoblintCil.offset ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_instr :
GoblintCil.instr ->
GoblintCil.instr ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_stmt_with_location :
(GoblintCil.stmt * GoblintCil.fundec) ->
(GoblintCil.stmt * GoblintCil.fundec) ->
boolval eq_stmtkind :
?cfg_comp:bool ->
(GoblintCil.stmtkind * GoblintCil.fundec) ->
(GoblintCil.stmtkind * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_stmt :
?cfg_comp:bool ->
(GoblintCil.stmt * GoblintCil.fundec) ->
(GoblintCil.stmt * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_block :
(GoblintCil.Cil.block * GoblintCil.fundec) ->
(GoblintCil.Cil.block * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_init :
GoblintCil.init ->
GoblintCil.init ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_initinfo :
GoblintCil.initinfo ->
GoblintCil.initinfo ->
rename_mapping:rename_mapping ->
bool * rename_mappingval (&&<>) :
(bool * rename_mapping) ->
(rename_mapping:rename_mapping -> bool * rename_mapping) ->
bool * rename_mappingval eq_node :
(MyCFG.node * GoblintCil.fundec) ->
(MyCFG.node * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_edge :
MyCFG.edge ->
MyCFG.edge ->
rename_mapping:rename_mapping ->
bool * rename_mappingval eq_edge_list :
MyCFG.edge list ->
MyCFG.edge list ->
rename_mapping:rename_mapping ->
bool * rename_mappingtype biDirectionNodeMap = CompareCFG.biDirectionNodeMap = {node1to2 : MyCFG.node NH.t;node2to1 : MyCFG.node NH.t;
}val compareCfgs :
(module MyCFG.CfgForward) ->
(module MyCFG.CfgForward) ->
GoblintCil.fundec ->
GoblintCil.fundec ->
rename_mapping ->
biDirectionNodeMap * unit NH.t * rename_mappingval reexamine :
'a ->
CilType.Fundec.t ->
biDirectionNodeMap ->
unit NH.t ->
(module MyCFG.CfgForward) ->
(module MyCFG.CfgBidir) ->
(NH.key * MyCFG.node) Seq.t * NH.key Seq.tval compareFun :
(module MyCFG.CfgForward) ->
(module MyCFG.CfgBidir) ->
GoblintCil.fundec ->
GoblintCil.fundec ->
rename_mapping ->
(MyCFG.node * MyCFG.node) list * MyCFG.node list * rename_mappingtype nodes_diff = {unchangedNodes : (MyCFG.node * MyCFG.node) list;primObsoleteNodes : MyCFG.node list;(*primary obsolete nodes -> all obsolete nodes are reachable from these
*)
}For semantically unchanged globals, still keep old and current version of global for resetting current to old.
type changed_global = {old : global_col;current : global_col;unchangedHeader : bool;diff : nodes_diff option;
}type change_info = {mutable changed : changed_global list;mutable unchanged : unchanged_global list;mutable removed : global_col list;mutable added : global_col list;mutable exclude_from_rel_destab : VarinfoSet.t;(*Set of functions that are to be force-reanalyzed. These functions are additionally included in the
*)changedfield, among the other changed globals.
}type change_status = | Unchanged| Changed| ChangedFunHeader of GoblintCil.Cil.fundec| ForceReanalyze of GoblintCil.Cil.fundec
Given a boolean that indicates whether the code object is identical to the previous version, returns the corresponding change_status
val preservesSameNameMatches :
GlobalMap.key ->
'a GlobalMap.t ->
GlobalMap.key ->
'b GlobalMap.t ->
boolval addToFinalMatchesMapping :
VarinfoMap.key ->
VarinfoMap.key ->
(VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t) ->
VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.tval already_matched :
VarinfoMap.key ->
GoblintCil.varinfo ->
(GoblintCil.varinfo VarinfoMap.t * 'a) ->
boolval eq_glob_var :
?finalizeOnlyExactMatch:bool ->
VarinfoMap.key ->
global_col ->
'a GlobalMap.t ->
GoblintCil.varinfo ->
global_col ->
'b GlobalMap.t ->
change_info ->
(VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t) ->
bool
* change_info
* (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)val compare_varinfo_exact :
VarinfoMap.key ->
global_col ->
global_col GlobalMap.t ->
GoblintCil.varinfo ->
global_col ->
global_col GlobalMap.t ->
change_info ->
(VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t) ->
bool
* change_info
* (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)val eqF :
GoblintCil.Cil.fundec ->
GoblintCil.Cil.fundec ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
method_rename_assumptions ->
glob_var_rename_assumptions ->
change_status
* nodes_diff option
* method_rename_assumptions
* glob_var_rename_assumptions
* renamesOnSuccessval eqF_only_consider_exact_match :
global_col ->
global_col ->
change_info ->
(VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t) ->
global_col GlobalMap.t ->
global_col GlobalMap.t ->
bool
* change_info
* (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)val eqF_check_contained_renames :
renameDetection:bool ->
GoblintCil.Cil.fundec ->
GoblintCil.Cil.fundec ->
global_col GlobalMap.t ->
global_col GlobalMap.t ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
global_col ->
global_col ->
(change_info * (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)) ->
change_info * (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)val eq_glob :
?matchVars:bool ->
?matchFuns:bool ->
?renameDetection:bool ->
global_col GlobalMap.t ->
global_col GlobalMap.t ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
global_col ->
global_col ->
(change_info * (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)) ->
change_info * (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)val addNewGlobals :
'a ->
global_col ->
(change_info * ('b * 'c VarinfoMap.t)) ->
change_info * ('b * 'c VarinfoMap.t)val addOldGlobals :
'a ->
global_col ->
(change_info * ('b VarinfoMap.t * 'c)) ->
change_info * ('b VarinfoMap.t * 'c)val compareCilFiles :
?eq:
(?matchVars:bool ->
?matchFuns:bool ->
?renameDetection:bool ->
global_col GlobalMap.t ->
global_col GlobalMap.t ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
global_col ->
global_col ->
(change_info
* (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)) ->
change_info * (VarinfoMap.key VarinfoMap.t * VarinfoMap.key VarinfoMap.t)) ->
GoblintCil.file ->
GoblintCil.file ->
change_infoGiven 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.