Go to file
Wu ChenXu 66b08439ab
Update to Version 6.0.0-Alpha2 (#2554)
* Update changelog for V6.0.0-Alpha1 (#2493)

* update version to v6-alpha1

* update bindings const values

* Update changelog for V6.0.0-Alpha1

* Remove irrelevant changes. (#2495)

* Fixing UB santizer, `LITBASE` and assert errors. (#2499)

* Update labeler with Xtensa and v6 files. (#2500)

* Add hard asserts to all SStream functions and memset MCInst. (#2501)

* Only trigger on released action. (#2497)

* Fix cstest build with Ninja (#2506)

* Tricore EA calculation (#2504)

* Update libcyaml dependency in cstest to 1.4.2 (#2508)

* AArch64: Replace vararg add_cs_detail by multiple concrete functions

Fixes UB caused by various mismatches on how these arguments are passed
and read. This became visible when running on PowerPC hosts with e.g.
`cstool -d aarch64 204862f8`.
Apart from the UB fix, this is meant to be a pure refactor.

Partially addresses #2458

* xtensa: Fix Branch Target (#2516)

* xtensa: Fix Branch Target

* auto-sync: fix byte pattern

* xtensa: add branch insn tests

* Revert "auto-sync: fix byte pattern"

This reverts commit cf8e870f776889514b69a2f25a376f62ab2b291c.

* Fix #2509. (#2510)

Compatibility headers should always include the header in the same dir.

* Fix stringop-truncation warning some compilers raise. (#2522)

* Add CC and VAS compatibility macros (#2525)

* Fix endianess issue during assignment. (#2528)

* This time actually fix big endian issue. (#2530)

* tricore: fixes #2474 (#2523)

* tricore: fix auto-sync tricore

* tricore: fixes TriCoreGenCSMappingInsnName.inc

* tricore: fixes

* tricore: try fix ld.a SC

* tricore: fixes all

* Add TriCore to .github/workflows/auto-sync.yaml

* Add TriCore details tests(a15, d15, a10|sp)

* Change CI to create Debian Package to Release (#2521)

* Updating CI to create Debian package and version is assigned by tag
version. Also updating release CI to not use end-of-life workflows

* Clear up usage of static libraries.

- Python bindings only use the dynamic lib. But built and copied the static ones sometimes nonetheless.
- Add toggles to build only static, static/dyn or only dynamic.

---------

Co-authored-by: Rot127 <unisono@quyllur.org>

* Rename build arguments: (#2534)

- BUILD_SHARED_LIBS -> CAPSTONE_BUILD_SHARED_LIBS
- BUILD_STATIC_LIBS -> CAPSTONE_BUILD_STATIC_LIBS
- BUILD_STATIC_LIBS -> CAPSTONE_BUILD_STATIC_MSVC_RUNTIME

* xtensa: update to espressif/llvm-project (#2533)

* fix coverity (#2546)

- cid 514642

- cid 514643

- cid 514644

- cid 514645

* Move debian package generation to a dispatch only workflow (#2543)

* Move deb package gen files int package/deb

* Fix basename check

* Make debian package generation dispatch only

* Python package building rework (#2538)

* - Refactored setup.py to remove hacks regarding packaging of wheels for different platforms, improve and cleanup the code
- Updated README.txt
- Removed old Makefile and build_wheel.sh scripts
- Created a new workflow that takes care of building and testing python packages for different platforms/architectures/python versions

* Added SPDX headers to the setup.py

* - cstest_py: Fixed positional argument since it doesn't accept a `required` flag. It turns to have a mandatory tests folder path
- integration_tests.py: Use pathlib to determine the required path
- GitHub action: Simplified the tests execution command

* GitHub Actions: Run python 3.8 (lowest) and 3.13 (current highest) for native runners only during testings and the rest during tag release

* GitHub Action:
- Fixed the cibw_build matrix element
- Added a step to prepare artifact name

* GitHub Action: Added run_tests.py script to run all tests during CI workflow

* - Added SPDX headers to the run_tests.py script and to the build-wheels-publish.yml workflow file
- Minor fixes to the workflow as pointed out in the PR review
- Updated MANIFEST.in to reflect the actual libraries built during python wheel creation process
- Use subprocess.run in place of os.system in run_tests.py script

* GitHub Action:
- Run qemu step only if non-native Linux runner
- Added arch:universal2 matrix element for macos-latest runner

* Python bindings: Refreshed the list of files needed to be copied for sdist archive

* GitHub Action: Commented out arch:x86 matrix elements

* GitHub Action: Run qemu step only if non-native Linux runner

* GitHub Action: Minor fixes

* Python bindings: Added missing .in pattern when collecting src files for sdist archive

* Auto-Sync reproducability + ARM update (#2532)

* fix xtensa DecodeMR23RegisterClass and add tests for MAC16 instru… (#2551)

* fix xtensa `DecodeMR23RegisterClass` and add tests for `MAC16` instructions

* revert

* Prepare for update (#2552)

* Bindings(chore): Fix DeprecationWarning

* Version(upgrade): update bindings const

* Fix(chore): Fix ARMCC_Invalid is not defined

* Update Changelog Version to 6.0.0-Alpha2 (#2553)

* Bindings(chore): Fix DeprecationWarning

* Version(upgrade): update bindings const

* Fix(chore): Fix ARMCC_Invalid is not defined

* Changelog: Update to version 6.0.0-Alpha2

---------

Co-authored-by: Rot127 <45763064+Rot127@users.noreply.github.com>
Co-authored-by: Florian Märkl <info@florianmaerkl.de>
Co-authored-by: billow <billow.fun@gmail.com>
Co-authored-by: Andrew <afq2101@columbia.edu>
Co-authored-by: Rot127 <unisono@quyllur.org>
Co-authored-by: @Antelox <anteloxrce@gmail.com>
2024-11-24 23:55:49 +08:00
.github Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
.reuse [Auto-Sync] LLVM 18 update (#2296) 2024-04-22 11:55:44 +08:00
LICENSES [Auto-Sync] LLVM 18 update (#2296) 2024-04-22 11:55:44 +08:00
arch Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
bindings Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
contrib Documentation updates (#2476) 2024-09-23 11:26:56 +08:00
cstool Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
docs Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
include Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
packages Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
suite Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
tests Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
windows Fix user data alignment in MEMBLOCK (#1471) 2019-05-09 10:24:47 +08:00
windowsce Documentation updates (#2476) 2024-09-23 11:26:56 +08:00
xcode fix typos (#2346) 2024-05-12 21:17:20 +08:00
.appveyor.yml rename appveyor.yml to .appveyor.yml 2016-03-15 00:01:10 +08:00
.clang-format Add `.clang-format` and format 2023-05-30 11:09:37 +08:00
.dockerignore Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
.editorconfig Add OCaml to EditorConfig 2022-07-23 10:46:03 +02:00
.gitattributes Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
.gitignore Auto-Sync Mips (#2410) 2024-09-07 22:30:47 +08:00
.gitmodules Architecture updater (auto-sync) - Updating ARM (#1949) 2023-07-19 17:56:27 +08:00
.travis.yml Fuzzit integration (#1520) 2019-07-25 09:06:52 +08:00
BUILDING.md Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
CMakeLists.txt Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
CMakePresets.json Merge cmake.yml into CITest.yml 2022-04-11 09:35:10 +02:00
COMPILE_MAKE.TXT Documentation updates (#2476) 2024-09-23 11:26:56 +08:00
CONTRIBUTING.md Documentation updates (#2476) 2024-09-23 11:26:56 +08:00
CREDITS.TXT Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
ChangeLog Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
LEB128.h sync with LLVM 7.0.1. X86 is first 2019-02-26 15:19:51 +08:00
MCAsmInfo.h SystemZ Auto-Sync refactor (#2462) 2024-09-14 16:57:54 +08:00
MCDisassembler.h sync with LLVM 7.0.1. X86 is first 2019-02-26 15:19:51 +08:00
MCFixedLenDisassembler.h RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
MCInst.c Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
MCInst.h Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
MCInstPrinter.c Coverity defects (#2469) 2024-09-18 21:19:42 +08:00
MCInstPrinter.h fix typos (#2346) 2024-05-12 21:17:20 +08:00
MCInstrDesc.c AArch64 update to LLVM 18 (#2298) 2024-07-08 10:28:54 +08:00
MCInstrDesc.h AArch64 update to LLVM 18 (#2298) 2024-07-08 10:28:54 +08:00
MCRegisterInfo.c Auto-Sync Mips (#2410) 2024-09-07 22:30:47 +08:00
MCRegisterInfo.h Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
Makefile Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
Mapping.c Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
Mapping.h Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
MathExtras.h Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
README.md Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
SPONSORS.TXT Update sponsors and remove empty file. (#2485) 2024-09-25 15:35:29 +08:00
SStream.c Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
SStream.h Coverity defects (#2469) 2024-09-18 21:19:42 +08:00
capstone-config.cmake.in Add back support for relocatable packages (#2431) 2024-08-17 23:54:12 +08:00
capstone.pc.in Add back support for relocatable packages (#2431) 2024-08-17 23:54:12 +08:00
cmake.sh SystemZ Auto-Sync refactor (#2462) 2024-09-14 16:57:54 +08:00
cmake_uninstall.cmake.in Add back support for relocatable packages (#2431) 2024-08-17 23:54:12 +08:00
config.mk Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
cs.c Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
cs_priv.h Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
cs_simple_types.h AArch64 update to LLVM 18 (#2298) 2024-07-08 10:28:54 +08:00
functions.mk Fix if indent 2023-05-19 19:50:46 +01:00
make.sh LIBDIRARCH does not propagate to Makefile (#2214) 2024-01-03 17:30:49 +09:00
pkgconfig.mk Update to Version 6.0.0-Alpha2 (#2554) 2024-11-24 23:55:49 +08:00
run-clang-tidy.sh Modern Testing (#2456) 2024-08-31 21:33:38 +08:00
utils.c Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00
utils.h Xtensa Support (#2380) 2024-09-30 11:35:51 +08:00

README.md

Capstone Engine

Build status pypi package pypi downloads oss-fuzz Status

[!TIP] Welcome to join our community group!

Capstone is a disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community.

Created by Nguyen Anh Quynh, then developed and maintained by a small community, Capstone offers some unparalleled features:

  • Support multiple hardware architectures: ARM, AArch64, Alpha, BPF, Ethereum VM, LoongArch, HP PA-RISC (HPPA), M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86 (16, 32, 64), Xtensa.

  • Having clean/simple/lightweight/intuitive architecture-neutral API.

  • Provide details on disassembled instruction (called “decomposer” by others).

  • Provide semantics of the disassembled instruction, such as list of implicit registers read & written.

  • Implemented in pure C language, with lightweight bindings for Swift, D, Clojure, F#, Common Lisp, Visual Basic, PHP, PowerShell, Emacs, Haskell, Perl, Python, Ruby, C#, NodeJS, Java, GO, C++, OCaml, Lua, Rust, Delphi, Free Pascal & Vala ready either in main code, or provided externally by the community).

  • Native support for all popular platforms: Windows, Mac OSX, iOS, Android, Linux, *BSD, Solaris, etc.

  • Thread-safe by design.

  • Special support for embedding into firmware or OS kernel.

  • High performance & suitable for malware analysis (capable of handling various X86 malware tricks).

  • Distributed under the open source BSD license.

Further information is available at https://www.capstone-engine.org

Compile

See BUILDING.md file for how to compile and install Capstone.

Documentation

Contributing

See CONTRIBUTING.md for an intro.

Fuzz

See suite/fuzz/README.md for more information.

License

This project is released under the BSD license. If you redistribute the binary or source code of Capstone, please attach file LICENSE.TXT with your products.