Skip to content

Commit 0e5a2a8

Browse files
committed
fix Python build failure
1 parent 6e3587d commit 0e5a2a8

File tree

3 files changed

+2332
-390
lines changed

3 files changed

+2332
-390
lines changed

bindings/python/capstone/__init__.py

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,25 @@
106106
'CS_MODE_BPF_EXTENDED',
107107
'CS_MODE_RISCV32',
108108
'CS_MODE_RISCV64',
109-
'CS_MODE_RISCVC',
109+
'CS_MODE_RISCV_C',
110+
'CS_MODE_RISCV_FD',
111+
'CS_MODE_RISCV_V',
112+
'CS_MODE_RISCV_ZFINX',
113+
'CS_MODE_RISCV_ZCMP_ZCMT_ZCE',
114+
'CS_MODE_RISCV_ZICFISS',
115+
'CS_MODE_RISCV_E',
116+
'CS_MODE_RISCV_A',
117+
'CS_MODE_RISCV_COREV',
118+
'CS_MODE_RISCV_THEAD',
119+
'CS_MODE_RISCV_SIFIVE',
120+
'CS_MODE_RISCV_BITMANIP',
121+
'CS_MODE_RISCV_ZBA',
122+
'CS_MODE_RISCV_ZBB',
123+
'CS_MODE_RISCV_ZBC',
124+
'CS_MODE_RISCV_ZBKB',
125+
'CS_MODE_RISCV_ZBKC',
126+
'CS_MODE_RISCV_ZBKX',
127+
'CS_MODE_RISCV_ZBS',
110128
'CS_MODE_MOS65XX_6502',
111129
'CS_MODE_MOS65XX_65C02',
112130
'CS_MODE_MOS65XX_W65C02',
@@ -159,6 +177,7 @@
159177
'CS_OPT_SYNTAX_MOTOROLA',
160178
'CS_OPT_SYNTAX_CS_REG_ALIAS',
161179
'CS_OPT_SYNTAX_NO_DOLLAR',
180+
'CS_OPT_SYNTAX_NO_ALIAS_TEXT',
162181

163182
'CS_OPT_DETAIL',
164183
'CS_OPT_DETAIL_REAL',
@@ -332,7 +351,7 @@
332351
CS_MODE_MIPS64R6 = 1 << 17 # Mips64r6 ISA Support
333352
CS_MODE_OCTEON = 1 << 18 # Octeon cnMIPS Support
334353
CS_MODE_OCTEONP = 1 << 19 # Octeon+ cnMIPS Support
335-
CS_MODE_NANOMIPS = 1 << 20 # Generic nanomips
354+
CS_MODE_NANOMIPS = 1 << 20 # Generic nanomips
336355
CS_MODE_NMS1 = ((1 << 21) | CS_MODE_NANOMIPS) # nanoMips NMS1
337356
CS_MODE_I7200 = ((1 << 22) | CS_MODE_NANOMIPS) # nanoMips I7200
338357
CS_MODE_MIPS_NOFLOAT = 1 << 23 # Disable floating points ops
@@ -353,7 +372,25 @@
353372
CS_MODE_BPF_EXTENDED = (1 << 0) # Extended BPF mode
354373
CS_MODE_RISCV32 = (1 << 0) # RISCV32 mode
355374
CS_MODE_RISCV64 = (1 << 1) # RISCV64 mode
356-
CS_MODE_RISCVC = (1 << 2) # RISCV compressed mode
375+
CS_MODE_RISCV_C = 1 << 2, # RISCV compressed instructure mode
376+
CS_MODE_RISCV_FD = 1 << 3,
377+
CS_MODE_RISCV_V = 1 << 4,
378+
CS_MODE_RISCV_ZFINX = 1 << 5,
379+
CS_MODE_RISCV_ZCMP_ZCMT_ZCE = 1 << 6,
380+
CS_MODE_RISCV_ZICFISS = 1 << 7,
381+
CS_MODE_RISCV_E = 1 << 8,
382+
CS_MODE_RISCV_A = 1 << 9,
383+
CS_MODE_RISCV_COREV = 1 << 10,
384+
CS_MODE_RISCV_THEAD = 1 << 11,
385+
CS_MODE_RISCV_SIFIVE = 1 << 12,
386+
CS_MODE_RISCV_BITMANIP = 1 << 13,
387+
CS_MODE_RISCV_ZBA = 1 << 14,
388+
CS_MODE_RISCV_ZBB = 1 << 15,
389+
CS_MODE_RISCV_ZBC = 1 << 16,
390+
CS_MODE_RISCV_ZBKB = 1 << 17,
391+
CS_MODE_RISCV_ZBKC = 1 << 18,
392+
CS_MODE_RISCV_ZBKX = 1 << 19,
393+
CS_MODE_RISCV_ZBS = 1 << 20,
357394
CS_MODE_MOS65XX_6502 = (1 << 1) # MOS65XXX MOS 6502
358395
CS_MODE_MOS65XX_65C02 = (1 << 2) # MOS65XXX WDC 65c02
359396
CS_MODE_MOS65XX_W65C02 = (1 << 3) # MOS65XXX WDC W65c02
@@ -461,6 +498,7 @@
461498
CS_OPT_SYNTAX_CS_REG_ALIAS = (1 << 7) # Prints common register alias which are not defined in LLVM (ARM: r9 = sb etc.)
462499
CS_OPT_SYNTAX_PERCENT = (1 << 8) # Prints the % in front of PPC registers.
463500
CS_OPT_SYNTAX_NO_DOLLAR = (1 << 9) # Does not print the $ in front of Mips, LoongArch registers.
501+
CS_OPT_SYNTAX_NO_ALIAS_TEXT = (1 << 10) # Does not print an instruction's alias test if the instruction is an alias
464502
CS_OPT_DETAIL_REAL = (1 << 1) # If enabled, always sets the real instruction detail.Even if the instruction is an alias.
465503

466504
# Capstone error type
@@ -1468,7 +1506,7 @@ def debug():
14681506
"m680x": CS_ARCH_M680X, 'evm': CS_ARCH_EVM, 'mos65xx': CS_ARCH_MOS65XX,
14691507
'bpf': CS_ARCH_BPF, 'riscv': CS_ARCH_RISCV, 'tricore': CS_ARCH_TRICORE,
14701508
'wasm': CS_ARCH_WASM, 'sh': CS_ARCH_SH, 'alpha': CS_ARCH_ALPHA,
1471-
'hppa': CS_ARCH_HPPA, 'loongarch': CS_ARCH_LOONGARCH, 'xtensa': CS_ARCH_XTENSA,
1509+
'hppa': CS_ARCH_HPPA, 'loongarch': CS_ARCH_LOONGARCH, 'xtensa': CS_ARCH_XTENSA,
14721510
'arc': CS_ARCH_ARC
14731511
}
14741512

bindings/python/capstone/riscv.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,44 @@
11
# Capstone Python bindings, by Nguyen Anh Quynnh <[email protected]>
22

33
import ctypes
4+
45
from . import copy_ctypes_list
56
from .riscv_const import *
67

8+
79
# define the API
810
class RISCVOpMem(ctypes.Structure):
911
_fields_ = (
10-
('base', ctypes.c_uint),
11-
('disp', ctypes.c_int64),
12+
("base", ctypes.c_uint),
13+
("disp", ctypes.c_int64),
1214
)
1315

16+
1417
class RISCVOpValue(ctypes.Union):
1518
_fields_ = (
16-
('reg', ctypes.c_uint),
17-
('imm', ctypes.c_int64),
18-
('mem', RISCVOpMem),
19+
("reg", ctypes.c_uint),
20+
("imm", ctypes.c_int64),
21+
("dimm", ctypes.c_double),
22+
("mem", RISCVOpMem),
23+
("csr", ctypes.c_uint16),
1924
)
2025

26+
2127
class RISCVOp(ctypes.Structure):
2228
_fields_ = (
23-
('type', ctypes.c_uint),
24-
('value', RISCVOpValue),
25-
('access', ctypes.c_uint),
29+
("type", ctypes.c_uint),
30+
("value", RISCVOpValue),
31+
("access", ctypes.c_uint),
2632
)
2733

2834
@property
2935
def imm(self):
3036
return self.value.imm
3137

38+
@property
39+
def dimm(self):
40+
return self.value.dimm
41+
3242
@property
3343
def reg(self):
3444
return self.value.reg
@@ -37,14 +47,18 @@ def reg(self):
3747
def mem(self):
3848
return self.value.mem
3949

50+
@property
51+
def csr(self):
52+
return self.value.csr
53+
4054

4155
class CsRISCV(ctypes.Structure):
4256
_fields_ = (
43-
('need_effective_addr', ctypes.c_bool),
44-
('op_count', ctypes.c_uint8),
45-
('operands', RISCVOp * 8),
57+
("need_effective_addr", ctypes.c_bool),
58+
("op_count", ctypes.c_uint8),
59+
("operands", RISCVOp * 8),
4660
)
4761

48-
def get_arch_info(a):
49-
return (a.need_effective_addr, copy_ctypes_list(a.operands[:a.op_count]))
5062

63+
def get_arch_info(a):
64+
return (a.need_effective_addr, copy_ctypes_list(a.operands[: a.op_count]))

0 commit comments

Comments
 (0)