package goblint
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Static analysis framework for C
Install
dune-project
Dependency
Authors
Maintainers
Sources
goblint-2.3.0.tbz
sha256=b729c94adb383a39aea32eb005c988dfd44b92af22ee6a4eedf4239542ac6c26
sha512=643b98770e5fe5644324c95c9ae3a9f698f25c8b11b298f0751d524e0b20af368b2a465fc8200b75a73d48fc9a053fd90f5e8920d4db070927f93188bb8687e0
doc/goblint.lib/Goblint_lib/CompareCIL/index.html
Module Goblint_lib.CompareCIL
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
module StringMap = CompareAST.StringMaptype method_rename_assumptions = GoblintCil.varinfo CilMaps.VarinfoMap.ttype glob_var_rename_assumptions = GoblintCil.varinfo CilMaps.VarinfoMap.ttype rename_mapping =
string StringMap.t
* method_rename_assumptions
* glob_var_rename_assumptions
* renamesOnSuccessval rename_mapping_aware_name_comparison :
string ->
string ->
rename_mapping ->
boolval create_locals_rename_mapping :
string list ->
string list ->
string StringMap.tval is_rename_mapping_empty : rename_mapping -> boolval (&&>>) :
(bool * rename_mapping) ->
(rename_mapping:rename_mapping -> bool * rename_mapping) ->
bool * rename_mappingval (&&>) : (bool * rename_mapping) -> bool -> 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 global_typ_acc : (GoblintCil.typ * GoblintCil.typ) list refval 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.exp * GoblintCil.location) ->
(string * 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_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_mappingmodule NH = CompareCFG.NHtype 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_mappinginclude module type of struct include CilMaps end
module FundecForMap = CilMaps.FundecForMapmodule FundecMap = CilMaps.FundecMapmodule VarinfoOrdered = CilMaps.VarinfoOrderedmodule VarinfoMap = CilMaps.VarinfoMapmodule GlobalMap : sig ... endval name_of_global_col : global_col -> stringval compare_global_col : global_col -> global_col -> intval equal_name_global_col : global_col -> global_col -> boolval get_varinfo : global_col -> GoblintCil.varinfomodule GlobalColMap : sig ... endtype 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;
}module VarinfoSet : sig ... endtype 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.
}val empty_change_info : unit -> change_infoval unchanged_to_change_status : bool -> change_statusGiven a boolean that indicates whether the code object is identical to the previous version, returns the corresponding change_status
val empty_rename_mapping : rename_mappingval performRenames : renamesOnSuccess -> unitval 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 empty_rename_assms : GoblintCil.varinfo VarinfoMap.t -> boolval already_matched :
VarinfoMap.key ->
'a ->
(GoblintCil.varinfo VarinfoMap.t * 'b) ->
boolval change_info_lookup : global_col -> global_col -> change_info -> 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.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>