Commit Graph

792 Commits

Author SHA1 Message Date
billow ce0b1b6744
Fix tricore UB (#2204) 2023-11-30 00:20:44 +08:00
Rot127 ef89b18a88 Architecture updater (auto-sync) - Updating AArch64 (#2026)
* Update sysop inc file

* Fix missing  braces warning

* Handle new system operands

* Fix build errors by renaming.

* Fix segfault

* Fix segfault

* Add custom MCOperand valiadtors

* Add AArch64 case for getFeatureBits

* Fix infinite loop

* Fix braces warning.

* Implement loopuo by name for sys operands

* Fix incorrect translation which remove else if statements.

* Fix several segfaults

* Rename GetRegFromClass patch

* Fix segfaults and asserts

* Fix segfault

* Move MRI setting to Mapping

* Remove unused code

* Add add_op_X functinos for AArch64.

* Add fill detail functins

* Handle RegWithShiftExtend operands

* Handle TypedVectorList operands.

* Handle ComplexRoatation operands

* Handle MemExtend operands

* Handle ImmRangeScale operands

* Handle ExactFPImm operands

* Handle GPRSeqPairsClass operands

* Handle Imm8OptLsl operands

* Handle ImmScale operands

* Handle LogicalImm operands

* Handle Matrix operands

* Handle SME Matrix tiles and vectors.

* Handle normal operands.

* Fix segfault.

* Handle PostInc operands.

* Reorder VecLayout enum to have no duplicate enum value.

* Handle PredicateAsCounter operands

* Handle ZPRasFPR operands

* Handle VectorIndex operands

* Handle UImm12Offset operands.

* Move reg suffix to enum val to single function.

* Handle SVERegOp operands

* Handle SVELogicalImm operands

* Handle SImm operand

* Handle PrefetchOp operands

* Handle Imm and ImmHex operands

* Handle GPR64as32 and GPR64x8 operands

* Add missing break

* Handle FPImm operand

* Handle ExtendedRegister opreand

* Handle CondCode operands

* Handle BTIHintOp operands

* Handle BarrierOption operands

* Handle BarrierXSOption

* Add not implemeted case again

* Handle ArithExtend operands

* Handle AdrpLabel and AlignedLabel operands

* Handle AMNoIndex operands

* Handle AddSubImm operands

* Handle MSRSystemRegisters and MRSSystemRegister operands

* Handle PSBHntOp and RPRFMOperand operands

* Remove unused variables

* Handle InverseCondCode operands

* Handle ImplicityTypedVectorList operands

* Handle ShiftedRegister operands

* Handle Shifter operands

* Handle SIMDType10Operand operands

* Handle SVCROp operands

* Handle SVEPattern operands

* Handle SVEVecLenSpecifier operands

* Handle SysCROperands

* Handle SysXzrPair operands

* Handle PState operands

* Handle VRegOperands

* Primt SME oeprands.

* Fix cs_operand.h include

* Rename arm64 -> aarch64 in python bindings.

* Add Python bindings for SH

* Fix ARM Python bindings (#2127)

* Restructure auto-sync update scripts.

* Move Helper functions to Updater dir

* Move requirements.txt

* Add basic ASUpdater.py

* Run black.

* Add inc file generater to updater

* Add option to select certain inc files fore generation.

* Enable clean build and implement patcher for inc files.

* Format config

* Patch main header files after inc generation.

* Implement clang-format function (unused yet, because it takes forever.)

* Copy generated inc files to arch dir

* Invert clean option (noramlly we need to clean the build dir.)

* Clearify arg doc

* Rename SystemRegister file for AArch64

* Centralize handling of path variables.

* Check if SystemOperands had to be generated before renaming on of its files.

* Replace class parameters by calling get_path

* Remove updater config which only contained paths.

* Add refactor option.

* Remove more path handling in the Configurator.

* Add translation step to updater.

* Fix includes after CppTranslator was moved into the Updater

* Remove updater config

* Fix several issue in the Configurator

* Fix file operations

* Remove addition argument from translator.

* Add Differ step to updater.

* Add path variable for arch_config

* Add diff step.

* Fix typo

* Introduce .clang-format path variable.

* Remove duplicate functions

* Add option to select update steps to execute.

* Check in write functions for write flag.

* Rename PatchMainHeader -> HeaderPatcher

* Move .gitignore

* Add README to vendor dir.

* Add all system operands to cstool output

* Update cstest with aarch64 changes

* Remove wb flag of aarch64 detail struct

* Set updates_flag after decoding

* Set writeback after decoding.

* Rename ARM64 -> AArch64

* Update printer and op mapping

* Exit normally

* Add AArch64 alias

* Fix some tmeplate function calls

* Fix flag check after rebase.

* Fix build by commentig unnused code.

* Add memory operand flag

* Handle memory operands printed via generic printOperand function.

* Handle UImm memory offsets

* Introduce MEM_REG and MEM_IMM op types

* Handle scaled memory immediates

* Check for op_count before checking for mem op at -1 index.

* Update memory operand flags.

* Pass imm/reg memory ops in set_imm/reg to set_mem.

* Add missing set_sme_operand call and fix assert.

* Remove CS_OP_MEM flag before entering switch.

* Preidcates are registers.

* Add shift info always to the previous operand

* Check for generic system regs

* Handle NumLanes = 0 LaneKind = q case

* Replace printImm call with normal print logic. Otherwise ops get added twice to detail.

* Handle FP operands in printOperand.

* Add access information to float operands.

* Rewrite SME matrix handling.

* Set correct SME layouts and allow for immediate range sme offsets.

* Handle cases of unknown system alias by setting their raw values

* Update cstool and header file with new SME offset handling

* Handle SME Tile lists.

* Fix build error in cstest

* Update MC tests for AArch64

* Handle TLBI operands and fix printing bug.

* Fix: Print signed value as signed.

* Add more system alias to detail.

* Remove duplicate hex prefix

* Set correct values for the register info

* Replace tabs with white spaces

* Move string append logic to own function.

* Set DecodeComplete = true before decoding (as originally in the LLVM code).

* Change type of feature argument, since only LLVM features are passed, not CS groups.

* Imitate lower_bound for the index table binary search.

* Remove trailing comments from test files.

* Print shift amount in decimal

* Save detail of shift alias instructions.

* Add extension details fot ext instruction alias

* Print LSB and width in decimal

* Fix LLVM bug. The feature check for V8_2a doesn't check if all features are enabled.

* Fix lower_bounds check.
For m == 0 we wrap around 0 of cause.

* Fix feature check. Add check for FeatureAll since it includes XS

* Operate on temporary MCInst when trying decoding.

* Add lower_bound behavior to IndexTypeStr binsearch.

* Fix MC tests which were incorrect because of missing FeatureAll check

* Add Alias handling for AArch64

* Update system operands with SYSIMM types and add additional sysop category.

* Add macros for meta programming (ARM64 <-> AArch64 selection).

* Fix union/struct confusion and add raw_value member to uninions.

* Allow to set Syntax and mode options for AArch64

* Fix build warning by using correct type

* Print shift value in decimal

* Add missing call to add_cs_detail.

* Update name map files with normalized names.

* Remove unused function

* Add check if detail should be filled.

* Fill detail for real instructions if only real detail is requested.

* Add always the extension.

* Make dir creation log message debug level

* Implement ADR immediate operand printer.

See: c3484b1fdc

* Check for flag registers beeing written and update flag.

* Move multiple CondCode helpers to aarch64.h because they are so freaking useful.

+ Print CC if it is EQ

* Fix incorrectly initialized CC and VectorLayout.

* Add LSL shift type for extensions.

* Fix case when shift amount is 0

* Fix post-index memory instructions.

* Pass raw immediate through getShiftValue to extract actual shift amount

* Setup AArch64 detail ops.

* Add flag for operands part of a list.

* Set vector indices for all relevant registers.

* Add missing call to add_cs_detail for postIncOperands

* Add ugly yet reliable way to determine post-index addressing mode

* Add support for old Capstone register alias.

* Remove leading space before some alias mnemonics.

* add AARCH64 to `cmake.sh`

* add HAS_AARCH64 to `cs.c`

* should probably just reference `cs_operand.h` in `aarch64.h`

* hint compiler at `AArch64_SYSREG` enum type for casting purposes

* update `Makefile` for AARCH64

leaves `CAPSTONE_HAS_ARM64` supported

* `testFeatureBits` platform function check

`testFeatureBits` should check if the platform function is visible first

* update tests to use AARCH64 convention

* hack: avoid enum casts for `MCInst` Values

Apple compiler really hates typecasting a enum, even if bounded from a unsigned. Lets set the raw_value directly

is a hack and needs proper review

* Check for present detail before accessing it.

* Add CS only groups

* Use general map ins_op type

* Fix build warning about str size computation.

* Disable warning about unitialized value for GCC 11.

Imm is initialized and the warning does not appear
in later versions.

* Use correct include guard for PPC

* Add missing requirements

* Update SystemOperand enums.

* Fix overlapping comparison warning

* Fix reachable assert where OpNum is not of type IMM

* Handle 0.0 operand for fcmp

* Fix incorrect variable passed.

* Fix for MacOS which doesn't know the warning and throws another one.

* Make getExtendEncoding static to fix build warning on MSVC.

* Fix build error: 'missing binary operator before token' by checking __GNUC__

* Add string search to add vector layout info.

* Add missing mem disponents of several ldr and str instructions.

* Add 0 immediates to several instructions.

* Rename v regs to q and d variant.

The cs_regname API can not pass the variant name of the register requested.
So we simply emit the default variant name.

* Fix incorrect enum value.

* Fix tests for system operands.

* Fix syntax issues in tests.

* Rename Arm64 -> AArch64 Python bindings.

* Fix Python bindings C structs.

* Fix generation of constants (ARMCC skipped because it starts with ARM)

* Update const files

* Remove -Wmaybe-uninitialized warning since it fails fuzz build

* Add missing comma

* Fix case

* Fix AArch64 Python bindings:

- Do not generate constants automatically (dscript is way too buggy).
- Update printing of details.

* Rename ARM64 -> AArch64 in test_corpus.py

* Rename test_arm64 -> test_aarch64

* Rename ARM-64 -> AArch64

* Fix diff CI test by disassembling AArch64 at former ARM64 place

* Fix several wrong types and remove unnecessary memebers from Python binding

* Fix: Same printing format of detail for cstool, test_ and test_*.py

* Fix: pass correct op index for mov alias with op[1] == reg wzr.

* Set prfm op manuall in case of unnown sysop. set_imm would add it to an memory operand wihtout base.

* Fix: If barrier ops are not set an assert is reached.

We fix it here by simply getting the immediate as the printing code does.

---------

Co-authored-by: Peace-Maker <peace-maker@wcfan.de>
Co-authored-by: Dayton <5340801+watbulb@users.noreply.github.com>
2023-11-15 12:12:14 +08:00
Rot127 f8b7ae7c2a Add ARM_GRP_RET and with it some missing ARM_GRP_JUMP. (#2191) 2023-11-10 10:58:18 +08:00
Rot127 123beeee4a Handle reserved values of the 'at' bits of BO fields. (#2168) 2023-09-22 12:55:18 +08:00
peace-maker e00a210a3d Test Python bindings in CI (#2161) 2023-09-15 14:35:09 +08:00
Rot127 926cfebd6b Architecture updater (auto-sync) - Updating PPC (#2013) 2023-09-05 12:24:59 +08:00
Farid Zakaria 0bf0ec5805 Add support for Python binding for diasm_iter (#2136)
* Add venv to the gitignore so I can test Python code

* add test_iter.py which is nearly identical to test_lite.py

* add support for test_iter.py in check; also add missing test_lite.py

* Add support for the disasm_iter C function
2023-08-09 23:04:19 +08:00
peace-maker 4a7a55f62a Fix ARM Python bindings (#2127) 2023-07-29 08:34:17 +08:00
Peace-Maker a4699018fb Add Python bindings for SH 2023-07-24 05:44:48 +02:00
Wu ChenXu bd003941a8 Merge pull request #2100 from peace-maker/sync_bindings
Sync Python bindings for x86, m68k, and mos65xx
2023-07-21 23:35:50 +08:00
Wu ChenXu aab2aa85cd Merge pull request #2097 from peace-maker/update_python_constants
Update Python binding constants
2023-07-21 23:34:53 +08:00
Wu ChenXu 188356c1d5 Merge pull request #2095 from peace-maker/python_wasm
Add Python bindings for WASM
2023-07-21 23:32:22 +08:00
Anton Kochkov d3a0e7ff99 ci: use cibuildwheel for python wheels (#2099)
* ci: use cibuildwheel for python wheels

* fix several issues

* fix setup.py

* fix issue

* Compatible with python2

* fix str

* trigger ci

---------

Co-authored-by: kabeor <kabeor00@gmail.com>
2023-07-21 23:15:46 +08:00
Peace-Maker 3175055ac2 Update Python bindings for mos65xx 2023-07-20 13:49:38 +02:00
Peace-Maker e0ea140459 Update Python bindings for m68k 2023-07-20 13:49:31 +02:00
Peace-Maker fd5c6b0adc Update Python bindings for x86 2023-07-20 13:49:14 +02:00
Rot127 102a6bdc28 Bumb manylinux version to 2014 (x86) and 2_28 (x86_64) repectivly.
manylinux1 is EOL since 2 years. Just like Python 3.6
Fixes wheel build.
2023-07-19 11:13:25 -05:00
Peace-Maker 885fbda22e Update constants from ARM auto-sync patch 2023-07-19 17:52:54 +02:00
Peace-Maker b3f391e7a2 Update CS_* constants in Python bindings 2023-07-19 17:38:22 +02:00
Peace-Maker c17009c802 Add Python bindings for WASM 2023-07-19 17:26:56 +02:00
Nguyen Anh Quynh cc9994ea17 python: update binding README 2023-07-06 00:03:39 +08:00
Peace-Maker 90ef5aad5f Update Cython bindings 2023-06-28 19:02:11 +02:00
Peace-Maker c43083ad65 Add CS_GRP_BRANCH_RELATIVE to python bindings 2023-06-28 18:35:19 +02:00
Peace-Maker d75c37b872 Search for correct versioned lib .5 suffix
Always use the major version instead of requiring manual updates to the
file names.
2023-06-28 18:34:14 +02:00
Peace-Maker 68c8943e32 Normalize rc4 version string
/usr/local/lib/python2.7/dist-packages/setuptools/dist.py:476: UserWarning: Normalizing '5.0.0.rc4' to '5.0.0rc4'
  normalized_version,
2023-06-28 18:31:41 +02:00
billow 935acd196a Update all *_const.py 2023-06-23 23:46:47 +08:00
billow b0db964c67 Fix const_generator.py and tricore_const.py 2023-06-23 20:47:11 +08:00
Nguyen Anh Quynh 5712a0957e bindings: update binding consts 2023-06-18 20:49:05 +08:00
kabeor 4d423560df [bindings] Adapt python2 for setup.py 2023-06-18 19:38:22 +08:00
kabeor fd6832ce4b [bindings] fix twine issue when publish 2023-06-18 18:48:07 +08:00
kabeor 2c5074af63 [bindings] fix twine issue when publish 2023-06-18 18:44:46 +08:00
Wu ChenXu b98189dce9 Merge pull request #2007 from peace-maker/riscv_insn_groups
RISCV: Add call, int and branch_relative instruction groups
2023-06-10 20:08:47 +08:00
Peace-Maker 11be359590 Fix RISCV Python bindings
The structs had changed and the `need_effective_addr` element wasn't exposed.
2023-06-05 15:09:45 +02:00
Peace-Maker 89549ccffb Fix TriCore Python bindings
The structs were out of sync and were missing a few elements.

The `update_flags` element wasn't exposed at all.
2023-06-05 15:08:32 +02:00
Peace-Maker 5770ac0e4c Fix Python Bindings after changes to cs_detail
#2034 changed the `regs_read` array size and added a new `writeback`
element to the cs_detail struct.

Those changes weren't reflected in the Python bindings causing details
to be missing.
2023-06-05 15:06:12 +02:00
Peace-Maker cb6b9487f9 Merge branch 'next' into riscv_insn_groups 2023-05-30 16:23:34 +02:00
Peace-Maker 7c0d3be0f9 RISCV: add more instruction groups
Add call, ret, int and branch_relative instruction groups to riscv
mappings.
2023-05-01 22:55:26 +02:00
billow 99fef148cc Upper tricore_const.py 2023-05-01 22:58:19 +08:00
billow f2fa66901b Fix tricore python binding
- fix HACK.TXT
2023-04-24 22:18:07 +08:00
billow e3c2a06292 fix `test_corpus.py` 2023-04-14 00:36:13 +08:00
billow 48f0317c73 feat: Refactor and improve triCore platform support 2023-04-14 00:35:47 +08:00
billow c4a9694d9e - add `tricore` to python binding
- try fix `test_corpus.py`
2023-04-14 00:34:59 +08:00
kabeor eed417a810 fix python binding 2023-03-07 13:17:45 +08:00
kabeor 118f08fdf7 fix python binding build 2023-03-07 12:03:47 +08:00
Josh Bundt (tr0gd0r) df80b42799 Update __init__.py
Fix missing return value `post_index` - same as #1944
2023-03-04 18:13:37 -05:00
HyperSine bbab923555 arm64: fix missing post_index
Signed-off-by: HyperSine <hypersine.git@outlook.com>
2022-12-19 12:58:09 +08:00
ζeh Matt 648d4a2b55 Add post_index to python bindings 2022-11-22 22:25:49 +02:00
Finn Wilkinson 55f3d2eb4f Updated Arm64 python bindings after Armv9.2-a support. 2022-11-07 12:27:34 +00:00
John Ott 9f727d495f Remove outdated ctypes requirement
The library ctypes has shipped with the python standard library since
Python 2.5, however this was still added via the `requires` keyword in
setuptools.setup. This results in a spurious requirement being created
in the .whl METADATA file, causing warnings when packaged via tools like
pex:

```
$ python3 -m pex capstone -o capstone.pex
/Users/ott/.venv/lib/python3.9/site-packages/pex/dist_metadata.py:397: PEXWarning: Ignoring 1 `Requires` field in /Users/ott/.pex/installed_wheels/2a4c7a0d4c87aceed3134ae20997a764af1811fee8e151cf5da90e0462822893/capstone-4.0.2-py3-none-macosx_12_arm64.whl metadata:
1.) Requires: ctypes

You may have issues using the 'capstone' distribution as a result.
More information on this workaround can be found here:
  https://github.com/pantsbuild/pex/issues/1201#issuecomment-791715585
```

Since this requirement is outdated, it can just be removed.
2022-08-24 11:29:48 -07:00
Richard Patel 2f1c4524eb Add Python test for CS_MODE_PS 2022-07-23 10:49:13 +02:00
Richard Patel ef560a1afa Sync eBPF and PowerPC bindings 2022-07-23 10:46:03 +02:00
Richard Patel 8507533bab Update bindings (PPC PS support) 2022-07-23 08:50:47 +02:00
Adam Seitz d729d88e87 Combine aarch64 sys operand enums 2022-03-18 14:15:46 -04:00
kabeor 2b05b8ef94 replace missing option CMAKE_BUILD_SHARED for python setup.py 2022-02-28 00:01:09 +08:00
kabeor d86c150854 fix for python publish build 2022-02-27 23:31:51 +08:00
Duncan Ogilvie f4d86a3034 Modernize CMake and switch to CMake 3.15 2022-02-25 20:39:30 +01:00
David Pfeiffer 13cc08b6c9 Add encoding field to cs_x86 in python bindings for consistency (#1834) 2022-01-28 10:21:39 +08:00
kabeor 9057f42a89 add ci_test steps&&Fixed suite test for python3 2021-11-23 12:27:39 +08:00
jesko 8bd5dc1a37 adds test and bugfix for memoryview support 2021-11-13 11:32:18 +01:00
jesko 28dbf409cf invoke from_buffer only for writeable interfaces 2021-11-13 00:16:19 +01:00
jesko 3f75a02950 support disassembling bytes from memoryview 2021-07-05 22:40:07 +02:00
Mark Jansen 2b72d7c2bc Always return the same type from regs_read (#1736) 2021-03-20 07:32:23 +08:00
Nguyen Anh Quynh ba932de97a bindings: update Arm64 register enum 2020-11-25 16:18:50 +08:00
Tobias Faller 20e3ebd372 Added export for Python CS_MODE_RISCVC binding (#1691) 2020-09-18 22:34:35 +08:00
Nikita db20180560 Allow to override PYTHON[23] in Makefiles (#1639)
$(PYTHON2) and/or $(PYTHON3) might differ from python and/or python3,
accordingly. Allow to override these variables by user choice.
2020-05-30 10:51:54 +08:00
Disconnect3d 95f25c5325 Add __repr__ for capstone.CsInsn (#1625)
* Add __repr__ for capstone.CsInsn

Currently, a `print(instruction)` displays a not very useful string like `<capstone.CsInsn object at 0x7f3759d88128>`.

This PR enhances adds a `__repr__` magic method to the `capstone.CsInsn` class so it displays as follows:
```
<cs.CsInsn: address=0x5555555545fa, size=1, mnemonic=push, op_str=rbp>
```

* Update __init__.py
2020-05-05 01:54:28 +08:00
Nguyen Anh Quynh 4e13196da8 python: classifier Python3 for setup.py 2020-01-26 13:26:58 +08:00
naq 4294ca7570 bindings: update after the last header fix 2019-10-08 10:42:47 +08:00
ksherlock 41e5f629ce updated 6502 support. (#1498)
* updated 6502 support. some improvements to the base 6502 support but also adds support for 65c02, w65c02, and 65816.

* add CS_OPT_SYNTAX_MOTOROLA.

This will use "$" as a hex prefix instead of "0x"

* remove excess blank lines
2019-06-03 23:20:51 +08:00
Nguyen Anh Quynh 1cf177d32e python: add PPC modes CS_MODE_SPE & CS_MODE_BOOKE 2019-05-08 14:03:10 +08:00
Nguyen Anh Quynh b543c345ca ppc: sync with llvm 7.0.1 2019-04-30 13:50:42 +08:00
Nguyen Anh Quynh 4754471262 merge next-arm64 to next 2019-04-10 17:46:07 +08:00
Nguyen Anh Quynh f407e94249 arm64: sync with LLVM 7.0.1 2019-04-10 14:17:08 +08:00
ChrisDenton df261a901e Update __init__.py (#1453)
Pass bytearrays by reference instead of copying to bytes.
2019-04-03 11:41:32 +08:00
Wolfgang Schwotzer 23b3fba966 M680X: Use same output style as other archs (#1439)
- Lowercase hex numbers.
- Use comma + space between instruction parameters.
2019-03-22 11:07:15 +08:00
Nguyen Anh Quynh af891f125a bindings: update ARM const after the last ARM update 2019-03-16 15:22:45 +08:00
z b8fcf27b22 RISCV support ISRV32/ISRV64 (#1401)
* Added RISCV dir to contain the RISCV architecture engine code. Adding the TableGen files generated from llvm-tblgen. Add Disassembler.h

* Started working on RISCVDisassembler.c - RISCV_init(), RISCVDisassembler_getInstruction, and RISCV_getInstruction

* Added all functions to RISCVDisassembler.c and needed modifications to RISCVGenDisassemblerTables.inc. Add and modified RISCVGenSubtargetInfo.inc. Start creation of RISCVInstPrinter.h

* Finished RISCVGenAsmWriter.inc. Finished RISCVGenRegisterInfo.inc. Minor fixes to RISCVDisassembler.c. Working on RISCVInstPrinter

* Finished RISCVInstPrinter, RISCVMapping, RISCVBaseInfo, RISCVGenInstrInfo.inc, RISCVModule.c. Working on riscv.h

* Backport it from: 0db412ce3b

* All RISCV files added. Compiled correctly and initial test for ADD, ADDI, AND works properly.

* Add refactored cs.c for RISCV

* Testing all I instructions in test_riscv.c

* Modify the orignal backport for RISCVGenRegisterInfo.inc, capstone.h and test_iter to work w/ the current code strcuture

* Fix issue with RISCVGenRegisterInfo.inc - RISCVRegDesc[] (Excess elements in struct initializer). Added RISCV tests to test_iter.c

* fixed bug related to incorrect initialization of memory after malloc

* fix compile bug

* Fix compile errors.

* move riscv.h to include/capstone

* fix indentation issues

* fix coding style issues

* Fix indentation issues

* fix coding style

* Move variable declaration to the top of the block

* Fix coding indentation

* Move some stuff into RISCVMappingInsn.inc

* Fix code sytle

* remove cs_mode support for RISCV

* update asmwriter-inc to LLVM upstream

* update the .inc files to riscv upstream

* update riscv disassembler function for suport 16bit instructions

* update printer & tablegen inc files which have fixed arguments mismatch

* update headers and mapping source

* add riscv architecture specific test code

* fix all RISCV tons of compiler errors

* pass final tests

* add riscv tablegen patchs

* merge with upstream/next

* fix cstool missing riscv file

* fix root Makefile

* add new TableGen patchs for riscv

* fix cmakefile.txt of missing one riscv file

* fix declaration conflict

* fix incompatible declaration type

* change riscvc from arch to mode

* fix test_riscv warnning

* fix code style and add riscv part of test_basic

* add RISCV64 mode

* add suite for riscv

* crack fuzz test

* fix getfeaturebits test add riscvc

* fix test missing const qualifier warnning

* fix testcase type mismatch

* fix return value missing

* change getfeaturebits test

* add test cs files

* using a winder type contain the decode string

* fix a copy typo

* remove useless mode for riscv

* change cs file blank type

* add repo for update_riscv & fix cstool missing riscv mode

* fix typo

* add riscv for cstool useage

* add TableGen patch for riscv asmwriter

* clean ctags file

* remove black comment line

* fix fuzz related something

* fix missing RISCV string of fuzz

* update readme, etc..

* add riscv *.s.cs file

* add riscv *.s.cs file & clear ctags

* clear useless array declarations at capstone_test

* update to 5e4069f

* update readme change name more formal

* change position of riscv after bpf and modify copyright more uniform

* clear useless ctags file

* change blank with tab in riscv.h

* add riscv python bindings

* add riscv in __init__.py

* fix riscv define value for python binding

* fix test_riscv.py typo

* add missing riscvc in __init__.py of python bindings

* fix alias-insn printer bug, remove useless newline

* change inst print delimter from tab to bankspace for travis

* add riscv tablegen patch

* fix inst output more consistency

* add TableGen patch which fix inst output formal

* crack the effective address output for detail and change register print function

* fix not detail crash bug

* change item declaration position at cs_riscv

* update riscv.py

* change function name more meaningfull

* update python binding makefile

* fix register enum sequence according to riscvgenreginfo.inc

* test function name

* add enum s0/fp in riscv.h & update riscv_const.py

* add register name enum
2019-03-09 08:41:12 +08:00
Nguyen Anh Quynh ee237e128a bingdings: update X86 consts 2019-03-02 14:59:16 +08:00
Nguyen Anh Quynh b7ed33a1a0 Merge branch 'next' of github.com:aquynh/capstone into next 2019-03-01 01:12:50 +08:00
Sebastian Macke 6ba9f001b9 MOS65XX: Fix instruction length for indirect addressing modes (#1402)
Signed-off-by: Sebastian Macke <sebastian@macke.de>
2019-02-28 07:39:59 +08:00
Nguyen Anh Quynh 2defd57568 bindings: update X86 consts 2019-02-27 23:04:14 +08:00
david942j 9b3ead3ab8 fix conflicts 2019-02-18 20:04:30 +08:00
david942j b227acc29c New architecture: BPF (#1388)
* Basic changes of new arch - BPF

* Define some constants

* defined some API methods

* Able to print MISC instruction

* Follow Linux coding style

* Ability to show ALU insn names

* decode return

* Add suite/MC/BPF

* decode jump

* decode store

* decode load

* print instruction done

* try to implement BPF_reg_access

* Implements explicit accessed registers and fix some tiny bugs

* Fix unhandled ja case

* Added BPF_REG_OFF do fix wrong display in jump class

* Great I'm able to decode cBPF with eyes

* Fix: misunderstood the 16-byte instruction's imm

* Add ldxdw

* Add extended-all.cs

* Implements cstest/bpf_getdetail.c

* Fix memory leak

* Add BPF to fuzz

* Implemented regs_read and regs_write

* Fix missing write-access on ALU's dst

* Updated cstool/, test_basic.c, test_detail.c, and test_iter.c

* Updated docs

* Fix type of cs_bpf#operands

* Implements python bindings

* Fix some bugs found by self code review

* Remove dummy tests

* remove typeof

* Address comments

* Fix MSVC's warnings and add test_bpf.py to bindings/python/Makefile

* Fix: call is not offset
2019-02-18 17:39:51 +08:00
Nguyen Anh Quynh 0eb9f20dfe python: add test_evm.py to Makefile check target 2019-02-18 10:46:57 +08:00
Nguyen Anh Quynh 7b47192b1a python: make test_evm.py to output like test_evm.c 2019-02-17 23:19:56 +08:00
Семён Марьясин 059ac6d7cc Fix skipdata struct being destroyed (#1385) 2019-02-17 01:32:12 +08:00
Invincible 74c67daf35 For the benefit of mankind. (#1386)
For the peace and tranquility of the earth.
2019-02-17 01:32:08 +08:00
Nguyen Anh Quynh 6a61b65420 wasm: add wasm to bindings/const_generator.py 2019-02-02 18:33:12 +08:00
Spike 55f242d498 Add webassembly arch (#1359)
* add wasm arch

* fix bug

* delete todo & add wasm into readme
2019-02-01 23:03:47 +08:00
Erik Hemming 44ce36d1ad Fix a couple of corner-cases with rarely used m68k instructions. (#1344)
* Bump the "cs_insn.bytes[]" size to 24 (from 16) to support M680x0 instructions with full EA (maximum 11 words)
Added a test for this in test_m68k.s

* Bump the "cs_detail.regs_read[]" size to 16 (from 12) to support M680x0 instructions with full REG_BITS (Dn+An = 16)

* m68k: use immediate mode syntax (#$0) for movem/fmovem instructions with empty register list

* update bindings to match changes to cs_insn and cs_detail
2019-01-21 17:42:01 +08:00
Benno Fünfstück 08ca4fa4bb bindings/python: fix install error due to old libname (#1338) 2019-01-11 00:10:25 +08:00
Nguyen Anh Quynh 2576c4a4fb python: temporarily comment out skipdata setup, which is still broken on MacOS. #1316 2019-01-02 10:11:48 +08:00
Nguyen Anh Quynh d4ce009086 Merge branch 'master' into next 2019-01-02 10:01:28 +08:00
Nguyen Anh Quynh 145b83062e python: rename getter/setter skipdata_cb to skipdata_callback. Hello 2019 2019-01-01 00:22:45 +08:00
Nguyen Anh Quynh 5087076f62 python: attempt to fix #1320 2018-12-31 15:51:50 +08:00
Семён Марьясин 784118b9a1 Fix skipdata setup (#1320)
* Fix skipdata_setup for when _cb is None

ctypes prototype does not accept None value,
so if we want to get a NULL function pointer
then we should either call it with no arguments
or pass zero as an argument.

Fixes #1316

* Do store and return skipdata_setup data

* Add convenience wrappers for skipdata_setup

* Uncomment skipdata_setup tests

* Add alternate usage variants to test_skipdata.py

* document getter
2018-12-31 15:42:44 +08:00
mephi42 7ac73141c8 Update SystemZ to LLVM commit 5ad902a6 (#1306) 2018-12-16 21:48:51 +08:00
Nguyen Anh Quynh c458d728ac bump version to 4.1 2018-12-16 20:18:20 +08:00
Sebastian Macke 121c6d518d MOS65XX: Add binding for python
Signed-off-by: Sebastian Macke <sebastian@macke.de>
2018-12-06 22:53:43 +01:00
Hugo 633050764d Add python_requires and update Trove classifiers (#1251) 2018-10-02 17:45:45 +08:00