Module Std.Rooter

Rooter finds starts of functions in the binary.

type t = rooter
val provide : t -> unit

provide r reflects the rooter information to the knowledge base.

  • since 2.0.0
val providing : t -> (unit -> 'a Bap_knowledge.knowledge) -> 'a Bap_knowledge.knowledge

providing t scope provides the information in the specified scope,

After the scope function is evaluated the information source is retracted from the knowledge base.

See Bap_knowledge.Knowledge.promising{promising

}

.

  • since 2.2.0
val set_path : t -> string -> t

set_path s limits the symbolizer applicability only to addresses that belong to a file/compilation unit with the specified path.

  • since 2.2.0
val path : t -> string option

path s is the path to the file that this symbolizer serves.

  • since 2.2.0
val create : addr seq -> t

create seq creates a rooter from a given sequence of addresses

val of_image : image -> t

of_image img create a rooter that will use existing symbol information inside the image, to find roots.

val of_blocks : (string * addr * addr) seq -> t

of_blocks produces a rooter from a serialized sequence of blocks. Each element of the sequence is deconstructed as (name,ba,ea), where name is a subroutine name, ba is a virtual address of a block start, and ea is an address of the block end.

val roots : t -> addr seq

roots r enumerates roots found by rooter r

val union : t -> t -> t

union r1 r2 joins roots from rooters r1 and r2

module Factory : Source.Factory.S with type t = t

A factory of rooters. Useful to register custom rooters