package bap-std

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

A scheme of image specification.

An attribute is some statement about a program that is true, thus each attribute is a proposition in a logical database of inferred facts.

Note, in comments we use actual field names in the synopsis section of a function, e.g., section addr size means that the section statement has two fields Scheme.addr and Scheme.size.

See the OGRE library for more information.

  • since 1.3
type addr = int64
type size = int64
type off = int64
type 'a region = {
  1. addr : addr;
    (*

    a staring address

    *)
  2. size : size;
    (*

    a size of the segment

    *)
  3. info : 'a;
    (*

    the attached information

    *)
}

a contiguous piece of memory.

val off : off Ogre.field

offset

val size : size Ogre.field

offset

size

val addr : addr Ogre.field

size

address

val name : string Ogre.field

address

name

val root : addr Ogre.field

name

code root

val readable : bool Ogre.field

code root

is readable

val writable : bool Ogre.field

is readable

is_writable

val executable : bool Ogre.field

is_writable

is_executable

val fixup : addr Ogre.field

is_executable

an address of a fixup

val arch : (string, (string -> 'a) -> 'a) Ogre.attribute

arch name a file contains code for the name architecture.

val segment : ((bool * bool * bool) region, (addr -> size -> bool -> bool -> bool -> 'a) -> 'a) Ogre.attribute

segment addr size readable writable executable a memory region (addr,size) has the specified permissions.

val section : (unit region, (addr -> size -> 'a) -> 'a) Ogre.attribute

section addr size a memory region is a section

val code_start : (addr, (addr -> 'a) -> 'a) Ogre.attribute

code_start addr an address starts a code sequence

val entry_point : (addr, (addr -> 'a) -> 'a) Ogre.attribute

entry_point addr an address is a program entry point

val symbol_chunk : (addr region, (addr -> size -> addr -> 'a) -> 'a) Ogre.attribute

symbol_chunk addr size root a contiguous piece of a program symbol, that can be a function or some data.

val named_region : (string region, (addr -> size -> string -> 'a) -> 'a) Ogre.attribute

named_region addr size name a region of memory has a name

val named_symbol : (addr * string, (addr -> string -> 'a) -> 'a) Ogre.attribute

named_symbol addr name a symbol that starts at this addr has this name.

val mapped : (off region, (addr -> size -> off -> 'a) -> 'a) Ogre.attribute

mapped addr size off sequence of bytes in a file starting at offset off and has the given size is mapped into memory at the given address addr

val relocation : (int64 * addr, (addr -> addr -> 'a) -> 'a) Ogre.attribute

relocation fixup addr a value referenced at the code that has the fixup address is relocated to the specified address addr.

val external_reference : (addr * string, (addr -> string -> 'a) -> 'a) Ogre.attribute

extrenal_reference addr name a piece of code at the specified address addr references an external symbol with the given name.

val base_address : (addr, (addr -> 'a) -> 'a) Ogre.attribute

base_address addr this is the base address of an image, i.e., an address of a first byte of the image.

OCaml

Innovation. Community. Security.