crabstone 4.0.4 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +6 -0
  3. data/README.md +24 -8
  4. data/lib/crabstone/arch/3/constants.rb +86 -0
  5. data/lib/crabstone/arch/4/constants.rb +116 -0
  6. data/lib/crabstone/arch/5/arm.rb +111 -0
  7. data/lib/crabstone/arch/5/arm64.rb +131 -0
  8. data/lib/crabstone/arch/5/arm64_const.rb +3015 -0
  9. data/lib/crabstone/arch/5/arm_const.rb +840 -0
  10. data/lib/crabstone/arch/5/bpf.rb +81 -0
  11. data/lib/crabstone/arch/5/bpf_const.rb +124 -0
  12. data/lib/crabstone/arch/5/constants.rb +155 -0
  13. data/lib/crabstone/arch/5/evm.rb +20 -0
  14. data/lib/crabstone/arch/5/evm_const.rb +161 -0
  15. data/lib/crabstone/arch/5/m680x.rb +106 -0
  16. data/lib/crabstone/arch/5/m680x_const.rb +426 -0
  17. data/lib/crabstone/arch/5/m68k.rb +129 -0
  18. data/lib/crabstone/arch/5/m68k_const.rb +496 -0
  19. data/lib/crabstone/arch/5/mips.rb +57 -0
  20. data/lib/crabstone/arch/5/mips_const.rb +869 -0
  21. data/lib/crabstone/arch/5/mos65xx.rb +52 -0
  22. data/lib/crabstone/arch/5/mos65xx_const.rb +162 -0
  23. data/lib/crabstone/arch/5/ppc.rb +69 -0
  24. data/lib/crabstone/arch/5/ppc_const.rb +2024 -0
  25. data/lib/crabstone/arch/5/riscv.rb +58 -0
  26. data/lib/crabstone/arch/5/riscv_const.rb +455 -0
  27. data/lib/crabstone/arch/5/sh.rb +72 -0
  28. data/lib/crabstone/arch/5/sh_const.rb +376 -0
  29. data/lib/crabstone/arch/5/sparc.rb +60 -0
  30. data/lib/crabstone/arch/5/sparc_const.rb +439 -0
  31. data/lib/crabstone/arch/5/sysz.rb +60 -0
  32. data/lib/crabstone/arch/5/sysz_const.rb +2532 -0
  33. data/lib/crabstone/arch/5/tms320c64x.rb +87 -0
  34. data/lib/crabstone/arch/5/tms320c64x_const.rb +287 -0
  35. data/lib/crabstone/arch/5/tricore.rb +59 -0
  36. data/lib/crabstone/arch/5/tricore_const.rb +488 -0
  37. data/lib/crabstone/arch/5/wasm.rb +81 -0
  38. data/lib/crabstone/arch/5/wasm_const.rb +201 -0
  39. data/lib/crabstone/arch/5/x86.rb +98 -0
  40. data/lib/crabstone/arch/5/x86_const.rb +1999 -0
  41. data/lib/crabstone/arch/5/xcore.rb +59 -0
  42. data/lib/crabstone/arch/5/xcore_const.rb +171 -0
  43. data/lib/crabstone/arch/extension.rb +2 -1
  44. data/lib/crabstone/arch/register.rb +1 -1
  45. data/lib/crabstone/arch.rb +6 -0
  46. data/lib/crabstone/binding/5/detail.rb +47 -0
  47. data/lib/crabstone/binding/5/instruction.rb +23 -0
  48. data/lib/crabstone/binding.rb +2 -2
  49. data/lib/crabstone/constants.rb +2 -107
  50. data/lib/crabstone/cs_version.rb +2 -3
  51. data/lib/crabstone/disassembler.rb +2 -3
  52. data/lib/crabstone/instruction.rb +0 -1
  53. data/lib/crabstone/version.rb +1 -1
  54. metadata +45 -4
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require 'crabstone/arch/extension'
8
+ require_relative 'xcore_const'
9
+
10
+ module Crabstone
11
+ module XCore
12
+ class OperandMemory < FFI::Struct
13
+ layout(
14
+ :base, :uint8,
15
+ :index, :uint8,
16
+ :disp, :int,
17
+ :direct, :int
18
+ )
19
+ end
20
+
21
+ class OperandValue < FFI::Union
22
+ layout(
23
+ :reg, :uint,
24
+ :imm, :int,
25
+ :mem, OperandMemory
26
+ )
27
+ end
28
+
29
+ class Operand < FFI::Struct
30
+ layout(
31
+ :type, :uint,
32
+ :value, OperandValue
33
+ )
34
+
35
+ include Crabstone::Extension::Operand
36
+
37
+ def reg?
38
+ self[:type] == OP_REG
39
+ end
40
+
41
+ def imm?
42
+ self[:type] == OP_IMM
43
+ end
44
+
45
+ def mem?
46
+ self[:type] == OP_MEM
47
+ end
48
+ end
49
+
50
+ class Instruction < FFI::Struct
51
+ layout(
52
+ :op_count, :uint8,
53
+ :operands, [Operand, 8]
54
+ )
55
+
56
+ include Crabstone::Extension::Instruction
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'crabstone/arch/register'
6
+
7
+ module Crabstone
8
+ module XCore
9
+ OP_INVALID = 0
10
+ OP_REG = 1
11
+ OP_IMM = 2
12
+ OP_MEM = 3
13
+
14
+ REG_INVALID = 0
15
+ REG_CP = 1
16
+ REG_DP = 2
17
+ REG_LR = 3
18
+ REG_SP = 4
19
+ REG_R0 = 5
20
+ REG_R1 = 6
21
+ REG_R2 = 7
22
+ REG_R3 = 8
23
+ REG_R4 = 9
24
+ REG_R5 = 10
25
+ REG_R6 = 11
26
+ REG_R7 = 12
27
+ REG_R8 = 13
28
+ REG_R9 = 14
29
+ REG_R10 = 15
30
+ REG_R11 = 16
31
+ REG_PC = 17
32
+ REG_SCP = 18
33
+ REG_SSR = 19
34
+ REG_ET = 20
35
+ REG_ED = 21
36
+ REG_SED = 22
37
+ REG_KEP = 23
38
+ REG_KSP = 24
39
+ REG_ID = 25
40
+ REG_ENDING = 26
41
+
42
+ INS_INVALID = 0
43
+ INS_ADD = 1
44
+ INS_ANDNOT = 2
45
+ INS_AND = 3
46
+ INS_ASHR = 4
47
+ INS_BAU = 5
48
+ INS_BITREV = 6
49
+ INS_BLA = 7
50
+ INS_BLAT = 8
51
+ INS_BL = 9
52
+ INS_BF = 10
53
+ INS_BT = 11
54
+ INS_BU = 12
55
+ INS_BRU = 13
56
+ INS_BYTEREV = 14
57
+ INS_CHKCT = 15
58
+ INS_CLRE = 16
59
+ INS_CLRPT = 17
60
+ INS_CLRSR = 18
61
+ INS_CLZ = 19
62
+ INS_CRC8 = 20
63
+ INS_CRC32 = 21
64
+ INS_DCALL = 22
65
+ INS_DENTSP = 23
66
+ INS_DGETREG = 24
67
+ INS_DIVS = 25
68
+ INS_DIVU = 26
69
+ INS_DRESTSP = 27
70
+ INS_DRET = 28
71
+ INS_ECALLF = 29
72
+ INS_ECALLT = 30
73
+ INS_EDU = 31
74
+ INS_EEF = 32
75
+ INS_EET = 33
76
+ INS_EEU = 34
77
+ INS_ENDIN = 35
78
+ INS_ENTSP = 36
79
+ INS_EQ = 37
80
+ INS_EXTDP = 38
81
+ INS_EXTSP = 39
82
+ INS_FREER = 40
83
+ INS_FREET = 41
84
+ INS_GETD = 42
85
+ INS_GET = 43
86
+ INS_GETN = 44
87
+ INS_GETR = 45
88
+ INS_GETSR = 46
89
+ INS_GETST = 47
90
+ INS_GETTS = 48
91
+ INS_INCT = 49
92
+ INS_INIT = 50
93
+ INS_INPW = 51
94
+ INS_INSHR = 52
95
+ INS_INT = 53
96
+ INS_IN = 54
97
+ INS_KCALL = 55
98
+ INS_KENTSP = 56
99
+ INS_KRESTSP = 57
100
+ INS_KRET = 58
101
+ INS_LADD = 59
102
+ INS_LD16S = 60
103
+ INS_LD8U = 61
104
+ INS_LDA16 = 62
105
+ INS_LDAP = 63
106
+ INS_LDAW = 64
107
+ INS_LDC = 65
108
+ INS_LDW = 66
109
+ INS_LDIVU = 67
110
+ INS_LMUL = 68
111
+ INS_LSS = 69
112
+ INS_LSUB = 70
113
+ INS_LSU = 71
114
+ INS_MACCS = 72
115
+ INS_MACCU = 73
116
+ INS_MJOIN = 74
117
+ INS_MKMSK = 75
118
+ INS_MSYNC = 76
119
+ INS_MUL = 77
120
+ INS_NEG = 78
121
+ INS_NOT = 79
122
+ INS_OR = 80
123
+ INS_OUTCT = 81
124
+ INS_OUTPW = 82
125
+ INS_OUTSHR = 83
126
+ INS_OUTT = 84
127
+ INS_OUT = 85
128
+ INS_PEEK = 86
129
+ INS_REMS = 87
130
+ INS_REMU = 88
131
+ INS_RETSP = 89
132
+ INS_SETCLK = 90
133
+ INS_SET = 91
134
+ INS_SETC = 92
135
+ INS_SETD = 93
136
+ INS_SETEV = 94
137
+ INS_SETN = 95
138
+ INS_SETPSC = 96
139
+ INS_SETPT = 97
140
+ INS_SETRDY = 98
141
+ INS_SETSR = 99
142
+ INS_SETTW = 100
143
+ INS_SETV = 101
144
+ INS_SEXT = 102
145
+ INS_SHL = 103
146
+ INS_SHR = 104
147
+ INS_SSYNC = 105
148
+ INS_ST16 = 106
149
+ INS_ST8 = 107
150
+ INS_STW = 108
151
+ INS_SUB = 109
152
+ INS_SYNCR = 110
153
+ INS_TESTCT = 111
154
+ INS_TESTLCL = 112
155
+ INS_TESTWCT = 113
156
+ INS_TSETMR = 114
157
+ INS_START = 115
158
+ INS_WAITEF = 116
159
+ INS_WAITET = 117
160
+ INS_WAITEU = 118
161
+ INS_XOR = 119
162
+ INS_ZEXT = 120
163
+ INS_ENDING = 121
164
+
165
+ GRP_INVALID = 0
166
+ GRP_JUMP = 1
167
+ GRP_ENDING = 2
168
+
169
+ extend Register
170
+ end
171
+ end
@@ -8,7 +8,8 @@ module Crabstone
8
8
  module Operand
9
9
  def value
10
10
  self[:value].class.members.find do |s|
11
- return self[:value][s] if __send__("#{s}?".to_sym)
11
+ sym = "#{s}?".to_sym
12
+ return self[:value][s] if respond_to?(sym) && __send__(sym)
12
13
  end
13
14
  end
14
15
 
@@ -19,7 +19,7 @@ module Crabstone
19
19
  return @dict if defined?(@dict)
20
20
 
21
21
  keys = constants.select { |k| k.to_s.start_with?('REG_') }
22
- @dict = keys.map { |k| [k.to_s[4..], const_get(k)] }.to_h.freeze
22
+ @dict = keys.to_h { |k| [k.to_s[4..], const_get(k)] }.freeze
23
23
  end
24
24
 
25
25
  def value?(val)
@@ -31,6 +31,12 @@ module Crabstone
31
31
  when ARCH_TMS320C64X then TMS320C64X
32
32
  when ARCH_M680X then M680X
33
33
  when ARCH_EVM then EVM
34
+ when ARCH_MOS65XX then MOS65XX
35
+ when ARCH_WASM then WASM
36
+ when ARCH_BPF then BPF
37
+ when ARCH_RISCV then RISCV
38
+ when ARCH_SH then SH
39
+ when ARCH_TRICORE then TRICORE
34
40
  end
35
41
  end
36
42
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require 'crabstone/arch'
8
+
9
+ module Crabstone
10
+ module Binding
11
+ class Architecture < FFI::Union
12
+ layout(
13
+ :arm, ARM::Instruction,
14
+ :arm64, ARM64::Instruction,
15
+ :bpf, BPF::Instruction,
16
+ :evm, EVM::Instruction,
17
+ :m680x, M680X::Instruction,
18
+ :m68k, M68K::Instruction,
19
+ :mips, MIPS::Instruction,
20
+ :mos65xx, MOS65XX::Instruction,
21
+ :ppc, PPC::Instruction,
22
+ :riscv, RISCV::Instruction,
23
+ :sh, SH::Instruction,
24
+ :sparc, Sparc::Instruction,
25
+ :sysz, SysZ::Instruction,
26
+ :tms320c64x, TMS320C64X::Instruction,
27
+ :tricore, TRICORE::Instruction,
28
+ :wasm, WASM::Instruction,
29
+ :x86, X86::Instruction,
30
+ :xcore, XCore::Instruction
31
+ )
32
+ end
33
+
34
+ class Detail < FFI::Struct
35
+ layout(
36
+ :regs_read, [:uint16, 20],
37
+ :regs_read_count, :uint8,
38
+ :regs_write, [:uint16, 20],
39
+ :regs_write_count, :uint8,
40
+ :groups, [:uint8, 8],
41
+ :groups_count, :uint8,
42
+ :writeback, :bool,
43
+ :arch, Architecture
44
+ )
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require_relative 'detail'
8
+
9
+ module Crabstone
10
+ module Binding
11
+ class Instruction < FFI::ManagedStruct
12
+ layout(
13
+ :id, :uint32,
14
+ :address, :uint64,
15
+ :size, :uint16,
16
+ :bytes, [:uint8, 24],
17
+ :mnemonic, [:char, 32],
18
+ :op_str, [:char, 160],
19
+ :detail, Detail.by_ref
20
+ )
21
+ end
22
+ end
23
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'crabstone/constants'
4
3
  require 'crabstone/binding/structs'
4
+ require 'crabstone/constants'
5
5
 
6
6
  module Crabstone
7
7
  module Binding
@@ -41,7 +41,7 @@ module Crabstone
41
41
  # Wrap to prevent function not found in elder Capstone.
42
42
  def self.safe_attach(*args)
43
43
  attach_function(*args)
44
- rescue FFI::NotFoundError
44
+ rescue FFI::NotFoundError # rubocop: disable Lint/SuppressedException
45
45
  end
46
46
 
47
47
  # New APIs since Capstone 4.
@@ -1,110 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # XXX: Auto-gerneate this file?
4
- # Constants in this file might be added in a newer Capstone version,
5
- # but I expect they are always backward compatible.
3
+ require 'crabstone/cs_version'
6
4
 
7
- require 'crabstone/version'
8
-
9
- module Crabstone
10
- # API version
11
- BINDING_MAJ = VERSION.split('.').first.to_i
12
-
13
- # architectures
14
- ARCH_ARM = 0
15
- ARCH_ARM64 = 1
16
- ARCH_MIPS = 2
17
- ARCH_X86 = 3
18
- ARCH_PPC = 4
19
- ARCH_SPARC = 5
20
- ARCH_SYSZ = 6
21
- ARCH_XCORE = 7
22
- ARCH_M68K = 8
23
- ARCH_TMS320C64X = 9
24
- ARCH_M680X = 10
25
- ARCH_EVM = 11
26
- ARCH_MAX = 12
27
- ARCH_ALL = 0xFFFF
28
-
29
- # disasm mode
30
- MODE_LITTLE_ENDIAN = 0 # little-endian mode (default mode)
31
- MODE_ARM = 0 # 32-bit ARM
32
- MODE_16 = 1 << 1 # 16-bit mode (X86)
33
- MODE_32 = 1 << 2 # 32-bit mode (X86)
34
- MODE_64 = 1 << 3 # 64-bit mode (X86, PPC)
35
- MODE_THUMB = 1 << 4 # ARM's Thumb mode, including Thumb-2
36
- MODE_MCLASS = 1 << 5 # ARM's Cortex-M series
37
- MODE_V8 = 1 << 6 # ARMv8 A32 encodings for ARM
38
- MODE_MICRO = 1 << 4 # MicroMips mode (MIPS)
39
- MODE_MIPS3 = 1 << 5 # Mips III ISA
40
- MODE_MIPS32R6 = 1 << 6 # Mips32r6 ISA
41
- MODE_MIPSGP64 = 1 << 7 # General Purpose Registers are 64-bit wide (MIPS)
42
- MODE_MODE_MIPS2 = 1 << 7 # Mips II ISA
43
- MODE_V9 = 1 << 4 # SparcV9 mode (Sparc)
44
- MODE_QPX = 1 << 4 # Quad Processing eXtensions mode (PPC)
45
- MODE_M68K_000 = 1 << 1 # M68K 68000 mode
46
- MODE_M68K_010 = 1 << 2 # M68K 68010 mode
47
- MODE_M68K_020 = 1 << 3 # M68K 68020 mode
48
- MODE_M68K_030 = 1 << 4 # M68K 68030 mode
49
- MODE_M68K_040 = 1 << 5 # M68K 68040 mode
50
- MODE_M68K_060 = 1 << 6 # M68K 68060 mode
51
- MODE_BIG_ENDIAN = 1 << 31 # big-endian mode
52
- MODE_MIPS32 = MODE_32 # Mips32 ISA (Mips)
53
- MODE_MIPS64 = MODE_64 # Mips64 ISA (Mips)
54
- MODE_M680X_6301 = 1 << 1 # M680X HD6301/3 mode
55
- MODE_M680X_6309 = 1 << 2 # M680X HD6309 mode
56
- MODE_M680X_6800 = 1 << 3 # M680X M6800/2 mode
57
- MODE_M680X_6801 = 1 << 4 # M680X M6801/3 mode
58
- MODE_M680X_6805 = 1 << 5 # M680X M6805 mode
59
- MODE_M680X_6808 = 1 << 6 # M680X M68HC08 mode
60
- MODE_M680X_6809 = 1 << 7 # M680X M6809 mode
61
- MODE_M680X_6811 = 1 << 8 # M680X M68HC11 mode
62
- MODE_M680X_CPU12 = 1 << 9 # M680X CPU12 mode
63
- MODE_M680X_HCS08 = 1 << 10 # M680X HCS08 mode
64
-
65
- # Capstone option type
66
- OPT_SYNTAX = 1 # Intel X86 asm syntax (ARCH_X86 arch)
67
- OPT_DETAIL = 2 # Break down instruction structure into details
68
- OPT_MODE = 3 # Change engine's mode at run-time
69
- OPT_MEM = 4 # Change engine's mode at run-time
70
- OPT_SKIPDATA = 5 # Skip data when disassembling
71
- OPT_SKIPDATA_SETUP = 6 # Setup user-defined function for SKIPDATA option
72
- OPT_MNEMONIC = 7 # Customize instruction mnemonic
73
- OPT_UNSIGNED = 8 # Print immediate in unsigned form
74
-
75
- # Capstone option value
76
- OPT_OFF = 0 # Turn OFF an option - default option of OPT_DETAIL
77
- OPT_ON = 3 # Turn ON an option (OPT_DETAIL)
78
-
79
- # Common instruction operand types - to be consistent across all architectures.
80
- OP_INVALID = 0
81
- OP_REG = 1
82
- OP_IMM = 2
83
- OP_MEM = 3
84
- OP_FP = 4
85
-
86
- # Common instruction groups - to be consistent across all architectures.
87
- GRP_INVALID = 0 # uninitialized/invalid group.
88
- GRP_JUMP = 1 # all jump instructions (conditional+direct+indirect jumps)
89
- GRP_CALL = 2 # all call instructions
90
- GRP_RET = 3 # all return instructions
91
- GRP_INT = 4 # all interrupt instructions (int+syscall)
92
- GRP_IRET = 5 # all interrupt return instructions
93
- GRP_PRIVILEGE = 6 # all privileged instructions
94
-
95
- # Access types for instruction operands.
96
- AC_INVALID = 0 # Invalid/unitialized access type.
97
- AC_READ = 1 << 0 # Operand that is read from.
98
- AC_WRITE = 1 << 1 # Operand that is written to.
99
-
100
- # Capstone syntax value
101
- OPT_SYNTAX_DEFAULT = 0 # Default assembly syntax of all platforms (OPT_SYNTAX)
102
- OPT_SYNTAX_INTEL = 1 # Intel X86 asm syntax - default syntax on X86 (OPT_SYNTAX, ARCH_X86)
103
- OPT_SYNTAX_ATT = 2 # ATT asm syntax (OPT_SYNTAX, ARCH_X86)
104
- OPT_SYNTAX_NOREGNAME = 3 # Asm syntax prints register name with only number - (OPT_SYNTAX, ARCH_PPC, ARCH_ARM)
105
- OPT_SYNTAX_MASM = 4 # MASM syntax (CS_OPT_SYNTAX, CS_ARCH_X86)
106
-
107
- # query id for cs_support()
108
- SUPPORT_DIET = ARCH_ALL + 1
109
- SUPPORT_X86_REDUCE = ARCH_ALL + 2
110
- end
5
+ require File.join(__dir__, 'arch', Crabstone.cs_major_version.to_s, 'constants.rb')
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'ffi'
4
4
 
5
- require 'crabstone/constants'
6
5
  require 'crabstone/version'
7
6
 
8
7
  module Crabstone
@@ -42,7 +41,7 @@ module Crabstone
42
41
  # Checks the cs_major is less or equal to Crabstone::VERSION.
43
42
  def version_compatitable!
44
43
  @version_compatitable ||=
45
- cs_major_version <= Crabstone::BINDING_MAJ && cs_major_version >= 3
44
+ cs_major_version <= VERSION.split('.').first.to_i && cs_major_version >= 3
46
45
  maj, min = cs_version
47
46
  raise "FATAL: Crabstone v#{VERSION} doesn't support binding Capstone v#{maj}.#{min}" unless @version_compatitable
48
47
  end
@@ -50,7 +49,7 @@ module Crabstone
50
49
  # @private
51
50
  module Binding
52
51
  extend FFI::Library
53
- ffi_lib ['capstone', 'libcapstone.so.4', 'libcapstone.so.3']
52
+ ffi_lib ['capstone', 'libcapstone.so.5', 'libcapstone.so.4', 'libcapstone.so.3']
54
53
 
55
54
  attach_function :cs_version, %i[pointer pointer], :uint
56
55
  end
@@ -81,9 +81,8 @@ module Crabstone
81
81
  code = code.read_array_of_uchar(sz).pack('c*')
82
82
  begin
83
83
  Integer(yield(code, offset))
84
- rescue StandardError
85
- warn "Error in skipdata callback: #{$ERROR_INFO}"
86
- # It will go on to crash, but now at least there's more info :)
84
+ rescue StandardError => e
85
+ raise Crabstone::ErrSkipData, "Error in skipdata callback: #{e.message}"
87
86
  end
88
87
  end
89
88
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'crabstone/arch'
4
4
  require 'crabstone/binding'
5
- require 'crabstone/constants'
6
5
  require 'crabstone/error'
7
6
 
8
7
  module Crabstone
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Crabstone
4
- VERSION = '4.0.4'
4
+ VERSION = '5.0.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crabstone
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.4
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Nagy
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-02-14 00:00:00.000000000 Z
12
+ date: 2024-08-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -123,6 +123,7 @@ files:
123
123
  - lib/crabstone/arch/3/arm64.rb
124
124
  - lib/crabstone/arch/3/arm64_const.rb
125
125
  - lib/crabstone/arch/3/arm_const.rb
126
+ - lib/crabstone/arch/3/constants.rb
126
127
  - lib/crabstone/arch/3/mips.rb
127
128
  - lib/crabstone/arch/3/mips_const.rb
128
129
  - lib/crabstone/arch/3/ppc.rb
@@ -139,6 +140,7 @@ files:
139
140
  - lib/crabstone/arch/4/arm64.rb
140
141
  - lib/crabstone/arch/4/arm64_const.rb
141
142
  - lib/crabstone/arch/4/arm_const.rb
143
+ - lib/crabstone/arch/4/constants.rb
142
144
  - lib/crabstone/arch/4/evm.rb
143
145
  - lib/crabstone/arch/4/evm_const.rb
144
146
  - lib/crabstone/arch/4/m680x.rb
@@ -159,6 +161,43 @@ files:
159
161
  - lib/crabstone/arch/4/x86_const.rb
160
162
  - lib/crabstone/arch/4/xcore.rb
161
163
  - lib/crabstone/arch/4/xcore_const.rb
164
+ - lib/crabstone/arch/5/arm.rb
165
+ - lib/crabstone/arch/5/arm64.rb
166
+ - lib/crabstone/arch/5/arm64_const.rb
167
+ - lib/crabstone/arch/5/arm_const.rb
168
+ - lib/crabstone/arch/5/bpf.rb
169
+ - lib/crabstone/arch/5/bpf_const.rb
170
+ - lib/crabstone/arch/5/constants.rb
171
+ - lib/crabstone/arch/5/evm.rb
172
+ - lib/crabstone/arch/5/evm_const.rb
173
+ - lib/crabstone/arch/5/m680x.rb
174
+ - lib/crabstone/arch/5/m680x_const.rb
175
+ - lib/crabstone/arch/5/m68k.rb
176
+ - lib/crabstone/arch/5/m68k_const.rb
177
+ - lib/crabstone/arch/5/mips.rb
178
+ - lib/crabstone/arch/5/mips_const.rb
179
+ - lib/crabstone/arch/5/mos65xx.rb
180
+ - lib/crabstone/arch/5/mos65xx_const.rb
181
+ - lib/crabstone/arch/5/ppc.rb
182
+ - lib/crabstone/arch/5/ppc_const.rb
183
+ - lib/crabstone/arch/5/riscv.rb
184
+ - lib/crabstone/arch/5/riscv_const.rb
185
+ - lib/crabstone/arch/5/sh.rb
186
+ - lib/crabstone/arch/5/sh_const.rb
187
+ - lib/crabstone/arch/5/sparc.rb
188
+ - lib/crabstone/arch/5/sparc_const.rb
189
+ - lib/crabstone/arch/5/sysz.rb
190
+ - lib/crabstone/arch/5/sysz_const.rb
191
+ - lib/crabstone/arch/5/tms320c64x.rb
192
+ - lib/crabstone/arch/5/tms320c64x_const.rb
193
+ - lib/crabstone/arch/5/tricore.rb
194
+ - lib/crabstone/arch/5/tricore_const.rb
195
+ - lib/crabstone/arch/5/wasm.rb
196
+ - lib/crabstone/arch/5/wasm_const.rb
197
+ - lib/crabstone/arch/5/x86.rb
198
+ - lib/crabstone/arch/5/x86_const.rb
199
+ - lib/crabstone/arch/5/xcore.rb
200
+ - lib/crabstone/arch/5/xcore_const.rb
162
201
  - lib/crabstone/arch/extension.rb
163
202
  - lib/crabstone/arch/register.rb
164
203
  - lib/crabstone/binding.rb
@@ -166,6 +205,8 @@ files:
166
205
  - lib/crabstone/binding/3/instruction.rb
167
206
  - lib/crabstone/binding/4/detail.rb
168
207
  - lib/crabstone/binding/4/instruction.rb
208
+ - lib/crabstone/binding/5/detail.rb
209
+ - lib/crabstone/binding/5/instruction.rb
169
210
  - lib/crabstone/binding/structs.rb
170
211
  - lib/crabstone/constants.rb
171
212
  - lib/crabstone/cs_version.rb
@@ -190,14 +231,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
231
  requirements:
191
232
  - - ">="
192
233
  - !ruby/object:Gem::Version
193
- version: '2.6'
234
+ version: '3.1'
194
235
  required_rubygems_version: !ruby/object:Gem::Requirement
195
236
  requirements:
196
237
  - - ">="
197
238
  - !ruby/object:Gem::Version
198
239
  version: '0'
199
240
  requirements: []
200
- rubygems_version: 3.1.6
241
+ rubygems_version: 3.5.3
201
242
  signing_key:
202
243
  specification_version: 4
203
244
  summary: Ruby FFI bindings for the capstone disassembly engine