Module Std.Symbolizer

Symbolizer maps addresses to function names

type t = symbolizer

symbolizer data type

val provide : Bap_knowledge.Knowledge.agent -> t -> unit

provide agent symbolizer registers symbolizer in the knowledge base.

This function enables an easy integration of the old symbolizers/information sources infrastructure into the knowledge base representation introduced with BAP 2.0.

A symbolizer is regiestered in the knowledge base through an agent which denotes the level of trustwothiness of the symbolizer.

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.proposing{proposing

}

.

  • since 2.2.0
val create : (addr -> string option) -> t

create fn creates a symbolizer for a given function

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 of_blocks : (string * addr * addr) seq -> t

of_blocks produces a symbolizer 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 resolve : t -> addr -> string

resolve symbolizer addr returns a name of function, to which a given address belongs. If the address is not know to the symbolizer, then the name is constructed from an address

val chain : t list -> t

chain ss creates a symbolizer, that will try to resolve an address using each symbolizer in order.

val empty : t

empty is a symbolizer that knows nothing.

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