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.1.0.tbz
sha256=bfc412ec2e447eaef6f4f83892e3511ebf305593cb00561c1406be3ae8bf48e9
sha512=5f2a162e5f36bffafc9836b0d18b5b2808cecfa6bf68f83bb7d1e8b9947ac74cf07776eb09274b4b29d55c897a45a10768f0d9ed25810cf6ba2409c525e4cd4d
doc/goblint.lib/Goblint_lib/CompareCIL/index.html
Module Goblint_lib.CompareCIL
include module type of struct include CompareAST end
include module type of struct include CompareCFG end
include module type of struct include CompareAST end
val compare_global_type :
global_type ->
global_type ->
Ppx_deriving_runtime.intval compare_global_identifier :
global_identifier ->
global_identifier ->
Ppx_deriving_runtime.intmodule StringMap = Goblint_lib.CompareCFG.StringMaptype method_rename_assumption = CompareAST.method_rename_assumption = {original_method_name : string;new_method_name : string;parameter_renames : string StringMap.t;
}type method_rename_assumptions = method_rename_assumption CilMaps.VarinfoMap.ttype rename_mapping = string StringMap.t * method_rename_assumptionsval rename_mapping_aware_name_comparison :
string ->
string ->
rename_mapping ->
boolval rename_mapping_to_string : rename_mapping -> stringval identifier_of_global : GoblintCil.global -> global_identifiermodule GlobalMap = Goblint_lib.CompareCFG.GlobalMapval eq_constant :
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
GoblintCil.constant ->
GoblintCil.constant ->
boolval eq_lhost :
GoblintCil.lhost ->
GoblintCil.lhost ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
boolval global_typ_acc : (GoblintCil.typ * GoblintCil.typ) list refval eq_typ_acc :
GoblintCil.typ ->
GoblintCil.typ ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
boolval eq_eitems :
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
(string * GoblintCil.exp * GoblintCil.location) BatOrd.eqval eq_enuminfo :
GoblintCil.enuminfo ->
GoblintCil.enuminfo ->
rename_mapping:rename_mapping ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
boolval eq_args :
rename_mapping ->
(GoblintCil.typ * GoblintCil.typ) list ->
(string * GoblintCil.typ * GoblintCil.attributes) BatOrd.eqval eq_attrparam :
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
GoblintCil.attrparam BatOrd.eqval eq_attribute :
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
GoblintCil.attribute BatOrd.eqval eq_compinfo :
GoblintCil.compinfo ->
GoblintCil.compinfo ->
(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping ->
boolval eq_fieldinfo :
GoblintCil.fieldinfo ->
GoblintCil.fieldinfo ->
acc:(GoblintCil.typ * GoblintCil.typ) list ->
rename_mapping:rename_mapping ->
boolval eq_typ :
GoblintCil.typ ->
GoblintCil.typ ->
rename_mapping:rename_mapping ->
boolval eq_exp :
?no_const_vals:bool ->
GoblintCil.exp ->
GoblintCil.exp ->
rename_mapping:rename_mapping ->
boolval eq_varinfo :
GoblintCil.varinfo ->
GoblintCil.varinfo ->
rename_mapping:rename_mapping ->
boolval eq_lval :
GoblintCil.lval ->
GoblintCil.lval ->
rename_mapping:rename_mapping ->
boolval eq_offset :
GoblintCil.offset ->
GoblintCil.offset ->
rename_mapping:rename_mapping ->
boolval eq_instr :
GoblintCil.instr ->
GoblintCil.instr ->
rename_mapping:rename_mapping ->
boolval eq_stmtkind :
?cfg_comp:bool ->
(GoblintCil.stmtkind * GoblintCil.fundec) ->
(GoblintCil.stmtkind * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
boolval eq_stmt :
?cfg_comp:bool ->
(GoblintCil.stmt * GoblintCil.fundec) ->
(GoblintCil.stmt * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
boolval eq_block :
(GoblintCil.block * GoblintCil.fundec) ->
(GoblintCil.block * GoblintCil.fundec) ->
rename_mapping:rename_mapping ->
boolval eq_init :
GoblintCil.init ->
GoblintCil.init ->
rename_mapping:rename_mapping ->
boolval eq_initinfo :
GoblintCil.initinfo ->
GoblintCil.initinfo ->
rename_mapping ->
boolval eq_node :
(MyCFG.node * GoblintCil.fundec) ->
(MyCFG.node * GoblintCil.fundec) ->
boolval eq_edge : MyCFG.edge -> MyCFG.edge -> boolval eq_edge_list : MyCFG.edge list -> MyCFG.edge list -> boolmodule 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 ->
biDirectionNodeMap * unit NH.tval 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 ->
(NH.key * MyCFG.node) list * NH.key listtype 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 : GoblintCil.global;current : GoblintCil.global;unchangedHeader : bool;diff : nodes_diff option;
}module VarinfoSet : sig ... endtype change_info = {mutable changed : changed_global list;mutable unchanged : unchanged_global list;mutable removed : GoblintCil.global list;mutable added : GoblintCil.global 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 eqF :
GoblintCil.Cil.fundec ->
GoblintCil.Cil.fundec ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
method_rename_assumptions ->
change_status * nodes_diff optionval eq_glob :
GoblintCil.global ->
GoblintCil.global ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
method_rename_assumptions ->
change_status * nodes_diff optionval compareCilFiles :
?eq:
(GoblintCil.global ->
GoblintCil.global ->
(MyCFG.cfg * (MyCFG.cfg * MyCFG.cfg)) option ->
method_rename_assumptions ->
change_status * nodes_diff option) ->
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)"
>