From 9a84b5f2e49410655a7e22be7c054bc3a2db752f Mon Sep 17 00:00:00 2001
From: FuzzySecurity <ru.boonen@gmail.com>
Date: Mon, 7 Nov 2016 12:52:42 +0100
Subject: [PATCH] +Const-Fix

---
 bindings/const_generator.py                   | 16 ++++
 .../powershell/Keystone/Const/keystone_h.cs   | 89 +++++++++++++++++++
 .../powershell/Keystone/Const/ks_arch_cons.cs |  9 --
 .../powershell/Keystone/Const/ks_err_cons.cs  | 46 ----------
 .../powershell/Keystone/Const/ks_mode_cons.cs | 19 ----
 .../Keystone/Const/ks_opt_value_cons.cs       |  5 --
 bindings/powershell/Keystone/Keystone.psm1    |  8 +-
 7 files changed, 109 insertions(+), 83 deletions(-)
 create mode 100755 bindings/powershell/Keystone/Const/keystone_h.cs
 delete mode 100755 bindings/powershell/Keystone/Const/ks_arch_cons.cs
 delete mode 100755 bindings/powershell/Keystone/Const/ks_err_cons.cs
 delete mode 100755 bindings/powershell/Keystone/Const/ks_mode_cons.cs
 delete mode 100755 bindings/powershell/Keystone/Const/ks_opt_value_cons.cs

diff --git a/bindings/const_generator.py b/bindings/const_generator.py
index af0d07e..4ee721a 100644
--- a/bindings/const_generator.py
+++ b/bindings/const_generator.py
@@ -15,6 +15,22 @@ def CamelCase(s):
     return ''.join(''.join([w[0].upper(), w[1:].lower()]) for w in s.split('_'))
 
 template = {
+    'powershell': {
+            'header': "/// For Keystone Engine. AUTO-GENERATED FILE, DO NOT EDIT [%s_h.cs]\n",
+            'footer': "",
+            'out_file': './powershell/Keystone/Const/%s_h.cs',
+            # prefixes for constant filenames of all archs - case sensitive
+            'keystone.h': 'keystone',
+            'comment_open': '///',
+            'comment_close': '',
+            'rules': [
+                {
+                    'regex': r'.*',
+                    'line_format': 'KS_{0} = {1},\n',
+                    'fn': (lambda x: x),
+                },
+            ]
+        },
     'rust': {
             'header': "// For Keystone Engine. AUTO-GENERATED FILE, DO NOT EDIT [%s_const.rs]\nextern crate libc;\n\n",
             'footer': "",
diff --git a/bindings/powershell/Keystone/Const/keystone_h.cs b/bindings/powershell/Keystone/Const/keystone_h.cs
new file mode 100755
index 0000000..dcdcb0e
--- /dev/null
+++ b/bindings/powershell/Keystone/Const/keystone_h.cs
@@ -0,0 +1,89 @@
+KS_API_MAJOR = 0,
+KS_API_MINOR = 9,
+KS_VERSION_MAJOR = 0,
+KS_VERSION_MINOR = 9,
+KS_VERSION_EXTRA = 1,
+KS_ARCH_ARM = 1,
+KS_ARCH_ARM64 = 2,
+KS_ARCH_MIPS = 3,
+KS_ARCH_X86 = 4,
+KS_ARCH_PPC = 5,
+KS_ARCH_SPARC = 6,
+KS_ARCH_SYSTEMZ = 7,
+KS_ARCH_HEXAGON = 8,
+KS_ARCH_MAX = 9,
+KS_MODE_LITTLE_ENDIAN = 0,
+KS_MODE_BIG_ENDIAN = 1073741824,
+KS_MODE_ARM = 1,
+KS_MODE_THUMB = 16,
+KS_MODE_V8 = 64,
+KS_MODE_MICRO = 16,
+KS_MODE_MIPS3 = 32,
+KS_MODE_MIPS32R6 = 64,
+KS_MODE_MIPS32 = 4,
+KS_MODE_MIPS64 = 8,
+KS_MODE_16 = 2,
+KS_MODE_32 = 4,
+KS_MODE_64 = 8,
+KS_MODE_PPC32 = 4,
+KS_MODE_PPC64 = 8,
+KS_MODE_QPX = 16,
+KS_MODE_SPARC32 = 4,
+KS_MODE_SPARC64 = 8,
+KS_MODE_V9 = 16,
+KS_ERR_ASM = 128,
+KS_ERR_ASM_ARCH = 512,
+KS_ERR_OK = 0,
+KS_ERR_NOMEM = 1,
+KS_ERR_ARCH = 2,
+KS_ERR_HANDLE = 3,
+KS_ERR_MODE = 4,
+KS_ERR_VERSION = 5,
+KS_ERR_OPT_INVALID = 6,
+KS_ERR_ASM_EXPR_TOKEN = 128,
+KS_ERR_ASM_DIRECTIVE_VALUE_RANGE = 129,
+KS_ERR_ASM_DIRECTIVE_ID = 130,
+KS_ERR_ASM_DIRECTIVE_TOKEN = 131,
+KS_ERR_ASM_DIRECTIVE_STR = 132,
+KS_ERR_ASM_DIRECTIVE_COMMA = 133,
+KS_ERR_ASM_DIRECTIVE_RELOC_NAME = 134,
+KS_ERR_ASM_DIRECTIVE_RELOC_TOKEN = 135,
+KS_ERR_ASM_DIRECTIVE_FPOINT = 136,
+KS_ERR_ASM_DIRECTIVE_UNKNOWN = 137,
+KS_ERR_ASM_DIRECTIVE_EQU = 138,
+KS_ERR_ASM_DIRECTIVE_INVALID = 139,
+KS_ERR_ASM_VARIANT_INVALID = 140,
+KS_ERR_ASM_EXPR_BRACKET = 141,
+KS_ERR_ASM_SYMBOL_MODIFIER = 142,
+KS_ERR_ASM_SYMBOL_REDEFINED = 143,
+KS_ERR_ASM_SYMBOL_MISSING = 144,
+KS_ERR_ASM_RPAREN = 145,
+KS_ERR_ASM_STAT_TOKEN = 146,
+KS_ERR_ASM_UNSUPPORTED = 147,
+KS_ERR_ASM_MACRO_TOKEN = 148,
+KS_ERR_ASM_MACRO_PAREN = 149,
+KS_ERR_ASM_MACRO_EQU = 150,
+KS_ERR_ASM_MACRO_ARGS = 151,
+KS_ERR_ASM_MACRO_LEVELS_EXCEED = 152,
+KS_ERR_ASM_MACRO_STR = 153,
+KS_ERR_ASM_MACRO_INVALID = 154,
+KS_ERR_ASM_ESC_BACKSLASH = 155,
+KS_ERR_ASM_ESC_OCTAL = 156,
+KS_ERR_ASM_ESC_SEQUENCE = 157,
+KS_ERR_ASM_ESC_STR = 158,
+KS_ERR_ASM_TOKEN_INVALID = 159,
+KS_ERR_ASM_INSN_UNSUPPORTED = 160,
+KS_ERR_ASM_FIXUP_INVALID = 161,
+KS_ERR_ASM_LABEL_INVALID = 162,
+KS_ERR_ASM_FRAGMENT_INVALID = 163,
+KS_ERR_ASM_INVALIDOPERAND = 512,
+KS_ERR_ASM_MISSINGFEATURE = 513,
+KS_ERR_ASM_MNEMONICFAIL = 514,
+KS_OPT_SYNTAX = 1,
+KS_OPT_SYM_RESOLVER = 2,
+KS_OPT_SYNTAX_INTEL = 1,
+KS_OPT_SYNTAX_ATT = 2,
+KS_OPT_SYNTAX_NASM = 4,
+KS_OPT_SYNTAX_MASM = 8,
+KS_OPT_SYNTAX_GAS = 16,
+KS_OPT_SYNTAX_RADIX16 = 32,
\ No newline at end of file
diff --git a/bindings/powershell/Keystone/Const/ks_arch_cons.cs b/bindings/powershell/Keystone/Const/ks_arch_cons.cs
deleted file mode 100755
index fa1055f..0000000
--- a/bindings/powershell/Keystone/Const/ks_arch_cons.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-KS_ARCH_ARM = 1,
-KS_ARCH_ARM64,
-KS_ARCH_MIPS,
-KS_ARCH_X86,
-KS_ARCH_PPC,
-KS_ARCH_SPARC,
-KS_ARCH_SYSTEMZ,
-KS_ARCH_HEXAGON,
-KS_ARCH_MAX,
\ No newline at end of file
diff --git a/bindings/powershell/Keystone/Const/ks_err_cons.cs b/bindings/powershell/Keystone/Const/ks_err_cons.cs
deleted file mode 100755
index 6387fac..0000000
--- a/bindings/powershell/Keystone/Const/ks_err_cons.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-KS_ERR_OK = 0,
-KS_ERR_NOMEM,
-KS_ERR_ARCH,
-KS_ERR_HANDLE,
-KS_ERR_MODE,
-KS_ERR_VERSION,
-KS_ERR_OPT_INVALID,
-KS_ERR_ASM_EXPR_TOKEN = 128,
-KS_ERR_ASM_DIRECTIVE_VALUE_RANGE,
-KS_ERR_ASM_DIRECTIVE_ID,
-KS_ERR_ASM_DIRECTIVE_TOKEN,
-KS_ERR_ASM_DIRECTIVE_STR,
-KS_ERR_ASM_DIRECTIVE_COMMA,
-KS_ERR_ASM_DIRECTIVE_RELOC_NAME,
-KS_ERR_ASM_DIRECTIVE_RELOC_TOKEN,
-KS_ERR_ASM_DIRECTIVE_FPOINT,
-KS_ERR_ASM_DIRECTIVE_UNKNOWN,
-KS_ERR_ASM_DIRECTIVE_EQU,
-KS_ERR_ASM_DIRECTIVE_INVALID,
-KS_ERR_ASM_VARIANT_INVALID,
-KS_ERR_ASM_EXPR_BRACKET,
-KS_ERR_ASM_SYMBOL_MODIFIER,
-KS_ERR_ASM_SYMBOL_REDEFINED,
-KS_ERR_ASM_SYMBOL_MISSING,
-KS_ERR_ASM_RPAREN,
-KS_ERR_ASM_STAT_TOKEN,
-KS_ERR_ASM_UNSUPPORTED,
-KS_ERR_ASM_MACRO_TOKEN,
-KS_ERR_ASM_MACRO_PAREN,
-KS_ERR_ASM_MACRO_EQU,
-KS_ERR_ASM_MACRO_ARGS,
-KS_ERR_ASM_MACRO_LEVELS_EXCEED,
-KS_ERR_ASM_MACRO_STR,
-KS_ERR_ASM_MACRO_INVALID,
-KS_ERR_ASM_ESC_BACKSLASH,
-KS_ERR_ASM_ESC_OCTAL,
-KS_ERR_ASM_ESC_SEQUENCE,
-KS_ERR_ASM_ESC_STR,
-KS_ERR_ASM_TOKEN_INVALID,
-KS_ERR_ASM_INSN_UNSUPPORTED,
-KS_ERR_ASM_FIXUP_INVALID,
-KS_ERR_ASM_LABEL_INVALID,
-KS_ERR_ASM_FRAGMENT_INVALID,
-KS_ERR_ASM_INVALIDOPERAND = 512,
-KS_ERR_ASM_MISSINGFEATURE,
-KS_ERR_ASM_MNEMONICFAIL,
\ No newline at end of file
diff --git a/bindings/powershell/Keystone/Const/ks_mode_cons.cs b/bindings/powershell/Keystone/Const/ks_mode_cons.cs
deleted file mode 100755
index 97f64f5..0000000
--- a/bindings/powershell/Keystone/Const/ks_mode_cons.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-KS_MODE_LITTLE_ENDIAN = 0,
-KS_MODE_BIG_ENDIAN = 1 << 30,
-KS_MODE_ARM = 1 << 0,
-KS_MODE_THUMB = 1 << 4,
-KS_MODE_V8 = 1 << 6,
-KS_MODE_MICRO = 1 << 4,
-KS_MODE_MIPS3 = 1 << 5,
-KS_MODE_MIPS32R6 = 1 << 6,
-KS_MODE_MIPS32 = 1 << 2,
-KS_MODE_MIPS64 = 1 << 3,
-KS_MODE_16 = 1 << 1,
-KS_MODE_32 = 1 << 2,
-KS_MODE_64 = 1 << 3,
-KS_MODE_PPC32 = 1 << 2,
-KS_MODE_PPC64 = 1 << 3,
-KS_MODE_QPX = 1 << 4,
-KS_MODE_SPARC32 = 1 << 2,
-KS_MODE_SPARC64 = 1 << 3,
-KS_MODE_V9 = 1 << 4,
\ No newline at end of file
diff --git a/bindings/powershell/Keystone/Const/ks_opt_value_cons.cs b/bindings/powershell/Keystone/Const/ks_opt_value_cons.cs
deleted file mode 100755
index f904ad2..0000000
--- a/bindings/powershell/Keystone/Const/ks_opt_value_cons.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-KS_OPT_SYNTAX_INTEL = 1 << 0,
-KS_OPT_SYNTAX_ATT   = 1 << 1,
-KS_OPT_SYNTAX_NASM  = 1 << 2,
-KS_OPT_SYNTAX_MASM  = 1 << 3,
-KS_OPT_SYNTAX_GAS   = 1 << 4,
\ No newline at end of file
diff --git a/bindings/powershell/Keystone/Keystone.psm1 b/bindings/powershell/Keystone/Keystone.psm1
index ddfdcbb..2133daf 100755
--- a/bindings/powershell/Keystone/Keystone.psm1
+++ b/bindings/powershell/Keystone/Keystone.psm1
@@ -130,10 +130,10 @@ function Get-KeystoneAssembly {
 	}
 
 	# Load C# constants
-	$ks_err = Get-Content $($PSScriptRoot + '\Const\ks_err_cons.cs')
-	$ks_arch = Get-Content $($PSScriptRoot + '\Const\ks_arch_cons.cs')
-	$ks_mode = Get-Content $($PSScriptRoot + '\Const\ks_mode_cons.cs')
-	$ks_opt_value = Get-Content $($PSScriptRoot + '\Const\ks_opt_value_cons.cs')
+	$ks_err = Select-String "KS_ERR_" $($PSScriptRoot + '\Const\keystone_h.cs') |select -exp line
+	$ks_arch = Select-String "KS_ARCH_" $($PSScriptRoot + '\Const\keystone_h.cs') |select -exp line
+	$ks_mode = Select-String "KS_MODE_" $($PSScriptRoot + '\Const\keystone_h.cs') |select -exp line
+	$ks_opt_value = Select-String "KS_OPT_SYNTAX_" $($PSScriptRoot + '\Const\keystone_h.cs') |select -exp line
 
 	# Inline C# to parse the unmanaged keystone DLL
 	Add-Type -TypeDefinition @"
-- 
GitLab