xref: /aosp_15_r20/external/capstone/ChangeLog (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf EbrahimiThis file details the changelog of Capstone.
2*9a0e4156SSadaf Ebrahimi
3*9a0e4156SSadaf Ebrahimi---------------------------------
4*9a0e4156SSadaf EbrahimiVersion 4.0.1: January 10th, 2019
5*9a0e4156SSadaf Ebrahimi
6*9a0e4156SSadaf Ebrahimi
7*9a0e4156SSadaf Ebrahimi[ Core ]
8*9a0e4156SSadaf Ebrahimi
9*9a0e4156SSadaf Ebrahimi- Fix some issues for packaging (Debian, Gentoo).
10*9a0e4156SSadaf Ebrahimi- Better support for building with Mingw.
11*9a0e4156SSadaf Ebrahimi- cstool has new option -s to turn on skipdata mode.
12*9a0e4156SSadaf Ebrahimi- cstool -v now report build settings of the core.
13*9a0e4156SSadaf Ebrahimi- Add suite/capstone_get_setup.c so users can integrate with their own code
14*9a0e4156SSadaf Ebrahimi  to retrieve Capstone settings at build time.
15*9a0e4156SSadaf Ebrahimi
16*9a0e4156SSadaf Ebrahimi
17*9a0e4156SSadaf Ebrahimi[ Arm ]
18*9a0e4156SSadaf Ebrahimi
19*9a0e4156SSadaf Ebrahimi- Fix 4.0 regression: the `tbh [r0, r1, lsl #1]` instruction sets the operand.shift.value back again (see #1317)
20*9a0e4156SSadaf Ebrahimi- Remove ARM_REG_PC group for BX instruction.
21*9a0e4156SSadaf Ebrahimi
22*9a0e4156SSadaf Ebrahimi
23*9a0e4156SSadaf Ebrahimi[ X86 ]
24*9a0e4156SSadaf Ebrahimi
25*9a0e4156SSadaf Ebrahimi- Fix: endbr32 and endbr64 instructions are now properly decoded in both CS_MODE_32 and CS_MODE_64  (#1129)
26*9a0e4156SSadaf Ebrahimi
27*9a0e4156SSadaf Ebrahimi
28*9a0e4156SSadaf Ebrahimi[ M680X ]
29*9a0e4156SSadaf Ebrahimi
30*9a0e4156SSadaf Ebrahimi- Fix some issues reported by clang-analyzer (#1329).
31*9a0e4156SSadaf Ebrahimi
32*9a0e4156SSadaf Ebrahimi
33*9a0e4156SSadaf Ebrahimi[ Python ]
34*9a0e4156SSadaf Ebrahimi
35*9a0e4156SSadaf Ebrahimi- Fix skipdata setup.
36*9a0e4156SSadaf Ebrahimi- Add getter/setter for skipdata_mnem, skipdata_callback.
37*9a0e4156SSadaf Ebrahimi
38*9a0e4156SSadaf Ebrahimi
39*9a0e4156SSadaf Ebrahimi---------------------------------
40*9a0e4156SSadaf EbrahimiVersion 4.0: December 18th, 2018
41*9a0e4156SSadaf Ebrahimi
42*9a0e4156SSadaf Ebrahimi
43*9a0e4156SSadaf Ebrahimi[ Core ]
44*9a0e4156SSadaf Ebrahimi
45*9a0e4156SSadaf Ebrahimi- New APIs: cs_regs_access()
46*9a0e4156SSadaf Ebrahimi- Add new options for cs_option(): CS_OPT_MNEMONIC & CS_OPT_UNSIGNED & CS_OPT_SYNTAX_MASM.
47*9a0e4156SSadaf Ebrahimi- Various updates & bugfixes for all architectures.
48*9a0e4156SSadaf Ebrahimi- Add 4 new architectures: EVM, M68K, M680X & TMS320C64x.
49*9a0e4156SSadaf Ebrahimi- Add new group types: CS_GRP_PRIVILEGE & CS_GRP_BRANCH_RELATIVE.
50*9a0e4156SSadaf Ebrahimi- Add new error types: CS_ERR_X86_MASM.
51*9a0e4156SSadaf Ebrahimi
52*9a0e4156SSadaf Ebrahimi
53*9a0e4156SSadaf Ebrahimi[ X86 ]
54*9a0e4156SSadaf Ebrahimi
55*9a0e4156SSadaf Ebrahimi- Add XOP code condition type in x86_xop_cc.
56*9a0e4156SSadaf Ebrahimi- Add some info on encoding to cs_x86 in cs_x86_encoding.
57*9a0e4156SSadaf Ebrahimi- Add register flags update in cs_x86.{eflags, fpu_flags}
58*9a0e4156SSadaf Ebrahimi- Change cs_x86.disp type from int32_t to int64_t.
59*9a0e4156SSadaf Ebrahimi- Add new groups: X86_GRP_VM & X86_GRP_FPU.
60*9a0e4156SSadaf Ebrahimi- Lots of new instructions (AVX)
61*9a0e4156SSadaf Ebrahimi
62*9a0e4156SSadaf Ebrahimi
63*9a0e4156SSadaf Ebrahimi[ ARM64 ]
64*9a0e4156SSadaf Ebrahimi
65*9a0e4156SSadaf Ebrahimi- Add instruction ARM64_INS_NEGS & ARM64_INS_NGCS.
66*9a0e4156SSadaf Ebrahimi
67*9a0e4156SSadaf Ebrahimi
68*9a0e4156SSadaf Ebrahimi[ Mips ]
69*9a0e4156SSadaf Ebrahimi
70*9a0e4156SSadaf Ebrahimi- Add mode CS_MODE_MIPS2.
71*9a0e4156SSadaf Ebrahimi
72*9a0e4156SSadaf Ebrahimi
73*9a0e4156SSadaf Ebrahimi[ PPC ]
74*9a0e4156SSadaf Ebrahimi
75*9a0e4156SSadaf Ebrahimi- Change cs_ppc_op.imm type from int32_t to int64_t.
76*9a0e4156SSadaf Ebrahimi- Add new groups: PPC_GRP_ICBT, PPC_GRP_P8ALTIVEC, PPC_GRP_P8VECTOR & PPC_GRP_QPX.
77*9a0e4156SSadaf Ebrahimi- Lots of new instructions (QPX among them)
78*9a0e4156SSadaf Ebrahimi
79*9a0e4156SSadaf Ebrahimi
80*9a0e4156SSadaf Ebrahimi[ Sparc ]
81*9a0e4156SSadaf Ebrahimi
82*9a0e4156SSadaf Ebrahimi- Change cs_sparc_op.imm type from int32_t to int64_t.
83*9a0e4156SSadaf Ebrahimi
84*9a0e4156SSadaf Ebrahimi
85*9a0e4156SSadaf Ebrahimi[ Binding ]
86*9a0e4156SSadaf Ebrahimi
87*9a0e4156SSadaf Ebrahimi- New bindings: PowerShell & VB6
88*9a0e4156SSadaf Ebrahimi
89*9a0e4156SSadaf Ebrahimi
90*9a0e4156SSadaf Ebrahimi---------------------------------
91*9a0e4156SSadaf EbrahimiVersion 3.0.5: July 18th, 2018
92*9a0e4156SSadaf Ebrahimi
93*9a0e4156SSadaf Ebrahimi
94*9a0e4156SSadaf Ebrahimi[ Core ]
95*9a0e4156SSadaf Ebrahimi
96*9a0e4156SSadaf Ebrahimi- Fix the include path for Android builds when building cstool.
97*9a0e4156SSadaf Ebrahimi- Add posibility to disable universal build for Mac OS.
98*9a0e4156SSadaf Ebrahimi- cstool: Separate instruction bytes by spaces.
99*9a0e4156SSadaf Ebrahimi- Fix code path of pkg-config in Cmake.
100*9a0e4156SSadaf Ebrahimi- Update XCode project for XCode 9.1.
101*9a0e4156SSadaf Ebrahimi- Add Cortex-M support to cstool.
102*9a0e4156SSadaf Ebrahimi- Cmake forces to be build using MT with MSVC.
103*9a0e4156SSadaf Ebrahimi- Better support for Mac OS kernel.
104*9a0e4156SSadaf Ebrahimi
105*9a0e4156SSadaf Ebrahimi
106*9a0e4156SSadaf Ebrahimi[ X86 ]
107*9a0e4156SSadaf Ebrahimi
108*9a0e4156SSadaf Ebrahimi- Fix some issues in handling EVEX & VEX3 instructions.
109*9a0e4156SSadaf Ebrahimi- Fix immediate operand for AND instruction in ATT mode.
110*9a0e4156SSadaf Ebrahimi- Fix ATT syntax when imm operand is 0.
111*9a0e4156SSadaf Ebrahimi- Better handle XACQUIRE/XRELEASE.
112*9a0e4156SSadaf Ebrahimi- Fix imm operand of RETF.
113*9a0e4156SSadaf Ebrahimi
114*9a0e4156SSadaf Ebrahimi
115*9a0e4156SSadaf Ebrahimi[ ARM ]
116*9a0e4156SSadaf Ebrahimi
117*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug.
118*9a0e4156SSadaf Ebrahimi
119*9a0e4156SSadaf Ebrahimi
120*9a0e4156SSadaf Ebrahimi[ ARM64 ]
121*9a0e4156SSadaf Ebrahimi
122*9a0e4156SSadaf Ebrahimi- Bug fix for incorrect operand type in certain load/store instructions.
123*9a0e4156SSadaf Ebrahimi
124*9a0e4156SSadaf Ebrahimi
125*9a0e4156SSadaf Ebrahimi[ Mips ]
126*9a0e4156SSadaf Ebrahimi
127*9a0e4156SSadaf Ebrahimi- Mode CS_MODE_MIPS32R6 automatically sets CS_MODE_32
128*9a0e4156SSadaf Ebrahimi
129*9a0e4156SSadaf Ebrahimi
130*9a0e4156SSadaf Ebrahimi[ PPC ]
131*9a0e4156SSadaf Ebrahimi
132*9a0e4156SSadaf Ebrahimi- Fix endian check.
133*9a0e4156SSadaf Ebrahimi
134*9a0e4156SSadaf Ebrahimi
135*9a0e4156SSadaf Ebrahimi[ Sparc ]
136*9a0e4156SSadaf Ebrahimi
137*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug.
138*9a0e4156SSadaf Ebrahimi
139*9a0e4156SSadaf Ebrahimi
140*9a0e4156SSadaf Ebrahimi[ SystemZ ]
141*9a0e4156SSadaf Ebrahimi
142*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug.
143*9a0e4156SSadaf Ebrahimi
144*9a0e4156SSadaf Ebrahimi
145*9a0e4156SSadaf Ebrahimi[ Python binding ]
146*9a0e4156SSadaf Ebrahimi
147*9a0e4156SSadaf Ebrahimi- Raise error on accessing irrelevant data fields if skipdata & detail modes are enable.
148*9a0e4156SSadaf Ebrahimi
149*9a0e4156SSadaf Ebrahimi
150*9a0e4156SSadaf Ebrahimi---------------------------------
151*9a0e4156SSadaf EbrahimiVersion 3.0.5-rc3: July 31st, 2017
152*9a0e4156SSadaf Ebrahimi
153*9a0e4156SSadaf Ebrahimi
154*9a0e4156SSadaf Ebrahimi[ Core ]
155*9a0e4156SSadaf Ebrahimi
156*9a0e4156SSadaf Ebrahimi- Fix compilation for MacOS kernel extension
157*9a0e4156SSadaf Ebrahimi- cstool to support armbe and arm64be modes
158*9a0e4156SSadaf Ebrahimi- Add nmake.bat for Windows build
159*9a0e4156SSadaf Ebrahimi- Fix an integer overflow for Windows kernel driver
160*9a0e4156SSadaf Ebrahimi- Support to embedded Capstone into MacOS kernel
161*9a0e4156SSadaf Ebrahimi- cstool: fix mips64 mode
162*9a0e4156SSadaf Ebrahimi- Fix a compiling error in MS Visual Studio 2015
163*9a0e4156SSadaf Ebrahimi- Install pkgconfig file with CMake build
164*9a0e4156SSadaf Ebrahimi- Fix SOVERSION property of CMake build
165*9a0e4156SSadaf Ebrahimi- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
166*9a0e4156SSadaf Ebrahimi- Fix MingW build
167*9a0e4156SSadaf Ebrahimi- Better handle CMake installation for Linux 64bit
168*9a0e4156SSadaf Ebrahimi
169*9a0e4156SSadaf Ebrahimi
170*9a0e4156SSadaf Ebrahimi[ X86 ]
171*9a0e4156SSadaf Ebrahimi
172*9a0e4156SSadaf Ebrahimi- Support BND prefix of Intel MPX extension
173*9a0e4156SSadaf Ebrahimi- Correct operand size for CALL/JMP in 64bit mode with prefix 0x66
174*9a0e4156SSadaf Ebrahimi- LOCK NOP is a valid instruction
175*9a0e4156SSadaf Ebrahimi- Fix ATT syntax for instruction with zero offset segment register
176*9a0e4156SSadaf Ebrahimi- LES/LDS are invalid in 64bit mode
177*9a0e4156SSadaf Ebrahimi- Fix number of operands for some MOV instructions
178*9a0e4156SSadaf Ebrahimi
179*9a0e4156SSadaf Ebrahimi
180*9a0e4156SSadaf Ebrahimi[ ARM ]
181*9a0e4156SSadaf Ebrahimi
182*9a0e4156SSadaf Ebrahimi- Fix POP reg to update SP register
183*9a0e4156SSadaf Ebrahimi- Update flags for UADD8 instruction
184*9a0e4156SSadaf Ebrahimi
185*9a0e4156SSadaf Ebrahimi
186*9a0e4156SSadaf Ebrahimi[ ARM64 ]
187*9a0e4156SSadaf Ebrahimi
188*9a0e4156SSadaf Ebrahimi- Better performance with new lookup table
189*9a0e4156SSadaf Ebrahimi- Handle system registers added in ARMv8.1/2
190*9a0e4156SSadaf Ebrahimi
191*9a0e4156SSadaf Ebrahimi
192*9a0e4156SSadaf Ebrahimi[ Java binding ]
193*9a0e4156SSadaf Ebrahimi
194*9a0e4156SSadaf Ebrahimi- Better handle input with invalid code
195*9a0e4156SSadaf Ebrahimi
196*9a0e4156SSadaf Ebrahimi
197*9a0e4156SSadaf Ebrahimi[ Visual Basic binding ]
198*9a0e4156SSadaf Ebrahimi
199*9a0e4156SSadaf Ebrahimi- New binding
200*9a0e4156SSadaf Ebrahimi
201*9a0e4156SSadaf Ebrahimi---------------------------------
202*9a0e4156SSadaf EbrahimiVersion 3.0.5-rc2: March 2nd, 2017
203*9a0e4156SSadaf Ebrahimi
204*9a0e4156SSadaf Ebrahimi
205*9a0e4156SSadaf Ebrahimi[ Core ]
206*9a0e4156SSadaf Ebrahimi
207*9a0e4156SSadaf Ebrahimi- Fix build for Visual Studio 2012
208*9a0e4156SSadaf Ebrahimi- Fix X86_REL_ADDR macro
209*9a0e4156SSadaf Ebrahimi- Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA
210*9a0e4156SSadaf Ebrahimi- Better support for embedding Capstone into Windows kernel drivers
211*9a0e4156SSadaf Ebrahimi- Support to embedded Capstone into MacOS kernel
212*9a0e4156SSadaf Ebrahimi- Support MacOS 10.11 and up
213*9a0e4156SSadaf Ebrahimi- Better support for Cygwin
214*9a0e4156SSadaf Ebrahimi- Support build packages for FreeBSD & DragonflyBSD
215*9a0e4156SSadaf Ebrahimi- Add a command-line tool "cstool"
216*9a0e4156SSadaf Ebrahimi- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
217*9a0e4156SSadaf Ebrahimi
218*9a0e4156SSadaf Ebrahimi
219*9a0e4156SSadaf Ebrahimi[ X86 ]
220*9a0e4156SSadaf Ebrahimi
221*9a0e4156SSadaf Ebrahimi- Some random 16-bit code can be handled wrongly.
222*9a0e4156SSadaf Ebrahimi- Remove abundant operand type X86_OP_FP
223*9a0e4156SSadaf Ebrahimi- Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL
224*9a0e4156SSadaf Ebrahimi- Add X86_REG_EFLAGS for STC and STD
225*9a0e4156SSadaf Ebrahimi- Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT
226*9a0e4156SSadaf Ebrahimi- Rename registers ST0-ST7 to be consistent with asm output
227*9a0e4156SSadaf Ebrahimi
228*9a0e4156SSadaf Ebrahimi
229*9a0e4156SSadaf Ebrahimi[ ARM ]
230*9a0e4156SSadaf Ebrahimi
231*9a0e4156SSadaf Ebrahimi- Properly handle IT instruction
232*9a0e4156SSadaf Ebrahimi- Fix LDRSB
233*9a0e4156SSadaf Ebrahimi- Fix writeback for LDR
234*9a0e4156SSadaf Ebrahimi- Fix Thumb BigEndian setup
235*9a0e4156SSadaf Ebrahimi
236*9a0e4156SSadaf Ebrahimi
237*9a0e4156SSadaf Ebrahimi[ ARM64 ]
238*9a0e4156SSadaf Ebrahimi
239*9a0e4156SSadaf Ebrahimi- Fix arith extender
240*9a0e4156SSadaf Ebrahimi- Fix writeback for LDR
241*9a0e4156SSadaf Ebrahimi- Rename enum arm64_mrs_reg to arm64_sysreg
242*9a0e4156SSadaf Ebrahimi
243*9a0e4156SSadaf Ebrahimi
244*9a0e4156SSadaf Ebrahimi[ PowerPC ]
245*9a0e4156SSadaf Ebrahimi
246*9a0e4156SSadaf Ebrahimi- Print 0 offset for memory operand
247*9a0e4156SSadaf Ebrahimi
248*9a0e4156SSadaf Ebrahimi
249*9a0e4156SSadaf Ebrahimi[ Sparc ]
250*9a0e4156SSadaf Ebrahimi
251*9a0e4156SSadaf Ebrahimi- Fix POPC instruction
252*9a0e4156SSadaf Ebrahimi
253*9a0e4156SSadaf Ebrahimi
254*9a0e4156SSadaf Ebrahimi[ Python binding ]
255*9a0e4156SSadaf Ebrahimi
256*9a0e4156SSadaf Ebrahimi- Better PyPy support
257*9a0e4156SSadaf Ebrahimi- Add __version__
258*9a0e4156SSadaf Ebrahimi- Better support for Python 3
259*9a0e4156SSadaf Ebrahimi- Fix CS_SKIPDATA_CALLBACK prototype
260*9a0e4156SSadaf Ebrahimi- Cast skipdata function inside binding to simplify the API
261*9a0e4156SSadaf Ebrahimi
262*9a0e4156SSadaf Ebrahimi
263*9a0e4156SSadaf Ebrahimi[ Java binding ]
264*9a0e4156SSadaf Ebrahimi
265*9a0e4156SSadaf Ebrahimi- Better handle input with invalid code
266*9a0e4156SSadaf Ebrahimi
267*9a0e4156SSadaf Ebrahimi
268*9a0e4156SSadaf Ebrahimi[ PowerShell ]
269*9a0e4156SSadaf Ebrahimi
270*9a0e4156SSadaf Ebrahimi- New binding
271*9a0e4156SSadaf Ebrahimi
272*9a0e4156SSadaf Ebrahimi---------------------------------
273*9a0e4156SSadaf EbrahimiVersion 3.0.4: July 15th, 2015
274*9a0e4156SSadaf Ebrahimi
275*9a0e4156SSadaf Ebrahimi
276*9a0e4156SSadaf Ebrahimi[ Library ]
277*9a0e4156SSadaf Ebrahimi
278*9a0e4156SSadaf Ebrahimi- Improve cross-compile for Android using Android NDK.
279*9a0e4156SSadaf Ebrahimi- Support cross-compile for AArch64 Android (with Linux GCC).
280*9a0e4156SSadaf Ebrahimi- Removed osxkernel_inttypes.h that is incompatible with BSD license.
281*9a0e4156SSadaf Ebrahimi- Make it possible to compile with CC having a space inside (like "ccache gcc").
282*9a0e4156SSadaf Ebrahimi
283*9a0e4156SSadaf Ebrahimi
284*9a0e4156SSadaf Ebrahimi[ X86 ]
285*9a0e4156SSadaf Ebrahimi
286*9a0e4156SSadaf Ebrahimi- Fix a null pointer dereference bug on handling code with special prefixes.
287*9a0e4156SSadaf Ebrahimi- Properly handle AL/AX/EAX operand for OUT instruction in AT&T syntax.
288*9a0e4156SSadaf Ebrahimi- Print immediate operand in positive form in some algorithm instructions.
289*9a0e4156SSadaf Ebrahimi- Properly decode some SSE instructions.
290*9a0e4156SSadaf Ebrahimi
291*9a0e4156SSadaf Ebrahimi
292*9a0e4156SSadaf Ebrahimi[ PowerPC ]
293*9a0e4156SSadaf Ebrahimi
294*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug.
295*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug for the engine built in DIET mode.
296*9a0e4156SSadaf Ebrahimi
297*9a0e4156SSadaf Ebrahimi
298*9a0e4156SSadaf Ebrahimi[ Mips ]
299*9a0e4156SSadaf Ebrahimi
300*9a0e4156SSadaf Ebrahimi- Fixed instruction ID of SUBU instruction.
301*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug.
302*9a0e4156SSadaf Ebrahimi
303*9a0e4156SSadaf Ebrahimi
304*9a0e4156SSadaf Ebrahimi[ Arm ]
305*9a0e4156SSadaf Ebrahimi
306*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug on IT instruction.
307*9a0e4156SSadaf Ebrahimi
308*9a0e4156SSadaf Ebrahimi
309*9a0e4156SSadaf Ebrahimi[ XCore ]
310*9a0e4156SSadaf Ebrahimi
311*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug when instruction has a memory operand.
312*9a0e4156SSadaf Ebrahimi
313*9a0e4156SSadaf Ebrahimi
314*9a0e4156SSadaf Ebrahimi[ Python ]
315*9a0e4156SSadaf Ebrahimi
316*9a0e4156SSadaf Ebrahimi- Support Virtualenv.
317*9a0e4156SSadaf Ebrahimi- setup.py supports option --user if not in a virtualenv to allow for local usage.
318*9a0e4156SSadaf Ebrahimi- Properly handle the destruction of Cs object in the case the shared library
319*9a0e4156SSadaf Ebrahimi  was already unloaded.
320*9a0e4156SSadaf Ebrahimi
321*9a0e4156SSadaf Ebrahimi---------------------------------
322*9a0e4156SSadaf EbrahimiVersion 3.0.3: May 08th, 2015
323*9a0e4156SSadaf Ebrahimi
324*9a0e4156SSadaf Ebrahimi
325*9a0e4156SSadaf Ebrahimi[ Library ]
326*9a0e4156SSadaf Ebrahimi
327*9a0e4156SSadaf Ebrahimi- Support to embed into Mac OS X kernel extensions.
328*9a0e4156SSadaf Ebrahimi- Now it is possible to compile Capstone with older C compilers, such as
329*9a0e4156SSadaf Ebrahimi  GCC 4.8 on Ubuntu 12.04.
330*9a0e4156SSadaf Ebrahimi- Add "test_iter" to MSVC project.
331*9a0e4156SSadaf Ebrahimi
332*9a0e4156SSadaf Ebrahimi
333*9a0e4156SSadaf Ebrahimi[ X86 ]
334*9a0e4156SSadaf Ebrahimi
335*9a0e4156SSadaf Ebrahimi- All shifted instructions SHL, SHR, SAL, SAR, RCL, RCR, ROL & ROR now support
336*9a0e4156SSadaf Ebrahimi  $1 as first operand in *AT&T* syntax (so we have "rcll $1, %edx" instead of
337*9a0e4156SSadaf Ebrahimi  "rcll %edx").
338*9a0e4156SSadaf Ebrahimi- CMPXCHG16B is a valid instruction with LOCK prefix.
339*9a0e4156SSadaf Ebrahimi- Fixed a segfault on the input of 0xF3.
340*9a0e4156SSadaf Ebrahimi
341*9a0e4156SSadaf Ebrahimi
342*9a0e4156SSadaf Ebrahimi[ Arm ]
343*9a0e4156SSadaf Ebrahimi
344*9a0e4156SSadaf Ebrahimi- BLX instruction modifies PC & LR registers.
345*9a0e4156SSadaf Ebrahimi
346*9a0e4156SSadaf Ebrahimi
347*9a0e4156SSadaf Ebrahimi[ Sparc ]
348*9a0e4156SSadaf Ebrahimi
349*9a0e4156SSadaf Ebrahimi- Improved displacement decoding for sparc banching instructions.
350*9a0e4156SSadaf Ebrahimi
351*9a0e4156SSadaf Ebrahimi
352*9a0e4156SSadaf Ebrahimi[ Python binding ]
353*9a0e4156SSadaf Ebrahimi
354*9a0e4156SSadaf Ebrahimi- Fix for Cython so it can properly initialize.
355*9a0e4156SSadaf Ebrahimi- X86Op.avx_zero_mask now has c_bool type, but not c_uint8 type.
356*9a0e4156SSadaf Ebrahimi- Properly support compile with Cygwin & install binding (setup.py).
357*9a0e4156SSadaf Ebrahimi
358*9a0e4156SSadaf Ebrahimi---------------------------------
359*9a0e4156SSadaf EbrahimiVersion 3.0.2: March 11th, 2015
360*9a0e4156SSadaf Ebrahimi
361*9a0e4156SSadaf Ebrahimi
362*9a0e4156SSadaf Ebrahimi[ Library ]
363*9a0e4156SSadaf Ebrahimi
364*9a0e4156SSadaf Ebrahimi- On *nix, only export symbols that are part of the API (instead of all
365*9a0e4156SSadaf Ebrahimi  the internal symbols).
366*9a0e4156SSadaf Ebrahimi
367*9a0e4156SSadaf Ebrahimi
368*9a0e4156SSadaf Ebrahimi[ X86 ]
369*9a0e4156SSadaf Ebrahimi
370*9a0e4156SSadaf Ebrahimi- Do not consider 0xF2 as REPNE prefix if it is a part of instruction encoding.
371*9a0e4156SSadaf Ebrahimi- Fix implicit registers read/written & instruction groups of some instructions.
372*9a0e4156SSadaf Ebrahimi- More flexible on the order of prefixes, so better handle some tricky
373*9a0e4156SSadaf Ebrahimi  instructions.
374*9a0e4156SSadaf Ebrahimi- REPNE prefix can go with STOS & MOVS instructions.
375*9a0e4156SSadaf Ebrahimi- Fix a compilation bug for X86_REDUCE mode.
376*9a0e4156SSadaf Ebrahimi- Fix operand size of instructions with operand PTR []
377*9a0e4156SSadaf Ebrahimi
378*9a0e4156SSadaf Ebrahimi
379*9a0e4156SSadaf Ebrahimi[ Arm ]
380*9a0e4156SSadaf Ebrahimi
381*9a0e4156SSadaf Ebrahimi- Fix a bug where arm_op_mem.disp is wrongly calculated (in DETAIL mode).
382*9a0e4156SSadaf Ebrahimi- Fix a bug on handling the If-Then block.
383*9a0e4156SSadaf Ebrahimi
384*9a0e4156SSadaf Ebrahimi
385*9a0e4156SSadaf Ebrahimi[ Mips ]
386*9a0e4156SSadaf Ebrahimi
387*9a0e4156SSadaf Ebrahimi- Sanity check for the input size for MIPS64 mode.
388*9a0e4156SSadaf Ebrahimi
389*9a0e4156SSadaf Ebrahimi
390*9a0e4156SSadaf Ebrahimi[ MSVC ]
391*9a0e4156SSadaf Ebrahimi
392*9a0e4156SSadaf Ebrahimi- Compile capstone.dll with static runtime MSVCR built in.
393*9a0e4156SSadaf Ebrahimi
394*9a0e4156SSadaf Ebrahimi
395*9a0e4156SSadaf Ebrahimi[ Python binding ]
396*9a0e4156SSadaf Ebrahimi
397*9a0e4156SSadaf Ebrahimi- Fix a compiling issue of Cython binding with gcc 4.9.
398*9a0e4156SSadaf Ebrahimi
399*9a0e4156SSadaf Ebrahimi---------------------------------
400*9a0e4156SSadaf EbrahimiVersion 3.0.1: February 03rd, 2015
401*9a0e4156SSadaf Ebrahimi
402*9a0e4156SSadaf Ebrahimi[ X86 ]
403*9a0e4156SSadaf Ebrahimi
404*9a0e4156SSadaf Ebrahimi- Properly handle LOCK, REP, REPE & REPNE prefixes.
405*9a0e4156SSadaf Ebrahimi- Handle undocumented immediates for SSE's (V)CMPPS/PD/SS/SD instructions.
406*9a0e4156SSadaf Ebrahimi- Print LJUMP/LCALL without * as prefix for Intel syntax.
407*9a0e4156SSadaf Ebrahimi- Handle REX prefix properly for segment/MMX related instructions (x86_64).
408*9a0e4156SSadaf Ebrahimi- Instruction with length > 15 is consider invalid.
409*9a0e4156SSadaf Ebrahimi- Handle some tricky encodings for instructions MOVSXD, FXCH, FCOM, FCOMP,
410*9a0e4156SSadaf Ebrahimi  FSTP, FSTPNCE, NOP.
411*9a0e4156SSadaf Ebrahimi- Handle some tricky code for some X86_64 instructions with REX prefix.
412*9a0e4156SSadaf Ebrahimi- Add missing operands in detail mode for PUSH , POP , IN/OUT reg, reg
413*9a0e4156SSadaf Ebrahimi- MOV32ms & MOV32sm should reference word rather than dword.
414*9a0e4156SSadaf Ebrahimi
415*9a0e4156SSadaf Ebrahimi
416*9a0e4156SSadaf Ebrahimi[ Arm64 ]
417*9a0e4156SSadaf Ebrahimi
418*9a0e4156SSadaf Ebrahimi- BL & BLR instructions do not read SP register.
419*9a0e4156SSadaf Ebrahimi- Print absolute (rather than relative) address for instructions B, BL,
420*9a0e4156SSadaf Ebrahimi  CBNZ, ADR.
421*9a0e4156SSadaf Ebrahimi
422*9a0e4156SSadaf Ebrahimi
423*9a0e4156SSadaf Ebrahimi[ Arm ]
424*9a0e4156SSadaf Ebrahimi
425*9a0e4156SSadaf Ebrahimi- Instructions ADC & SBC do not update flags.
426*9a0e4156SSadaf Ebrahimi- BL & BLX do not read SP, but PC register.
427*9a0e4156SSadaf Ebrahimi- Alias LDR instruction with operands [sp], 4 to POP.
428*9a0e4156SSadaf Ebrahimi- Print immediate operand of MVN instruction in positive hexadecimal form.
429*9a0e4156SSadaf Ebrahimi
430*9a0e4156SSadaf Ebrahimi
431*9a0e4156SSadaf Ebrahimi[ PowerPC ]
432*9a0e4156SSadaf Ebrahimi
433*9a0e4156SSadaf Ebrahimi- Fix some compilation bugs when DIET mode is enable.
434*9a0e4156SSadaf Ebrahimi- Populate SLWI/SRWI instruction details with SH operand.
435*9a0e4156SSadaf Ebrahimi
436*9a0e4156SSadaf Ebrahimi
437*9a0e4156SSadaf Ebrahimi[ Python binding ]
438*9a0e4156SSadaf Ebrahimi
439*9a0e4156SSadaf Ebrahimi- Fix a Cython bug when CsInsn.bytes returns a shorten array of bytes.
440*9a0e4156SSadaf Ebrahimi- Fixed a memory leak for Cython disasm functions when we immaturely quit
441*9a0e4156SSadaf Ebrahimi  the enumeration of disassembled instructions.
442*9a0e4156SSadaf Ebrahimi- Fix a NULL memory access issue when SKIPDATA & Detail modes are enable
443*9a0e4156SSadaf Ebrahimi  at the same time.
444*9a0e4156SSadaf Ebrahimi- Fix a memory leaking bug when when we stop enumeration over the disassembled
445*9a0e4156SSadaf Ebrahimi  instructions prematurely.
446*9a0e4156SSadaf Ebrahimi- Export generic operand types & groups (CS_OP_xxx & CS_GRP_xxx).
447*9a0e4156SSadaf Ebrahimi
448*9a0e4156SSadaf Ebrahimi---------------------------------
449*9a0e4156SSadaf EbrahimiVersion 3.0: November 19th, 2014
450*9a0e4156SSadaf Ebrahimi
451*9a0e4156SSadaf Ebrahimi[ API ]
452*9a0e4156SSadaf Ebrahimi
453*9a0e4156SSadaf Ebrahimi- New API: cs_disasm_iter & cs_malloc. See docs/README for tutorials.
454*9a0e4156SSadaf Ebrahimi- Renamed cs_disasm_ex to cs_disasm (cs_disasm_ex is still supported, but
455*9a0e4156SSadaf Ebrahimi  marked obsolete to be removed in future)
456*9a0e4156SSadaf Ebrahimi- Support SKIPDATA mode, so Capstone can jump over unknown data and keep going
457*9a0e4156SSadaf Ebrahimi  from the next legitimate instruction. See docs/README for tutorials.
458*9a0e4156SSadaf Ebrahimi- More details provided in cs_detail struct for all architectures.
459*9a0e4156SSadaf Ebrahimi- API version was bumped to 3.0.
460*9a0e4156SSadaf Ebrahimi
461*9a0e4156SSadaf Ebrahimi
462*9a0e4156SSadaf Ebrahimi[ Bindings ]
463*9a0e4156SSadaf Ebrahimi
464*9a0e4156SSadaf Ebrahimi- Python binding supports Python3 (besides Python2).
465*9a0e4156SSadaf Ebrahimi- Support Ocaml binding.
466*9a0e4156SSadaf Ebrahimi- Java: add close() method to be used to deinitialize a Capstone object when
467*9a0e4156SSadaf Ebrahimi  no longer use it.
468*9a0e4156SSadaf Ebrahimi
469*9a0e4156SSadaf Ebrahimi
470*9a0e4156SSadaf Ebrahimi[ Architectures ]
471*9a0e4156SSadaf Ebrahimi
472*9a0e4156SSadaf Ebrahimi- New architectures: Sparc, SystemZ & XCore.
473*9a0e4156SSadaf Ebrahimi- Important bugfixes for Arm, Arm64, Mips, PowerPC & X86.
474*9a0e4156SSadaf Ebrahimi- Support more instructions for Arm, Arm64, Mips, PowerPC & X86.
475*9a0e4156SSadaf Ebrahimi- Always expose absolute addresses rather than relative addresses (Arm, Arm64,
476*9a0e4156SSadaf Ebrahimi  Mips, PPC, Sparc, X86).
477*9a0e4156SSadaf Ebrahimi- Use common instruction operand types REG, IMM, MEM & FP across all
478*9a0e4156SSadaf Ebrahimi  architectures (to enable cross-architecture analysis).
479*9a0e4156SSadaf Ebrahimi- Use common instruction group types across all architectures (to enable
480*9a0e4156SSadaf Ebrahimi  cross-architecture analysis).
481*9a0e4156SSadaf Ebrahimi
482*9a0e4156SSadaf Ebrahimi
483*9a0e4156SSadaf Ebrahimi[ X86 ]
484*9a0e4156SSadaf Ebrahimi
485*9a0e4156SSadaf Ebrahimi- X86 engine is mature & handles all the malware tricks (that we are aware of).
486*9a0e4156SSadaf Ebrahimi- Added a lot of new instructions (such as AVX512, 3DNow, etc).
487*9a0e4156SSadaf Ebrahimi- Add prefix symbols X86_PREFIX_REP/REPNE/LOCK/CS/DS/SS/FS/GS/ES/OPSIZE/ADDRSIZE.
488*9a0e4156SSadaf Ebrahimi- Print immediate in positive form & hexadecimal for AND/OR/XOR instructions.
489*9a0e4156SSadaf Ebrahimi- More friendly disassembly for JMP16i (in the form segment:offset)
490*9a0e4156SSadaf Ebrahimi
491*9a0e4156SSadaf Ebrahimi
492*9a0e4156SSadaf Ebrahimi[ Mips ]
493*9a0e4156SSadaf Ebrahimi
494*9a0e4156SSadaf Ebrahimi- Engine added supports for new hardware modes: Mips32R6 (CS_MODE_MIPS32R6) &
495*9a0e4156SSadaf Ebrahimi  MipsGP64 (CS_MODE_MIPSGP64).
496*9a0e4156SSadaf Ebrahimi- Removed the ABI-only mode CS_MODE_N64.
497*9a0e4156SSadaf Ebrahimi- New modes CS_MODE_MIPS32 & CS_MODE_MIPS64 (to use instead of CS_MODE_32 &
498*9a0e4156SSadaf Ebrahimi  CS_MODE_64).
499*9a0e4156SSadaf Ebrahimi
500*9a0e4156SSadaf Ebrahimi
501*9a0e4156SSadaf Ebrahimi[ ARM ]
502*9a0e4156SSadaf Ebrahimi
503*9a0e4156SSadaf Ebrahimi- Support new mode CS_MODE_V8 for Armv8 A32 encodings.
504*9a0e4156SSadaf Ebrahimi- Print immediate in positive form & hexadecimal for AND/ORR/EOR/BIC instructions
505*9a0e4156SSadaf Ebrahimi
506*9a0e4156SSadaf Ebrahimi
507*9a0e4156SSadaf Ebrahimi[ ARM64 ]
508*9a0e4156SSadaf Ebrahimi
509*9a0e4156SSadaf Ebrahimi- Print immediate in hexadecimal for AND/ORR/EOR/TST instructions.
510*9a0e4156SSadaf Ebrahimi
511*9a0e4156SSadaf Ebrahimi
512*9a0e4156SSadaf Ebrahimi[ PowerPC ]
513*9a0e4156SSadaf Ebrahimi
514*9a0e4156SSadaf Ebrahimi- Do not print a dot in front of absolute address.
515*9a0e4156SSadaf Ebrahimi
516*9a0e4156SSadaf Ebrahimi
517*9a0e4156SSadaf Ebrahimi[ Other features ]
518*9a0e4156SSadaf Ebrahimi
519*9a0e4156SSadaf Ebrahimi- Support for Microsoft Visual Studio (so enable Windows native compilation).
520*9a0e4156SSadaf Ebrahimi- Support CMake compilation.
521*9a0e4156SSadaf Ebrahimi- Cross-compile for Android.
522*9a0e4156SSadaf Ebrahimi- Build libraries/tests using XCode project
523*9a0e4156SSadaf Ebrahimi- Much faster, while consuming less memory for all architectures.
524*9a0e4156SSadaf Ebrahimi
525*9a0e4156SSadaf Ebrahimi---------------------------------
526*9a0e4156SSadaf EbrahimiVersion 2.1.2: April 3rd, 2014
527*9a0e4156SSadaf Ebrahimi
528*9a0e4156SSadaf EbrahimiThis is a stable release to fix some bugs deep in the core. There is no update
529*9a0e4156SSadaf Ebrahimito any architectures or bindings, so bindings version 2.1 can be used with this
530*9a0e4156SSadaf Ebrahimiversion 2.1.2 just fine.
531*9a0e4156SSadaf Ebrahimi
532*9a0e4156SSadaf Ebrahimi[ Core changes]
533*9a0e4156SSadaf Ebrahimi
534*9a0e4156SSadaf Ebrahimi- Support cross-compilation for all iDevices (iPhone/iPad/iPod).
535*9a0e4156SSadaf Ebrahimi- X86: do not print memory offset in negative form.
536*9a0e4156SSadaf Ebrahimi- Fix a bug in X86 when Capstone cannot handle short instruction.
537*9a0e4156SSadaf Ebrahimi- Print negative number above -9 without prefix 0x (arm64, mips, arm).
538*9a0e4156SSadaf Ebrahimi- Correct the SONAME setup for library versioning (Linux, *BSD, Solaris).
539*9a0e4156SSadaf Ebrahimi- Set library versioning for dylib of OSX.
540*9a0e4156SSadaf Ebrahimi
541*9a0e4156SSadaf Ebrahimi---------------------------------
542*9a0e4156SSadaf EbrahimiVersion 2.1.1: March 13th, 2014
543*9a0e4156SSadaf Ebrahimi
544*9a0e4156SSadaf EbrahimiThis is a stable release to fix some bugs deep in the core. There is no update
545*9a0e4156SSadaf Ebrahimito any architectures or bindings, so bindings version 2.1 can be used with this
546*9a0e4156SSadaf Ebrahimiversion 2.1.1 just fine.
547*9a0e4156SSadaf Ebrahimi
548*9a0e4156SSadaf Ebrahimi[ Core changes]
549*9a0e4156SSadaf Ebrahimi
550*9a0e4156SSadaf Ebrahimi- Fix a buffer overflow bug in Thumb mode (ARM). Some special input can
551*9a0e4156SSadaf Ebrahimi  trigger this flaw.
552*9a0e4156SSadaf Ebrahimi- Fix a crash issue when embedding Capstone into OSX kernel. This should
553*9a0e4156SSadaf Ebrahimi  also enable Capstone to be embedded into other systems with limited stack
554*9a0e4156SSadaf Ebrahimi  memory size such as Linux kernel or some firmwares.
555*9a0e4156SSadaf Ebrahimi- Use a proper SONAME for library versioning (Linux).
556*9a0e4156SSadaf Ebrahimi
557*9a0e4156SSadaf Ebrahimi---------------------------------
558*9a0e4156SSadaf EbrahimiVersion 2.1: March 5th, 2014
559*9a0e4156SSadaf Ebrahimi
560*9a0e4156SSadaf Ebrahimi[ API changes ]
561*9a0e4156SSadaf Ebrahimi
562*9a0e4156SSadaf Ebrahimi- API version has been bumped to 2.1.
563*9a0e4156SSadaf Ebrahimi- Change prototype of cs_close() to be able to invalidate closed handle.
564*9a0e4156SSadaf Ebrahimi  See http://capstone-engine.org/version_2.1_API.html for more information.
565*9a0e4156SSadaf Ebrahimi- Extend cs_support() to handle more query types, not only about supported
566*9a0e4156SSadaf Ebrahimi  architectures. This change is backward compatible, however, so existent code
567*9a0e4156SSadaf Ebrahimi  do not need to be modified to support this.
568*9a0e4156SSadaf Ebrahimi- New query type CS_SUPPORT_DIET for cs_support() to ask about diet status of
569*9a0e4156SSadaf Ebrahimi  the engine.
570*9a0e4156SSadaf Ebrahimi- New error code CS_ERR_DIET to report errors about newly added diet mode.
571*9a0e4156SSadaf Ebrahimi- New error code CS_ERR_VERSION to report issue of incompatible versions between
572*9a0e4156SSadaf Ebrahimi  bindings & core engine.
573*9a0e4156SSadaf Ebrahimi
574*9a0e4156SSadaf Ebrahimi
575*9a0e4156SSadaf Ebrahimi[ Core changes ]
576*9a0e4156SSadaf Ebrahimi
577*9a0e4156SSadaf Ebrahimi- On memory usage, Capstone uses about 40% less memory, while still faster
578*9a0e4156SSadaf Ebrahimi  than version 2.0.
579*9a0e4156SSadaf Ebrahimi- All architectures are much smaller: binaries size reduce at least 30%.
580*9a0e4156SSadaf Ebrahimi  Especially, X86-only binary reduces from 1.9MB to just 720KB.
581*9a0e4156SSadaf Ebrahimi- Support "diet" mode, in which engine size is further reduced (by around 40%)
582*9a0e4156SSadaf Ebrahimi  for embedding purpose. The price to pay is that we have to sacrifice some
583*9a0e4156SSadaf Ebrahimi  non-critical data fields. See http://capstone-engine.org/diet.html for more
584*9a0e4156SSadaf Ebrahimi  details.
585*9a0e4156SSadaf Ebrahimi
586*9a0e4156SSadaf Ebrahimi
587*9a0e4156SSadaf Ebrahimi[ Architectures ]
588*9a0e4156SSadaf Ebrahimi
589*9a0e4156SSadaf Ebrahimi- Update all 5 architectures to fix bugs.
590*9a0e4156SSadaf Ebrahimi- PowerPC:
591*9a0e4156SSadaf Ebrahimi	- New instructions: FMR & MSYNC.
592*9a0e4156SSadaf Ebrahimi- Mips:
593*9a0e4156SSadaf Ebrahimi	- New instruction: DLSA
594*9a0e4156SSadaf Ebrahimi- X86:
595*9a0e4156SSadaf Ebrahimi	- Properly handle AVX-512 instructions.
596*9a0e4156SSadaf Ebrahimi	- New instructions: PSETPM, SALC, INT1, GETSEC.
597*9a0e4156SSadaf Ebrahimi	- Fix some memory leaking issues in case of prefixed instructions such
598*9a0e4156SSadaf Ebrahimi	  as LOCK, REP, REPNE.
599*9a0e4156SSadaf Ebrahimi
600*9a0e4156SSadaf Ebrahimi
601*9a0e4156SSadaf Ebrahimi[ Python binding ]
602*9a0e4156SSadaf Ebrahimi
603*9a0e4156SSadaf Ebrahimi- Verify the core version at initialization time. Refuse to run if its version
604*9a0e4156SSadaf Ebrahimi  is different from the core's version.
605*9a0e4156SSadaf Ebrahimi- New API disasm_lite() added to Cs class. This light API only returns tuples of
606*9a0e4156SSadaf Ebrahimi  (address, size, mnemonic, op_str), rather than list of CsInsn objects. This
607*9a0e4156SSadaf Ebrahimi  improves performance by around 30% in some benchmarks.
608*9a0e4156SSadaf Ebrahimi- New API version_bind() returns binding's version, which might differ from
609*9a0e4156SSadaf Ebrahimi  the core's API version if the binding is out-of-date.
610*9a0e4156SSadaf Ebrahimi- New API debug() returns information on Cython support, diet status & archs
611*9a0e4156SSadaf Ebrahimi  compiled in.
612*9a0e4156SSadaf Ebrahimi- Fixed some memory leaking bugs for Cython binding.
613*9a0e4156SSadaf Ebrahimi- Fix a bug crashing Cython code when accessing @regs_read/regs_write/groups.
614*9a0e4156SSadaf Ebrahimi- Support diet mode.
615*9a0e4156SSadaf Ebrahimi
616*9a0e4156SSadaf Ebrahimi
617*9a0e4156SSadaf Ebrahimi[ Java binding ]
618*9a0e4156SSadaf Ebrahimi
619*9a0e4156SSadaf Ebrahimi- Fix some memory leaking bugs.
620*9a0e4156SSadaf Ebrahimi- New API version() returns combined version.
621*9a0e4156SSadaf Ebrahimi- Support diet mode.
622*9a0e4156SSadaf Ebrahimi- Better support for detail option.
623*9a0e4156SSadaf Ebrahimi
624*9a0e4156SSadaf Ebrahimi
625*9a0e4156SSadaf Ebrahimi[ Miscellaneous ]
626*9a0e4156SSadaf Ebrahimi
627*9a0e4156SSadaf Ebrahimi- make.sh now can uninstall the core engine. This is done with:
628*9a0e4156SSadaf Ebrahimi
629*9a0e4156SSadaf Ebrahimi	$ sudo ./make.sh uninstall
630*9a0e4156SSadaf Ebrahimi
631*9a0e4156SSadaf Ebrahimi----------------------------------
632*9a0e4156SSadaf EbrahimiVersion 2.0: January 22nd, 2014
633*9a0e4156SSadaf Ebrahimi
634*9a0e4156SSadaf EbrahimiRelease 2.0 deprecates verison 1.0 and brings a lot of crucial changes.
635*9a0e4156SSadaf Ebrahimi
636*9a0e4156SSadaf Ebrahimi[ API changes ]
637*9a0e4156SSadaf Ebrahimi
638*9a0e4156SSadaf Ebrahimi- API version has been bumped to 2.0 (see cs_version() API)
639*9a0e4156SSadaf Ebrahimi- New API cs_strerror(errno) returns a string describing error code given
640*9a0e4156SSadaf Ebrahimi  in its only argument.
641*9a0e4156SSadaf Ebrahimi- cs_version() now returns combined version encoding both major & minor versions.
642*9a0e4156SSadaf Ebrahimi- New option CS_OPT_MODE allows to change engine’s mode at run-time with
643*9a0e4156SSadaf Ebrahimi  cs_option().
644*9a0e4156SSadaf Ebrahimi- New option CS_OPT_MEM allows to specify user-defined functions for dynamically
645*9a0e4156SSadaf Ebrahimi  memory management used internally by Capstone. This is useful to embed Capstone
646*9a0e4156SSadaf Ebrahimi  into special environments such as kernel or firware.
647*9a0e4156SSadaf Ebrahimi- New API cs_support() can be used to check if this lib supports a particular
648*9a0e4156SSadaf Ebrahimi  architecture (this is necessary since we now allow to choose which architectures
649*9a0e4156SSadaf Ebrahimi  to compile in).
650*9a0e4156SSadaf Ebrahimi- The detail option is OFF by default now. To get detail information, it should be
651*9a0e4156SSadaf Ebrahimi  explicitly turned ON. The details then can be accessed using cs_insn.detail
652*9a0e4156SSadaf Ebrahimi  pointer (to newly added structure cs_detail)
653*9a0e4156SSadaf Ebrahimi
654*9a0e4156SSadaf Ebrahimi
655*9a0e4156SSadaf Ebrahimi[ Core changes ]
656*9a0e4156SSadaf Ebrahimi
657*9a0e4156SSadaf Ebrahimi- On memory usage, Capstone uses much less memory, but a lot faster now.
658*9a0e4156SSadaf Ebrahimi- User now can choose which architectures to be supported by modifying config.mk
659*9a0e4156SSadaf Ebrahimi  before compiling/installing.
660*9a0e4156SSadaf Ebrahimi
661*9a0e4156SSadaf Ebrahimi
662*9a0e4156SSadaf Ebrahimi[ Architectures ]
663*9a0e4156SSadaf Ebrahimi
664*9a0e4156SSadaf Ebrahimi- Arm
665*9a0e4156SSadaf Ebrahimi     - Support Big-Endian mode (besides Little-Endian mode).
666*9a0e4156SSadaf Ebrahimi     - Support friendly register, so instead of output sub "r12,r11,0x14",
667*9a0e4156SSadaf Ebrahimi	 we have "sub ip,fp,0x14".
668*9a0e4156SSadaf Ebrahimi- Arm64: support Big-Endian mode (besides Little-Endian mode).
669*9a0e4156SSadaf Ebrahimi- PowerPC: newly added.
670*9a0e4156SSadaf Ebrahimi- Mips: support friendly register, so instead of output "srl $2,$1,0x1f",
671*9a0e4156SSadaf Ebrahimi     we have "srl $v0,$at,0x1f".
672*9a0e4156SSadaf Ebrahimi- X86: bug fixes.
673*9a0e4156SSadaf Ebrahimi
674*9a0e4156SSadaf Ebrahimi
675*9a0e4156SSadaf Ebrahimi[ Python binding ]
676*9a0e4156SSadaf Ebrahimi
677*9a0e4156SSadaf Ebrahimi- Python binding is vastly improved in performance: around 3 ~ 4 times faster
678*9a0e4156SSadaf Ebrahimi  than in 1.0.
679*9a0e4156SSadaf Ebrahimi- Cython support has been added, which can further speed up over the default
680*9a0e4156SSadaf Ebrahimi  pure Python binding (up to 30% in some cases)
681*9a0e4156SSadaf Ebrahimi- Function cs_disasm_quick() & Cs.disasm() now use generator (rather than a list)
682*9a0e4156SSadaf Ebrahimi  to return succesfully disassembled instructions. This improves the performance
683*9a0e4156SSadaf Ebrahimi  and reduces memory usage.
684*9a0e4156SSadaf Ebrahimi
685*9a0e4156SSadaf Ebrahimi
686*9a0e4156SSadaf Ebrahimi[ Java binding ]
687*9a0e4156SSadaf Ebrahimi
688*9a0e4156SSadaf Ebrahimi- Better performance & bug fixes.
689*9a0e4156SSadaf Ebrahimi
690*9a0e4156SSadaf Ebrahimi
691*9a0e4156SSadaf Ebrahimi[ Miscellaneous ]
692*9a0e4156SSadaf Ebrahimi
693*9a0e4156SSadaf Ebrahimi- Fixed some installation issues with Gentoo Linux.
694*9a0e4156SSadaf Ebrahimi- Capstone now can easily compile/install on all *nix, including Linux, OSX,
695*9a0e4156SSadaf Ebrahimi  {Net, Free, Open}BSD & Solaris.
696*9a0e4156SSadaf Ebrahimi
697*9a0e4156SSadaf Ebrahimi----------------------------------
698*9a0e4156SSadaf Ebrahimi[Version 1.0]: December 18th, 2013
699*9a0e4156SSadaf Ebrahimi
700*9a0e4156SSadaf Ebrahimi- Initial public release.
701*9a0e4156SSadaf Ebrahimi
702