package bap-std
- Overview
- No Docs
You can search for identifiers within the package.
in-package search v0.2.0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=7c6d0dfe2640e800829617dd150ffe748493fe3f317ed41be44312b2821deb46
md5=5dbc6677d646bec59fd7414f23e88cf8
doc/bap/Bap/Std/Image/Scheme/index.html
Module Image.Scheme
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.
type 'a region = {addr : addr;(*a starting address
*)size : size;(*a size of the segment
*)info : 'a;(*the attached information
*)
}a contiguous piece of memory.
val off : off Ogre.fieldoffset
val size : size Ogre.fieldoffset
size
val addr : addr Ogre.fieldsize
address
val name : string Ogre.fieldaddress
name
val root : addr Ogre.fieldname
code root
val readable : bool Ogre.fieldcode root
is readable
val writable : bool Ogre.fieldis readable
is_writable
val executable : bool Ogre.fieldis_writable
is_executable
val fixup : addr Ogre.fieldis_executable
an address of a fixup
val arch : (string, (string -> 'a) -> 'a) Ogre.attributearch name a file contains code for the name architecture.
E.g., arm, x86, x86_64
val subarch : (string, (string -> 'a) -> 'a) Ogre.attributesubarch name the subarchitecture, when applicable, e.g., v7, v8, r2, etc. Should be appended to the arch name to get the full description, e.g., armv7.
val vendor : (string, (string -> 'a) -> 'a) Ogre.attributevendor name the second part of the build triplet, e.g., apple, pc, ibm, unknown. Could be just an empty string.
val system : (string, (string -> 'a) -> 'a) Ogre.attributesystem name the operating system name, for which the binary is specifically built, e.g., ananas, ios, linux.
val abi : (string, (string -> 'a) -> 'a) Ogre.attributeabi name the environment/toolchain/abi under which the binary is expected to be run, e.g., gnu, android, msvc
val bits : (size, (size -> 'a) -> 'a) Ogre.attributebits m is the bitness of the target architecture, e.g., 16, 32, 64.
val format : (string, (string -> 'a) -> 'a) Ogre.attribute(format X) defines the file format to be X.
Currently supported formats:
"elf";"macho";"coff"
val is_little_endian : (bool, (bool -> 'a) -> 'a) Ogre.attribute(is-little-endian FLAG)] is set for files with words encoded in the little-endian order.
val is_executable : (bool, (bool -> 'a) -> 'a) Ogre.attribute(is-executable FLAG) is set for binaries that executable.
val bias : (off, (off -> 'a) -> 'a) Ogre.attributebias offset the value by which all addresses are biased wrt to the real addresses in the binary.
val segment :
((bool * bool * bool) region,
(addr -> size -> bool -> bool -> bool -> 'a) ->
'a)
Ogre.attributesegment addr size readable writable executable a memory region (addr,size) has the specified permissions.
val section : (unit region, (addr -> size -> 'a) -> 'a) Ogre.attributesection addr size a memory region is a section
val code_start : (addr, (addr -> 'a) -> 'a) Ogre.attributecode_start addr an address starts a code sequence
val entry_point : (addr, (addr -> 'a) -> 'a) Ogre.attributeentry_point addr an address is the program entry point
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.attributenamed_region addr size name a region of memory has a name
val named_symbol : (addr * string, (addr -> string -> 'a) -> 'a) Ogre.attributenamed_symbol addr name a symbol that starts at this addr has this name.
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.attributerelocation 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.attributeexternal_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.attributebase_address addr this is the base address of an image, i.e., an address of a first byte of the image.
code_region addr size off the memory region in the file with the given offset off and size is code that should be loaded at the specified virtual address addr.
val symbol_value : (addr * value, (addr -> value -> 'a) -> 'a) Ogre.attributesymbol_value addr value the symbol at address the specified value.