rizin/test/db/rzil/arm32
Giovanni 7f55442dc2
Fix endianness issues on s390x (#5940)
* Refactor of bflt to guess arch & fix m68k code
* Fix endianness issues
* Always cleanup at the end on travis ci
2026-02-19 23:13:18 +08:00

309 lines
4.5 KiB
Text

NAME=Printing il statements in various formats
FILE=bins/elf/emulateme.arm32
CMDS=<<EOF
s sym.decrypt
echo -- oneline
aoi 5
echo -- pretty
aoip 5
echo -- graph
agI
EOF
EXPECT=<<EOF
-- oneline
0x10468 (seq (set sp (- (var sp) (bv 32 0x4))) (storew 0 (var sp) (var r11)))
0x1046c (set r11 (+ (var sp) (bv 32 0x0)))
0x10470 (set sp (- (var sp) (bv 32 0x1c)))
0x10474 (storew 0 (- (var r11) (bv 32 0x18)) (var r0))
0x10478 (set r3 (bv 32 0x0))
-- pretty
0x10468
(seq
(set sp
(-
(var sp)
(bv 32 0x4)))
(storew 0
(var sp)
(var r11)))
0x1046c
(set r11
(+
(var sp)
(bv 32 0x0)))
0x10470
(set sp
(-
(var sp)
(bv 32 0x1c)))
0x10474
(storew 0
(-
(var r11)
(bv 32 0x18))
(var r0))
0x10478
(set r3
(bv 32 0x0))
-- graph
.----------------------.
| str fp, [sp, #-4]! |
`----------------------'
v v
| |
.-------' |
| '------------.
| |
.-----------. .-------------.
| set: sp | | storew: 0 |
`-----------' `-------------'
v v v
| | |
| .--------' |
| | '----.
| | |
.-----------. .-----------. .------------.
| sub | | var: sp | | var: r11 |
`-----------' `-----------' `------------'
v v
| |
.----------' |
| '--.
| |
.-----------. .--------------.
| var: sp | | bv: 32 0x4 |
`-----------' `--------------'
EOF
RUN
NAME=arm cmp
FILE=malloc://0x100
ARGS=-aarm -b32
CMDS=<<EOF
e cfg.bigendian=false
wx 0f0053e3
aezi
ar r3=0
echo -- 0x0 - 0xf
aezs
ar 1
echo -- 0xf - 0xf
ar pc=0
ar r3=0xf
aezs
ar 1
echo -- 0x10 - 0xf
ar pc=0
ar r3=0x10
aezs
ar 1
EOF
EXPECT=<<EOF
-- 0x0 - 0xf
tf = 0x0
ef = 0x0
jf = 0x0
qf = 0x0
vf = 0x0
cf = 0x0
zf = 0x0
nf = 0x1
-- 0xf - 0xf
tf = 0x0
ef = 0x0
jf = 0x0
qf = 0x0
vf = 0x0
cf = 0x1
zf = 0x1
nf = 0x0
-- 0x10 - 0xf
tf = 0x0
ef = 0x0
jf = 0x0
qf = 0x0
vf = 0x0
cf = 0x1
zf = 0x0
nf = 0x0
EOF
RUN
NAME=emulateme
FILE=bins/elf/emulateme.arm32
TIMEOUT=60
CMDS=<<EOF
s sym.decrypt
e asm.bits=32
aezi
o malloc://0x1000 0x40000
o malloc://0x10 0x50000
oC 0x10 @ obj.seckrit # New file mapping from 0x0-0xf
omb. obj.seckrit @ 0x0
w AnyColourYouLike @ 0x50000
ar sp=0x41000
ar r0=0x50000
aezsu 0x00010594
ps @ obj.seckrit
EOF
EXPECT=<<EOF
Hello from RzIL!
EOF
EXPECT_ERR=
RUN
NAME=arm sdiv
FILE=malloc://0x100
ARGS=-aarm -b32
CMDS=<<EOF
e cfg.bigendian=false
wx 10f110e7
aezi
ar r0=42
ar r1=5
echo -- 42 / 5
aezs
ar r0
echo -- 42 / 0
ar pc=0
ar r0=42
ar r1=0
aezs
ar r0
echo -- 0 / 0
ar pc=0
ar r0=0
ar r1=0
aezs
ar r0
echo -- -2^31 / -1
ar pc=0
ar r0=0x80000000
ar r1=0xffffffff
aezs
ar r0
echo -- -42 / 5
ar pc=0
ar r0=0xffffffd6
ar r1=5
aezs
ar r0
echo -- -42 / -5
ar pc=0
ar r0=0xffffffd6
ar r1=0xfffffffb
aezs
ar r0
EOF
EXPECT=<<EOF
-- 42 / 5
r0 = 0x00000008
-- 42 / 0
r0 = 0x00000000
-- 0 / 0
r0 = 0x00000000
-- -2^31 / -1
r0 = 0x80000000
-- -42 / 5
r0 = 0xfffffff8
-- -42 / -5
r0 = 0x00000008
EOF
RUN
NAME=arm udiv
FILE=malloc://0x100
ARGS=-aarm -b32
CMDS=<<EOF
e cfg.bigendian=false
wx 10f130e7
aezi
ar r0=42
ar r1=5
echo -- 42 / 5
aezs
ar r0
echo -- 42 / 0
ar pc=0
ar r0=42
ar r1=0
aezs
ar r0
echo -- 0 / 0
ar pc=0
ar r0=0
ar r1=0
aezs
ar r0
echo -- -2^31 / -1
ar pc=0
ar r0=0x80000000
ar r1=0xffffffff
aezs
ar r0
echo -- -42 / 5
ar pc=0
ar r0=0xffffffd6
ar r1=5
aezs
ar r0
echo -- -42 / -5
ar pc=0
ar r0=0xffffffd6
ar r1=0xfffffffb
aezs
ar r0
EOF
EXPECT=<<EOF
-- 42 / 5
r0 = 0x00000008
-- 42 / 0
r0 = 0x00000000
-- 0 / 0
r0 = 0x00000000
-- -2^31 / -1
r0 = 0x00000000
-- -42 / 5
r0 = 0x3333332a
-- -42 / -5
r0 = 0x00000000
EOF
RUN
NAME=emulateme_vfp
FILE=bins/elf/emulateme_vfp.arm32
TIMEOUT=60
CMDS=<<EOF
o malloc://0x1000 0x40000
o malloc://0x10 0x50000
# `o` resets the cpu for analysis.cpu
s main
e asm.bits=32
e asm.cpu=v8
aezi
e io.cache=1
ar sp=0x41000
aezsu 0x10548 # after vsub
ar d7
aezsu 0x10554 # after vmul
ar d7
aezs # after vadd
ar d7
aezs # after vcvt
ar d16
aezsu 0x1058c # before printf
ar r2
ar r3
pxq 16 @ sp
EOF
EXPECT=<<EOF
d7 = 0x370637bd40acccbc
d7 = 0x383531a640acccbc
d7 = 0x40accd1740acccbc
d16 = 0x401599a2e0000000
r2 = 0xa0000000
r3 = 0x40159999
0x00040fd0 0x3ee0c6f7a0000000 0x401599a2e0000000 .......>.......@
EOF
EXPECT_ERR=
RUN