Skip to content

Commit c10e5e0

Browse files
committed
suport addition in qdb commandline
1 parent c769006 commit c10e5e0

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

qiling/debugger/qdb/frontend.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,38 @@ def extract_count(t):
4242

4343
return (f, s, c)
4444

45-
fmt, addr = line.strip("/").split()
45+
46+
fmt, *rest = line.strip("/").split()
47+
48+
rest = "".join(rest)
4649

4750
fmt = get_fmt(fmt)
4851

4952
elif len(_args) == 1: # only address
50-
addr = _args[0]
53+
rest = _args[0]
5154
fmt = DEFAULT_FMT
5255

5356
else:
54-
return False
55-
56-
addr = addr.strip('$')
57+
rest = _args
5758

5859
if ql.archtype in (QL_ARCH.ARM, QL_ARCH.ARM_THUMB):
59-
addr = addr.replace("fp", "r11")
60+
rest = rest.replace("fp", "r11")
6061

6162
elif ql.archtype == QL_ARCH.MIPS:
62-
addr = addr.replace("fp", "s8")
63+
rest = rest.replace("fp", "s8")
64+
65+
# for supporting addition of register with constant value
66+
elems = rest.split("+")
67+
elems = [elem.strip("$") for elem in elems]
68+
69+
items = []
70+
for elem in elems:
71+
if elem in ql.reg.register_mapping.keys():
72+
items.append(getattr(ql.reg, elem, None))
73+
else:
74+
items.append(_parse_int(elem))
6375

64-
addr = getattr(ql.reg, addr) if addr in ql.reg.register_mapping.keys() else _parse_int(addr)
76+
addr = sum(items)
6577

6678
def unpack(bs, sz):
6779
return {

0 commit comments

Comments
 (0)