See #1935 for original issue, whose underlying issue was resolved in #1949.
On Mac M1 Pro, macOS Sonoma 14.2.1.
Python 3.11, next branch @ 215eae8
The original issue was that dissassembling Thumb branch/call immediate instructions did not calculate the correct immediate value.
For instance, in the following example:
>>> from capstone import *
>>> from capstone.arm_const import *
>>> cs = Cs(CS_ARCH_ARM, CS_MODE_THUMB)
>>> insn = next(cs.disasm(b"\xff\xf7\xad\xff", 4))
>>> insn
<CsInsn 0x4 [fff7adff]: bl #0xffffff62>
The correct result (as can be verified with cstool) is 0xffffff5e:
$ cstool -d thumb "\xff\xf7\xad\xff"
0 ff f7 ad ff bl #0xffffff5e
ID: 16 (bl)
op_count: 1
operands[0].type: IMM = -0xa2
Registers read: pc
Registers modified: lr pc
Groups: branch_relative thumb call jump
Since cstool works, it would seem that there is an issue with building the python bindings, though I haven't managed to locate it.
Seems like it might be related to and/or solved by #2223, though I was using 3.11 to avoid the issues mentioned there.
Building python bindings following these steps:
$ mamba create -n tmp-env # create a virtual environment to install capstone in
$ mamba activate tmp-env
$ mamba install -c conda-forge python=3.11 pip -y
$ cd capstone
$ ./make.sh # build libcapstone.5.dylib
$ cd bindings/python
$ sudo make clean
$ sudo make install3 # build and install python bindings into active pip
Which puts capstone 5.0.0.post1 in my pip environment (which should ostensibly not matter, because the original issue should've been fixed with v5).
See #1935 for original issue, whose underlying issue was resolved in #1949.
On Mac M1 Pro, macOS Sonoma 14.2.1.
Python 3.11,
nextbranch @215eae8The original issue was that dissassembling Thumb branch/call immediate instructions did not calculate the correct immediate value.
For instance, in the following example:
The correct result (as can be verified with
cstool) is0xffffff5e:Since
cstoolworks, it would seem that there is an issue with building the python bindings, though I haven't managed to locate it.Seems like it might be related to and/or solved by #2223, though I was using 3.11 to avoid the issues mentioned there.
Building python bindings following these steps:
Which puts
capstone 5.0.0.post1in my pip environment (which should ostensibly not matter, because the original issue should've been fixed with v5).