capstone
/
ChangeLog
1030 строк · 30.8 Кб
1This file details the changelog of Capstone.
2
3-----------------------------
4Version 5.0.0: July 5th, 2023
5
6## What's Changed
7* [workflows] Remove deprecated image versions by @kabeor in https://github.com/capstone-engine/capstone/pull/2057
8* Fix capstone_test.c #2059 by @imbillow in https://github.com/capstone-engine/capstone/pull/2060
9* Support repz prefix on X86 ret instructions by @adamjseitz in https://github.com/capstone-engine/capstone/pull/2063
10* fix for msvc static lib, dll build error and warnings by @arkup in https://github.com/capstone-engine/capstone/pull/2061
11* use calloc for cs_insn instead of malloc by @ConnorRigby in https://github.com/capstone-engine/capstone/pull/1972
12* Fix access bug for TEST op by @melynx in https://github.com/capstone-engine/capstone/pull/1511
13* Update Cython bindings by @peace-maker in https://github.com/capstone-engine/capstone/pull/2068
14* Use Intel register syntax for Tricore by @XVilka in https://github.com/capstone-engine/capstone/pull/2067
15* Add `#` prefix to tricore imm operand by @imbillow in https://github.com/capstone-engine/capstone/pull/2070
16* Revert "Mark cs_* as thread local to avoid race condition in multithreads" by @oleavr in https://github.com/capstone-engine/capstone/pull/1933
17* Replace strncpy with memcpy to fix compiler warning. by @Rot127 in https://github.com/capstone-engine/capstone/pull/2075
18* Remove outdated and irrelevant TODO by @XVilka in https://github.com/capstone-engine/capstone/pull/2074
19
20## New Contributors
21* @arkup made their first contribution in https://github.com/capstone-engine/capstone/pull/2061
22* @ConnorRigby made their first contribution in https://github.com/capstone-engine/capstone/pull/1972
23* @melynx made their first contribution in https://github.com/capstone-engine/capstone/pull/1511
24
25
26---------------------------------
27Version 5.0.0-rc4: June 18th, 2023
28
29## What's Changed
30* Fix TriCore test by @hamarituc in https://github.com/capstone-engine/capstone/pull/2049
31* [workflows] Fix python-publish issue by @kabeor in https://github.com/capstone-engine/capstone/pull/2050
32* Update version tag by @kabeor in https://github.com/capstone-engine/capstone/pull/2052
33* Release 5.0-rc4 by @kabeor in https://github.com/capstone-engine/capstone/pull/2051
34
35---------------------------------
36Version 5.0.0-rc3: June 17th, 2023
37
38What's Changed:
39- update pkgconfig version by @kabeor in #1847
40- vb6 bindings: clarify license as Apache v2.0 by @dzzie in #1850
41- AArch64 SYS instruction operands by @adamjseitz in #1859
42- AArch64: fix missing VAS specifiers in aliased instructions by @adamjseitz in #1860
43- Add cstool in CMake Package Config + CMake Github Workflow by @theblackunknown in #1867
44- Fix pkgconfig not installed when CAPSTONE_BUILD_CSTOOL is false by @theblackunknown in #1870
45- AArch64 comprehensively add vas specifiers to aliased instructions by @adamjseitz in #1877
46- Fix pkg-config template by @hamarituc in #1878
47- Fix eBPF lddw opcode by @terorie in #1885
48- Add eBPF callx instruction by @terorie in #1886
49- Mark cs_* as thread local to avoid race condition in multithreads by @wtdcode in #1891
50- One semicolon is enough in C by @trufae in #1892
51- Add PowerPC paired-singles support by @terorie in #1898
52- Update the table for UD0 and UD1 with the latest llvm table by @junghee in #1863
53- Sync eBPF and PowerPC bindings by @terorie in #1900
54- Fix PPC insn names and psq displacement by @terorie in #1902
55- Fix -Werror build by @trufae in #1906
56- Remove outdated ctypes requirement by @jbott in #1910
57- Fix memory leak in testsuite by @hamarituc in #1919
58- PPC: fix out of bound memory access by @hamarituc in #1913
59- AArch64 armv9.2 update by @FinnWilkinson in #1907
60- m68k: Add support for the FNOP instruction by @huth in #1921
61- arm64: fix invalid free introduced in 662bb3f by @trufae in #1926
62- Fixed SME index alias printing issue. by @FinnWilkinson in #1925
63- Updated Arm64 python bindings after Armv9.2-a support. by @FinnWilkinson in #1932
64- ARM/AArch64: Add post-index to instruction info by @ZehMatt in #1937
65- Fix regressions in custom memory allocator support by @oleavr in #1934
66- cstool: support riscv compressed instruction disassemble by @rrwhx in #1940
67- Mention debug build option for cmake. by @Rot127 in #1942
68- cstool: avoid misaligned instructions in compressed riscv by @carenas in #1943
69- arm64: fix missing post_index by @HyperSine in #1944
70- Add CMAKE_EXPORT_COMPILE_COMMANDS to cmake build doc by @Rot127 in #1948
71- Fix potential array out of bounds by @mjunix in #1938
72- Add Renesas SuperH instructions support by @ysat0 in #1927
73- fix missing access field in arm64 java binding by @sunxingxing in #1959
74- Update python bindings to fix ARM in detail mode. by @wideglide in #1961
75- sh: add missing include for CMake install step by @SweetVishnya in #1964
76- Fix CITest && python binding issues by @kabeor in #1965
77- correct register accesses for ARM's sxtb/uxtb and similar instructions by @covanam in #1968
78- In x86: Fixed backward compatibility with C90 by @hasherezade in #1969
79- Fix for missing register usages on ARM64 authenticated branches (issue #1975) by - @stevielavern in #1976
80- AArch64: fixes register access flags for moves by @thomasdangl in #1974
81- [SH] Fix build warnings by @Rot127 in #1960
82- update CI ubuntu version by @kabeor in #1986
83- fix cstest Makefile by @imbillow in #1989
84- fix: compile error missing file cstool msvc/visual studio by @raigorx in #2000
85- Fix missing NOTRACK prefix by @junghee in #2002
86- Fix make builds with SH support by @trufae in #2006
87- Add missing architectures in the readme and sort them by @trufae in #2008
88- Add TriCore Architecture by @imbillow in #1973
89- Fix compilation warnings related to TriCore. by @imbillow in #2012
90- Fix SH build warnings. by @Rot127 in #2016
91- Tricore fix the negative call and jump by @imbillow in #2018
92- [SH] Fix warnings about unhandled switch cases by adding defaults. by @Rot127 in #2017
93- Tricore fix disp fill and ctest build by @imbillow in #2019
94- Fix disassemble of xor by @imbillow in #2023
95- Fix register accesses & operands of multiple ARMv8.3 PAC instructions by @stevielavern in - #2022
96- Add missing arm64 to Darwin LIBARCHS and remove dependencies tracking… by @gdbinit in #2024
97- Fix tricore compile warning by @imbillow in #2027
98- [PPC] Fix random branch hint and update_cr0 set up. by @Rot127 in #2028
99- Fix #2032 by @Rot127 in #2033
100- Add operands access support for TriCore by @imbillow in #2034
101- Hotfix for -DCAPSTONE_DIET build. by @Rot127 in #2038
102- Fix Python bindings after changes to cs_detail by @peace-maker in #2041
103- RISCV: Add call, int and branch_relative instruction groups by @peace-maker in #2007
104- Re-fix pkgconfig includedir/Cflags by @orlitzky in #2046
105
106New Contributors:
107- @adamjseitz made their first contribution in #1859
108- @theblackunknown made their first contribution in #1867
109- @hamarituc made their first contribution in #1878
110- @terorie made their first contribution in #1885
111- @junghee made their first contribution in #1863
112- @jbott made their first contribution in #1910
113- @FinnWilkinson made their first contribution in #1907
114- @huth made their first contribution in #1921
115- @ZehMatt made their first contribution in #1937
116- @rrwhx made their first contribution in #1940
117- @Rot127 made their first contribution in #1942
118- @HyperSine made their first contribution in #1944
119- @mjunix made their first contribution in #1938
120- @ysat0 made their first contribution in #1927
121- @sunxingxing made their first contribution in #1959
122- @wideglide made their first contribution in #1961
123- @SweetVishnya made their first contribution in #1964
124- @covanam made their first contribution in #1968
125- @thomasdangl made their first contribution in #1974
126- @imbillow made their first contribution in #1989
127- @raigorx made their first contribution in #2000
128- @peace-maker made their first contribution in #2041
129- @orlitzky made their first contribution in #2046
130
131
132---------------------------------
133Version 5.0.0-rc2: February 28th, 2022
134
135New features:
136- None
137
138Improvements:
139- Fix for python publish build (#1844)
140- Modernize CMake and switch to CMake 3.15 (#1841)
141- Fix AArch64 ldapr detailed information (#1840)
142- Fix incorrect MI->ac_idx leading to wrong AArch64 InsnOp access printing (#1845)
143
144Contributors:
145- stevielavern
146- mrexodia
147- kabeor
148
149---------------------------------
150Version 5.0.0-rc1: February 27th, 2022
151
152New features:
153- Add arch BPF (#1388)
154- Add arch RISCV (#1401)
155- Add arch WASM (#1359)
156- PyPI workflow (#1645)
157- Option to generate install target (#1698 #1700)
158- Swift binding (#1707)
159- Add CI Test support (#1797)
160- Add benchmark (#1811)
161
162Improvements:
163- Add fixups for aarch64 instructions (#1632 #1655)
164- Add fixups for x86 instructions (#1644 #1657 #1689 1751)
165- Add fixups for m68k instructions (#1663 #1709)
166- Add fixups for m680x instructions (#1695)
167- Add fixups for mips instructions (#1674)
168- Add fixups for mos65xx instructions (#1702)
169- Add fixups for systemz instructions (#1679)
170- Add fixups for risc-v instructions (#1682 #1690 #1691)
171- Add fixups for ppc instructions (#1687 #1688)
172- Add cmake config and export targets (#1637)
173- Fix issues in Makefiles (#1639)
174- Fix issues about cmake builds (#1649 #1659)
175- MSVC tooling updates (#1651)
176- Fix crash when using skipdata with NULL mnemonic(#1703)
177- Fix python only use ascii character (#1704)
178- Add support for aarch64 distributions (#1720)
179- Fix registry access for several versions of pop such as POPDS, POPSS, etc. (#1725)
180- Fix registry access on cmov instructions (#1727)
181- Fix -Wstringop-truncation warnings (#1730)
182- Fix always return the same type from regs_read (#1736)
183- Fix inconsistent behavior of Mips_option() (#1744)
184- Fix pythonic bug (#1745)
185- Fixes the (pip) Python Module build on FreeBSD (#1750)
186- Enable detection and build on all BSD systems (#1753)
187- Fix the displacement offset for moffset-encoded operands (#1754)
188- Update cmake_minimum_required to version 2.8.12 (#1756)
189- Fixed typos in compilation steps (#1762)
190- Fix build android (#1765)
191- Support disassembling bytes from memoryview (#1773)
192- Fixed library extension to build properly under CYGWIN (#1791)
193- Add Capstone Engine Documentation (#1794)
194- Fix eflags effects for adc/sbb (#1798)
195- Update x86 operand access information (#1801)
196- CI automatically build release tarball (#1802)
197- Don't format sstreams when there's nothing to format (#1805)
198- Fix warning about Unused variables (#1815)
199- Fix insn initialization when instruction have no operands or have a prefix (#1816)
200- Avoid abort() if x86 not supported (#1818)
201- Fix unterminated string regression (#1819)
202- Fixed incorrect operand access on x86 instruction vmovdqu (#1823)
203
204Contributors:
205- ekilmer
206- mcmtroffaes
207- sh1r4s3
208- emoon
209- chfl4gs
210- heshpdx
211- hmoenck
212- cyanpencil
213- NicolasDerumigny
214- trofi
215- maximumspatium
216- junchao-loongson
217- carenas
218- notyourusualaccountname
219- rth7680
220- StalkR
221- aeflores
222- TobiasFaller
223- XVilka
224- meme
225- zydeco
226- catenacyber
227- michalsc
228- urbas
229- keenk
230- kazarmy
231- learn-more
232- veritas501
233- trufae
234- cederom
235- Quentin01
236- jranieri-grammatech
237- scribam
238- huettenhain
239- LBJ-the-GOAT
240- wheremyfoodat
241- Jaysonicc
242- huettenhain
243- syscl
244- bezita
245- Smartsmurf
246- tmfink
247- kazarmy
248- rofl0r
249- bSr43
250- wtdcode
251- dropTableUsers42
252- carenas
253- owlxiao
254- Mxz297
255- SpikeI
256- catenacyber
257- david942j
258- fanfuqiang
259- aquynh
260- kabeor
261
262
263---------------------------------
264Version 4.0.2: May 8th, 2020
265
266[ Core ]
267
268- Windows kernel-mode driver support
269- Fix installation path on FreeBSD and DragonFly
270
271
272[ cstool ]
273
274- Add armv8, ppc32 & thumbv8 modes
275- Print instruction ID
276
277
278[ X86 ]
279
280- Support CS_OPT_UNSIGNED for ATT syntax
281- Fix operand size for some instructions
282- Fix LOCK prefixes
283- Recognize xacquire/xrelease prefix
284- Fix call/jmp access mode of mem operand
285- Add ENDBR32, ENDBR64 to reduce mode
286- Other minor fixes
287
288
289[ ARM64 ]
290
291- Support CS_OPT_UNSIGNED
292- Fix register access flags for memory instructions
293- Fix UMOV vess
294
295
296[ ARM ]
297
298- Update writeback for STR_POST_REG
299
300
301[ M68K ]
302
303- Store correct register value in op.reg_pair
304
305
306[ PowerPC ]
307
308- BDZLA is absolute branch
309
310
311[ SystemZ ]
312
313- Fix truncated 64bit imm operand
314- Fix base/index printing
315
316
317[ Python ]
318
319- Fix skipdata struct being destroyed
320- Add repr for capstone.CsInsn
321
322
323[ Java ]
324
325- Fix Java bindings to use pointers instead of longs
326
327
328[ Ocaml ]
329
330- Fix x86_op record
331
332
333---------------------------------
334Version 4.0.1: January 10th, 2019
335
336
337[ Core ]
338
339- Fix some issues for packaging (Debian, Gentoo).
340- Better support for building with Mingw.
341- cstool has new option -s to turn on skipdata mode.
342- cstool -v now report build settings of the core.
343- Add suite/capstone_get_setup.c so users can integrate with their own code
344to retrieve Capstone settings at build time.
345
346
347[ Arm ]
348
349- Fix 4.0 regression: the `tbh [r0, r1, lsl #1]` instruction sets the operand.shift.value back again (see #1317)
350- Remove ARM_REG_PC group for BX instruction.
351
352
353[ X86 ]
354
355- Fix: endbr32 and endbr64 instructions are now properly decoded in both CS_MODE_32 and CS_MODE_64 (#1129)
356
357
358[ M680X ]
359
360- Fix some issues reported by clang-analyzer (#1329).
361
362
363[ Python ]
364
365- Fix skipdata setup.
366- Add getter/setter for skipdata_mnem, skipdata_callback.
367
368
369---------------------------------
370Version 4.0: December 18th, 2018
371
372
373[ Core ]
374
375- New APIs: cs_regs_access()
376- Add new options for cs_option(): CS_OPT_MNEMONIC & CS_OPT_UNSIGNED & CS_OPT_SYNTAX_MASM.
377- Various updates & bugfixes for all architectures.
378- Add 4 new architectures: EVM, M68K, M680X & TMS320C64x.
379- Add new group types: CS_GRP_PRIVILEGE & CS_GRP_BRANCH_RELATIVE.
380- Add new error types: CS_ERR_X86_MASM.
381
382
383[ X86 ]
384
385- Add XOP code condition type in x86_xop_cc.
386- Add some info on encoding to cs_x86 in cs_x86_encoding.
387- Add register flags update in cs_x86.{eflags, fpu_flags}
388- Change cs_x86.disp type from int32_t to int64_t.
389- Add new groups: X86_GRP_VM & X86_GRP_FPU.
390- Lots of new instructions (AVX)
391
392
393[ ARM64 ]
394
395- Add instruction ARM64_INS_NEGS & ARM64_INS_NGCS.
396
397
398[ Mips ]
399
400- Add mode CS_MODE_MIPS2.
401
402
403[ PPC ]
404
405- Change cs_ppc_op.imm type from int32_t to int64_t.
406- Add new groups: PPC_GRP_ICBT, PPC_GRP_P8ALTIVEC, PPC_GRP_P8VECTOR & PPC_GRP_QPX.
407- Lots of new instructions (QPX among them)
408
409
410[ Sparc ]
411
412- Change cs_sparc_op.imm type from int32_t to int64_t.
413
414
415[ Binding ]
416
417- New bindings: PowerShell & VB6
418
419
420---------------------------------
421Version 3.0.5: July 18th, 2018
422
423
424[ Core ]
425
426- Fix the include path for Android builds when building cstool.
427- Add possibility to disable universal build for Mac OS.
428- cstool: Separate instruction bytes by spaces.
429- Fix code path of pkg-config in Cmake.
430- Update XCode project for XCode 9.1.
431- Add Cortex-M support to cstool.
432- Cmake forces to be build using MT with MSVC.
433- Better support for Mac OS kernel.
434
435
436[ X86 ]
437
438- Fix some issues in handling EVEX & VEX3 instructions.
439- Fix immediate operand for AND instruction in ATT mode.
440- Fix ATT syntax when imm operand is 0.
441- Better handle XACQUIRE/XRELEASE.
442- Fix imm operand of RETF.
443
444
445[ ARM ]
446
447- Fix an integer overflow bug.
448
449
450[ ARM64 ]
451
452- Bug fix for incorrect operand type in certain load/store instructions.
453
454
455[ Mips ]
456
457- Mode CS_MODE_MIPS32R6 automatically sets CS_MODE_32
458
459
460[ PPC ]
461
462- Fix endian check.
463
464
465[ Sparc ]
466
467- Fix an integer overflow bug.
468
469
470[ SystemZ ]
471
472- Fix an integer overflow bug.
473
474
475[ Python binding ]
476
477- Raise error on accessing irrelevant data fields if skipdata & detail modes are enable.
478
479
480---------------------------------
481Version 3.0.5-rc3: July 31st, 2017
482
483
484[ Core ]
485
486- Fix compilation for MacOS kernel extension
487- cstool to support armbe and arm64be modes
488- Add nmake.bat for Windows build
489- Fix an integer overflow for Windows kernel driver
490- Support to embedded Capstone into MacOS kernel
491- cstool: fix mips64 mode
492- Fix a compiling error in MS Visual Studio 2015
493- Install pkgconfig file with CMake build
494- Fix SOVERSION property of CMake build
495- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
496- Fix MingW build
497- Better handle CMake installation for Linux 64bit
498
499
500[ X86 ]
501
502- Support BND prefix of Intel MPX extension
503- Correct operand size for CALL/JMP in 64bit mode with prefix 0x66
504- LOCK NOP is a valid instruction
505- Fix ATT syntax for instruction with zero offset segment register
506- LES/LDS are invalid in 64bit mode
507- Fix number of operands for some MOV instructions
508
509
510[ ARM ]
511
512- Fix POP reg to update SP register
513- Update flags for UADD8 instruction
514
515
516[ ARM64 ]
517
518- Better performance with new lookup table
519- Handle system registers added in ARMv8.1/2
520
521
522[ Java binding ]
523
524- Better handle input with invalid code
525
526
527[ Visual Basic binding ]
528
529- New binding
530
531---------------------------------
532Version 3.0.5-rc2: March 2nd, 2017
533
534
535[ Core ]
536
537- Fix build for Visual Studio 2012
538- Fix X86_REL_ADDR macro
539- Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA
540- Better support for embedding Capstone into Windows kernel drivers
541- Support to embedded Capstone into MacOS kernel
542- Support MacOS 10.11 and up
543- Better support for Cygwin
544- Support build packages for FreeBSD & DragonflyBSD
545- Add a command-line tool "cstool"
546- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc
547
548
549[ X86 ]
550
551- Some random 16-bit code can be handled wrongly.
552- Remove abundant operand type X86_OP_FP
553- Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL
554- Add X86_REG_EFLAGS for STC and STD
555- Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT
556- Rename registers ST0-ST7 to be consistent with asm output
557
558
559[ ARM ]
560
561- Properly handle IT instruction
562- Fix LDRSB
563- Fix writeback for LDR
564- Fix Thumb BigEndian setup
565
566
567[ ARM64 ]
568
569- Fix arith extender
570- Fix writeback for LDR
571- Rename enum arm64_mrs_reg to arm64_sysreg
572
573
574[ PowerPC ]
575
576- Print 0 offset for memory operand
577
578
579[ Sparc ]
580
581- Fix POPC instruction
582
583
584[ Python binding ]
585
586- Better PyPy support
587- Add __version__
588- Better support for Python 3
589- Fix CS_SKIPDATA_CALLBACK prototype
590- Cast skipdata function inside binding to simplify the API
591
592
593[ Java binding ]
594
595- Better handle input with invalid code
596
597
598[ PowerShell ]
599
600- New binding
601
602---------------------------------
603Version 3.0.4: July 15th, 2015
604
605
606[ Library ]
607
608- Improve cross-compile for Android using Android NDK.
609- Support cross-compile for AArch64 Android (with Linux GCC).
610- Removed osxkernel_inttypes.h that is incompatible with BSD license.
611- Make it possible to compile with CC having a space inside (like "ccache gcc").
612
613
614[ X86 ]
615
616- Fix a null pointer dereference bug on handling code with special prefixes.
617- Properly handle AL/AX/EAX operand for OUT instruction in AT&T syntax.
618- Print immediate operand in positive form in some algorithm instructions.
619- Properly decode some SSE instructions.
620
621
622[ PowerPC ]
623
624- Fixed a memory corruption bug.
625- Fixed a memory corruption bug for the engine built in DIET mode.
626
627
628[ Mips ]
629
630- Fixed instruction ID of SUBU instruction.
631- Fixed a memory corruption bug.
632
633
634[ Arm ]
635
636- Fixed a memory corruption bug on IT instruction.
637
638
639[ XCore ]
640
641- Fixed a memory corruption bug when instruction has a memory operand.
642
643
644[ Python ]
645
646- Support Virtualenv.
647- setup.py supports option --user if not in a virtualenv to allow for local usage.
648- Properly handle the destruction of Cs object in the case the shared library
649was already unloaded.
650
651---------------------------------
652Version 3.0.3: May 08th, 2015
653
654
655[ Library ]
656
657- Support to embed into Mac OS X kernel extensions.
658- Now it is possible to compile Capstone with older C compilers, such as
659GCC 4.8 on Ubuntu 12.04.
660- Add "test_iter" to MSVC project.
661
662
663[ X86 ]
664
665- All shifted instructions SHL, SHR, SAL, SAR, RCL, RCR, ROL & ROR now support
666$1 as first operand in *AT&T* syntax (so we have "rcll $1, %edx" instead of
667"rcll %edx").
668- CMPXCHG16B is a valid instruction with LOCK prefix.
669- Fixed a segfault on the input of 0xF3.
670
671
672[ Arm ]
673
674- BLX instruction modifies PC & LR registers.
675
676
677[ Sparc ]
678
679- Improved displacement decoding for sparc banching instructions.
680
681
682[ Python binding ]
683
684- Fix for Cython so it can properly initialize.
685- X86Op.avx_zero_mask now has c_bool type, but not c_uint8 type.
686- Properly support compile with Cygwin & install binding (setup.py).
687
688---------------------------------
689Version 3.0.2: March 11th, 2015
690
691
692[ Library ]
693
694- On *nix, only export symbols that are part of the API (instead of all
695the internal symbols).
696
697
698[ X86 ]
699
700- Do not consider 0xF2 as REPNE prefix if it is a part of instruction encoding.
701- Fix implicit registers read/written & instruction groups of some instructions.
702- More flexible on the order of prefixes, so better handle some tricky
703instructions.
704- REPNE prefix can go with STOS & MOVS instructions.
705- Fix a compilation bug for X86_REDUCE mode.
706- Fix operand size of instructions with operand PTR []
707
708
709[ Arm ]
710
711- Fix a bug where arm_op_mem.disp is wrongly calculated (in DETAIL mode).
712- Fix a bug on handling the If-Then block.
713
714
715[ Mips ]
716
717- Sanity check for the input size for MIPS64 mode.
718
719
720[ MSVC ]
721
722- Compile capstone.dll with static runtime MSVCR built in.
723
724
725[ Python binding ]
726
727- Fix a compiling issue of Cython binding with gcc 4.9.
728
729---------------------------------
730Version 3.0.1: February 03rd, 2015
731
732[ X86 ]
733
734- Properly handle LOCK, REP, REPE & REPNE prefixes.
735- Handle undocumented immediates for SSE's (V)CMPPS/PD/SS/SD instructions.
736- Print LJUMP/LCALL without * as prefix for Intel syntax.
737- Handle REX prefix properly for segment/MMX related instructions (x86_64).
738- Instruction with length > 15 is consider invalid.
739- Handle some tricky encodings for instructions MOVSXD, FXCH, FCOM, FCOMP,
740FSTP, FSTPNCE, NOP.
741- Handle some tricky code for some X86_64 instructions with REX prefix.
742- Add missing operands in detail mode for PUSH , POP , IN/OUT reg, reg
743- MOV32ms & MOV32sm should reference word rather than dword.
744
745
746[ Arm64 ]
747
748- BL & BLR instructions do not read SP register.
749- Print absolute (rather than relative) address for instructions B, BL,
750CBNZ, ADR.
751
752
753[ Arm ]
754
755- Instructions ADC & SBC do not update flags.
756- BL & BLX do not read SP, but PC register.
757- Alias LDR instruction with operands [sp], 4 to POP.
758- Print immediate operand of MVN instruction in positive hexadecimal form.
759
760
761[ PowerPC ]
762
763- Fix some compilation bugs when DIET mode is enable.
764- Populate SLWI/SRWI instruction details with SH operand.
765
766
767[ Python binding ]
768
769- Fix a Cython bug when CsInsn.bytes returns a shorten array of bytes.
770- Fixed a memory leak for Cython disasm functions when we immaturely quit
771the enumeration of disassembled instructions.
772- Fix a NULL memory access issue when SKIPDATA & Detail modes are enable
773at the same time.
774- Fix a memory leaking bug when we stop enumeration over the disassembled
775instructions prematurely.
776- Export generic operand types & groups (CS_OP_xxx & CS_GRP_xxx).
777
778---------------------------------
779Version 3.0: November 19th, 2014
780
781[ API ]
782
783- New API: cs_disasm_iter & cs_malloc. See docs/README for tutorials.
784- Renamed cs_disasm_ex to cs_disasm (cs_disasm_ex is still supported, but
785marked obsolete to be removed in future)
786- Support SKIPDATA mode, so Capstone can jump over unknown data and keep going
787from the next legitimate instruction. See docs/README for tutorials.
788- More details provided in cs_detail struct for all architectures.
789- API version was bumped to 3.0.
790
791
792[ Bindings ]
793
794- Python binding supports Python3 (besides Python2).
795- Support Ocaml binding.
796- Java: add close() method to be used to deinitialize a Capstone object when
797no longer use it.
798
799
800[ Architectures ]
801
802- New architectures: Sparc, SystemZ & XCore.
803- Important bugfixes for Arm, Arm64, Mips, PowerPC & X86.
804- Support more instructions for Arm, Arm64, Mips, PowerPC & X86.
805- Always expose absolute addresses rather than relative addresses (Arm, Arm64,
806Mips, PPC, Sparc, X86).
807- Use common instruction operand types REG, IMM, MEM & FP across all
808architectures (to enable cross-architecture analysis).
809- Use common instruction group types across all architectures (to enable
810cross-architecture analysis).
811
812
813[ X86 ]
814
815- X86 engine is mature & handles all the malware tricks (that we are aware of).
816- Added a lot of new instructions (such as AVX512, 3DNow, etc).
817- Add prefix symbols X86_PREFIX_REP/REPNE/LOCK/CS/DS/SS/FS/GS/ES/OPSIZE/ADDRSIZE.
818- Print immediate in positive form & hexadecimal for AND/OR/XOR instructions.
819- More friendly disassembly for JMP16i (in the form segment:offset)
820
821
822[ Mips ]
823
824- Engine added supports for new hardware modes: Mips32R6 (CS_MODE_MIPS32R6) &
825MipsGP64 (CS_MODE_MIPSGP64).
826- Removed the ABI-only mode CS_MODE_N64.
827- New modes CS_MODE_MIPS32 & CS_MODE_MIPS64 (to use instead of CS_MODE_32 &
828CS_MODE_64).
829
830
831[ ARM ]
832
833- Support new mode CS_MODE_V8 for Armv8 A32 encodings.
834- Print immediate in positive form & hexadecimal for AND/ORR/EOR/BIC instructions
835
836
837[ ARM64 ]
838
839- Print immediate in hexadecimal for AND/ORR/EOR/TST instructions.
840
841
842[ PowerPC ]
843
844- Do not print a dot in front of absolute address.
845
846
847[ Other features ]
848
849- Support for Microsoft Visual Studio (so enable Windows native compilation).
850- Support CMake compilation.
851- Cross-compile for Android.
852- Build libraries/tests using XCode project
853- Much faster, while consuming less memory for all architectures.
854
855---------------------------------
856Version 2.1.2: April 3rd, 2014
857
858This is a stable release to fix some bugs deep in the core. There is no update
859to any architectures or bindings, so bindings version 2.1 can be used with this
860version 2.1.2 just fine.
861
862[ Core changes]
863
864- Support cross-compilation for all iDevices (iPhone/iPad/iPod).
865- X86: do not print memory offset in negative form.
866- Fix a bug in X86 when Capstone cannot handle short instruction.
867- Print negative number above -9 without prefix 0x (arm64, mips, arm).
868- Correct the SONAME setup for library versioning (Linux, *BSD, Solaris).
869- Set library versioning for dylib of OSX.
870
871---------------------------------
872Version 2.1.1: March 13th, 2014
873
874This is a stable release to fix some bugs deep in the core. There is no update
875to any architectures or bindings, so bindings version 2.1 can be used with this
876version 2.1.1 just fine.
877
878[ Core changes]
879
880- Fix a buffer overflow bug in Thumb mode (ARM). Some special input can
881trigger this flaw.
882- Fix a crash issue when embedding Capstone into OSX kernel. This should
883also enable Capstone to be embedded into other systems with limited stack
884memory size such as Linux kernel or some firmwares.
885- Use a proper SONAME for library versioning (Linux).
886
887---------------------------------
888Version 2.1: March 5th, 2014
889
890[ API changes ]
891
892- API version has been bumped to 2.1.
893- Change prototype of cs_close() to be able to invalidate closed handle.
894See http://capstone-engine.org/version_2.1_API.html for more information.
895- Extend cs_support() to handle more query types, not only about supported
896architectures. This change is backward compatible, however, so existent code
897do not need to be modified to support this.
898- New query type CS_SUPPORT_DIET for cs_support() to ask about diet status of
899the engine.
900- New error code CS_ERR_DIET to report errors about newly added diet mode.
901- New error code CS_ERR_VERSION to report issue of incompatible versions between
902bindings & core engine.
903
904
905[ Core changes ]
906
907- On memory usage, Capstone uses about 40% less memory, while still faster
908than version 2.0.
909- All architectures are much smaller: binaries size reduce at least 30%.
910Especially, X86-only binary reduces from 1.9MB to just 720KB.
911- Support "diet" mode, in which engine size is further reduced (by around 40%)
912for embedding purpose. The price to pay is that we have to sacrifice some
913non-critical data fields. See http://capstone-engine.org/diet.html for more
914details.
915
916
917[ Architectures ]
918
919- Update all 5 architectures to fix bugs.
920- PowerPC:
921- New instructions: FMR & MSYNC.
922- Mips:
923- New instruction: DLSA
924- X86:
925- Properly handle AVX-512 instructions.
926- New instructions: PSETPM, SALC, INT1, GETSEC.
927- Fix some memory leaking issues in case of prefixed instructions such
928as LOCK, REP, REPNE.
929
930
931[ Python binding ]
932
933- Verify the core version at initialization time. Refuse to run if its version
934is different from the core's version.
935- New API disasm_lite() added to Cs class. This light API only returns tuples of
936(address, size, mnemonic, op_str), rather than list of CsInsn objects. This
937improves performance by around 30% in some benchmarks.
938- New API version_bind() returns binding's version, which might differ from
939the core's API version if the binding is out-of-date.
940- New API debug() returns information on Cython support, diet status & archs
941compiled in.
942- Fixed some memory leaking bugs for Cython binding.
943- Fix a bug crashing Cython code when accessing @regs_read/regs_write/groups.
944- Support diet mode.
945
946
947[ Java binding ]
948
949- Fix some memory leaking bugs.
950- New API version() returns combined version.
951- Support diet mode.
952- Better support for detail option.
953
954
955[ Miscellaneous ]
956
957- make.sh now can uninstall the core engine. This is done with:
958
959$ sudo ./make.sh uninstall
960
961----------------------------------
962Version 2.0: January 22nd, 2014
963
964Release 2.0 deprecates version 1.0 and brings a lot of crucial changes.
965
966[ API changes ]
967
968- API version has been bumped to 2.0 (see cs_version() API)
969- New API cs_strerror(errno) returns a string describing error code given
970in its only argument.
971- cs_version() now returns combined version encoding both major & minor versions.
972- New option CS_OPT_MODE allows to change engine’s mode at run-time with
973cs_option().
974- New option CS_OPT_MEM allows to specify user-defined functions for dynamically
975memory management used internally by Capstone. This is useful to embed Capstone
976into special environments such as kernel or firmware.
977- New API cs_support() can be used to check if this lib supports a particular
978architecture (this is necessary since we now allow to choose which architectures
979to compile in).
980- The detail option is OFF by default now. To get detail information, it should be
981explicitly turned ON. The details then can be accessed using cs_insn.detail
982pointer (to newly added structure cs_detail)
983
984
985[ Core changes ]
986
987- On memory usage, Capstone uses much less memory, but a lot faster now.
988- User now can choose which architectures to be supported by modifying config.mk
989before compiling/installing.
990
991
992[ Architectures ]
993
994- Arm
995- Support Big-Endian mode (besides Little-Endian mode).
996- Support friendly register, so instead of output sub "r12,r11,0x14",
997we have "sub ip,fp,0x14".
998- Arm64: support Big-Endian mode (besides Little-Endian mode).
999- PowerPC: newly added.
1000- Mips: support friendly register, so instead of output "srl $2,$1,0x1f",
1001we have "srl $v0,$at,0x1f".
1002- X86: bug fixes.
1003
1004
1005[ Python binding ]
1006
1007- Python binding is vastly improved in performance: around 3 ~ 4 times faster
1008than in 1.0.
1009- Cython support has been added, which can further speed up over the default
1010pure Python binding (up to 30% in some cases)
1011- Function cs_disasm_quick() & Cs.disasm() now use generator (rather than a list)
1012to return successfully disassembled instructions. This improves the performance
1013and reduces memory usage.
1014
1015
1016[ Java binding ]
1017
1018- Better performance & bug fixes.
1019
1020
1021[ Miscellaneous ]
1022
1023- Fixed some installation issues with Gentoo Linux.
1024- Capstone now can easily compile/install on all *nix, including Linux, OSX,
1025{Net, Free, Open}BSD & Solaris.
1026
1027----------------------------------
1028[Version 1.0]: December 18th, 2013
1029
1030- Initial public release.
1031
1032