package bap-std

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

A set of subroutines.

A partition of a whole program control-flow graph into a quotient set of subroutines.

The algorithm builds the minimal partion, i.e., it guarantees that no other partition exists that has fewer elements.

The number of elements heavily depends on the number of function starts that were provided as the input (e.g., if the function start identification procedure has a lot of false positives, expect a lot of subroutines).

  • since made public since 2.2.0
type t
include Core_kernel.Bin_prot.Binable.S with type t := t
include Bin_prot.Binable.S_only_functions with type t := t
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (int -> t) Bin_prot.Read.reader

This function only needs implementation if t exposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variant t afterwards.

val bin_shape_t : Bin_prot.Shape.t
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_reader_t : t Bin_prot.Type_class.reader
val empty : t

empty is the empty partition.

val equal : t -> t -> bool

equal p1 p2 is true if p1 is structurally equal p2.

update p s updates the partitioning with the newly disassembled blocks.

val belongs : t -> entry:addr -> addr -> bool

belongs part ~entry addr is true if addr belongs to a basic block of subroutine with the given entry.

val entries : t -> Core_kernel.Set.M(Addr).t

entries part is the set of entry points of all subroutines in the partition.

Set.length (entries part) is the cardinality of the partition.

val siblings : t -> addr -> addr -> bool

siblings part x y is true if x and y belong to the same subroutine.