OCaml: add sparc, systemz and xcore
diff --git a/bindings/ocaml/capstone.ml b/bindings/ocaml/capstone.ml
index 69bf11e..04f449d 100644
--- a/bindings/ocaml/capstone.ml
+++ b/bindings/ocaml/capstone.ml
@@ -6,18 +6,25 @@
open Mips
open Ppc
open X86
+open Sparc
+open Systemz
+open Xcore
open Printf (* debug *)
type arch =
| CS_ARCH_ARM
| CS_ARCH_ARM64
| CS_ARCH_MIPS
- | CS_ARCH_PPC
| CS_ARCH_X86
+ | CS_ARCH_PPC
+ | CS_ARCH_SPARC
+ | CS_ARCH_SYSZ
+ | CS_ARCH_XCORE
+ | CS_ARCH_MAX
+ | CS_ARCH_ALL
type mode =
| CS_MODE_LITTLE_ENDIAN (* little-endian mode (default mode) *)
- | CS_MODE_SYNTAX_INTEL (* Intel X86 asm syntax (default for CS_ARCH_X86) *)
| CS_MODE_ARM (* ARM mode *)
| CS_MODE_16 (* 16-bit mode (for X86, Mips) *)
| CS_MODE_32 (* 32-bit mode (for X86, Mips) *)
@@ -25,15 +32,37 @@
| CS_MODE_THUMB (* ARM's Thumb mode, including Thumb-2 *)
| CS_MODE_MICRO (* MicroMips mode (MIPS architecture) *)
| CS_MODE_N64 (* Nintendo-64 mode (MIPS architecture) *)
- | CS_MODE_SYNTAX_ATT (* X86 ATT asm syntax (for CS_ARCH_X86 only) *)
+ | CS_MODE_V9 (* SparcV9 mode (Sparc architecture) *)
| CS_MODE_BIG_ENDIAN (* big-endian mode *)
+
+type opt_type =
+ | CS_OPT_SYNTAX (* Asssembly output syntax *)
+ | CS_OPT_DETAIL (* Break down instruction structure into details *)
+ | CS_OPT_MODE (* Change engine's mode at run-time *)
+ | CS_OPT_MEM (* User-defined dynamic memory related functions *)
+ | CS_OPT_SKIPDATA (* Skip data when disassembling. Then engine is in SKIPDATA mode. *)
+ | CS_OPT_SKIPDATA_SETUP (* Setup user-defined function for SKIPDATA option *)
+
+
+type opt_value =
+ | CS_OPT_OFF (* Turn OFF an option - default option of CS_OPT_DETAIL, CS_OPT_SKIPDATA. *)
+ | CS_OPT_ON (* Turn ON an option (CS_OPT_DETAIL, CS_OPT_SKIPDATA). *)
+ | CS_OPT_SYNTAX_DEFAULT (* Default asm syntax (CS_OPT_SYNTAX). *)
+ | CS_OPT_SYNTAX_INTEL (* X86 Intel asm syntax - default on X86 (CS_OPT_SYNTAX). *)
+ | CS_OPT_SYNTAX_ATT (* X86 ATT asm syntax (CS_OPT_SYNTAX). *)
+ | CS_OPT_SYNTAX_NOREGNAME (* Prints register name with only number (CS_OPT_SYNTAX) *)
+
type cs_arch =
| CS_INFO_ARM of cs_arm
| CS_INFO_ARM64 of cs_arm64
| CS_INFO_MIPS of cs_mips
- | CS_INFO_PPC of cs_ppc
| CS_INFO_X86 of cs_x86
+ | CS_INFO_PPC of cs_ppc
+ | CS_INFO_SPARC of cs_sparc
+ | CS_INFO_SYSZ of cs_sysz
+ | CS_INFO_XCORE of cs_xcore
+
type cs_insn0 = {
id: int;
@@ -96,7 +125,7 @@
let csh = cs_open arch mode in
object
val handle = match csh with
- | None -> failwith "impossible to open an handle\n"
+ | None -> failwith "impossible to open an handle"
| Some v -> v
method get_csh = handle