Map 8-bit int element arrays to strings
[ocaml-bitstring.git] / examples / elf.ml
1 (* Read an ELF (Linux binary) header.
2  * $Id$
3  *)
4
5 open Printf
6
7 let () =
8   let filename = "/bin/ls" in
9   let bits = Bitmatch.bitstring_of_file filename in
10
11   bitmatch bits with
12   | { 0x7f : 8; "ELF" : 24 : string;    (* ELF magic number *)
13       _ : 12*8 : bitstring;             (* ELF identifier *)
14       e_type : 16 : littleendian;       (* object file type *)
15       e_machine : 16 : littleendian     (* architecture *)
16     } ->
17       printf "%s: ELF binary, type %d, arch %d\n" filename e_type e_machine
18
19   | { _ } ->
20       eprintf "%s: Not an ELF binary\n" filename