(** Add file [fd] at address [addr] to an existing memory map.
Behaviour is undefined if memory mappings overlap. *)
+val of_string : string -> addr -> ([`NoWordsize], [`NoEndian]) t
+(** Create a new memory map, mapping string at address [addr]. *)
+
+val add_string : ('a, 'b) t -> string -> addr -> ('a, 'b) t
+(** Add string at address [addr] to an existing memory map.
+ Behaviour is undefined if memory mappings overlap. *)
+
val find : ('a, 'b) t -> ?start:addr -> string -> addr option
(** Find string in a memory map and return its address (if found).
You can pass an optional starting address. Any holes in
This may raise [Invalid_argument "get_bytes"] if the address range
is not fully mapped. *)
+val get_int32 : ('a, [`Endian]) t -> addr -> int32
+(** Return the 32-bit int at [addr]. *)
+
+val get_int64 : ('a, [`Endian]) t -> addr -> int64
+(** Return the 64-bit int at [addr]. *)
+
+val get_C_int : ([`Wordsize], [`Endian]) t -> addr -> int32
+(** Return the C 32-bit int at [addr]. *)
+
+val get_C_long : ([`Wordsize], [`Endian]) t -> addr -> int64
+(** Return the C 32 or 64-bit long at [addr]. *)
+
val get_string : ('a, 'b) t -> addr -> string
(** Return the sequence of bytes starting at [addr] up to (but not
including) the first ASCII NUL character. In other words, this
(** Return true or false if the address contains a NUL-terminated
C identifier. *)
+val is_mapped : ('a, 'b) t -> addr -> bool
+(** Return true if the single address [addr] is mapped. *)
+
val follow_pointer : ([`Wordsize], [`Endian]) t -> addr -> addr
(** Follow (dereference) the pointer at [addr] and return
the address pointed to. *)
val pred_long : ([`Wordsize], 'b) t -> addr -> addr
(** Subtract wordsize bytes from [addr] and return it. *)
+
+val align : ([`Wordsize], 'b) t -> addr -> addr
+(** Align the [addr] to the next wordsize boundary. If it already
+ aligned, this just returns [addr]. *)