module SlicingMarks:Everything related with the marks. Mainly quite low level function.sig
..end
generated spare
= the smallest visible mark
module Mark:sig
..end
Mark
is used to represent some information about the status of
a PDF element in a slice.
module MarkPair:sig
..end
MarkPair
is associated with each element of the PDG in a slice.
module type T_Mark =sig
..end
SlicingMarks.F_SigMarks
module F_SigMarks:
SigMarks
works on the marks in function signatures.
module SigMarks:F_SigMarks
(
MarkPair
)
max_in
)
and marks for the call outputs (numbered from 0 to max_out
typet_mark =
MarkPair.t
val bottom_mark : SlicingInternals.t_pdg_mark
val mk_gen_spare : SlicingInternals.t_pdg_mark
spare
= the smallest visible markval mk_user_spare : SlicingInternals.t_pdg_mark
val mk_user_mark : data:bool -> addr:bool -> ctrl:bool -> SlicingInternals.t_pdg_mark
val is_bottom_mark : T.t_pdg_mark -> bool
val is_top_mark : T.t_pdg_mark -> bool
val is_spare_mark : T.t_pdg_mark -> bool
val is_ctrl_mark : T.t_pdg_mark -> bool
val is_addr_mark : T.t_pdg_mark -> bool
val is_data_mark : T.t_pdg_mark -> bool
val merge_marks : T.t_pdg_mark list -> T.t_pdg_mark
val combine_marks : T.t_pdg_mark ->
T.t_pdg_mark ->
SlicingInternals.t_pdg_mark * SlicingInternals.t_pdg_mark
combine_marks
add a new information to the old value.
is_new=true
if the new mark is not included in the old one.val inter_marks : T.t_pdg_mark list -> T.t_pdg_mark
val minus_marks : T.t_pdg_mark ->
T.t_pdg_mark -> SlicingInternals.t_pdg_mark
val compare_marks : 'a -> 'a -> int
val pretty_mark : Format.formatter -> T.t_pdg_mark -> unit
val mark_to_string : T.t_pdg_mark -> string
val missing_input_mark : call:T.t_pdg_mark ->
called:T.t_pdg_mark -> SlicingInternals.t_pdg_mark option
val missing_output_mark : call:T.t_pdg_mark ->
called:T.t_pdg_mark -> SlicingInternals.t_pdg_mark option
typet_sig_marks =
SigMarks.t
val empty_sig : 'a PdgIndex.Signature.t
val get_input_mark : SigMarks.t -> int -> SigMarks.tm
val get_all_input_marks : SigMarks.t ->
(PdgIndex.Signature.t_in_key * SigMarks.tm) list
val merge_inputs_m1_mark : MarkPair.t PdgIndex.Signature.t -> MarkPair.t
val get_input_loc_under_mark : MarkPair.t PdgIndex.Signature.t ->
Locations.Zone.t -> MarkPair.t
val get_in_ctrl_mark : SigMarks.t -> SigMarks.tm
val something_visible : SigMarks.t -> bool
val some_visible_out : MarkPair.t PdgIndex.Signature.t -> bool
val is_topin_visible : SigMarks.t -> bool
val check_input_marks : MarkPair.t PdgIndex.Signature.t ->
(PdgIndex.Signature.t_in_key * MarkPair.t) list ->
(PdgIndex.Signature.t_in_key * MarkPair.t) list * bool
val check_called_input_marks : MarkPair.t PdgIndex.Signature.t ->
MarkPair.t PdgIndex.Signature.t option ->
(PdgIndex.Signature.t_in_key * MarkPair.t) list * bool
val get_marked_out_zone : T.t_pdg_mark PdgIndex.Signature.t -> bool * Locations.Zone.t
val pretty_sig : Format.formatter -> MarkPair.t PdgIndex.Signature.t -> unit