# merged: 2: thumb entry0
NAME=1: thumb entry0
FILE=bins/elf/arm-init
CMDS=<<EOF
ie
?e --
iee
EOF
EXPECT=<<EOF
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x000002e4 0x000002e4 0x00000018 0x00000018 program
--
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x000002e4 0x000002e4 0x00000ed0 0x00001ed0 fini
0x00000344 0x00000344 0x00000ed8 0x00001ed8 init
EOF
RUN

# merged: thumb main; thumb main alignment; thumb disasm; thumb disasm 2; mix arm and thumb; arm disasm entry0; thumb anal expand
NAME=3: thumb entry0
FILE=bins/elf/analysis/thumb
CMDS=<<EOF
?v entry0
?e --
?v sym.main
?e --
s sym.main
pi 1
?e --
pi 1@ sym.main
?e --
pi 7@ sym.main
?e --
pi 14@ sym.main
?e --
pi 1@ sym.main
?e --
pi 2@sym.main
af@sym.main
pi 2 @sym.main
EOF
EXPECT=<<EOF
0x82f0
--
0x8424
--
push {r7, lr}
--
push {r7, lr}
--
push {r7, lr}
add r7, sp, 0
movs r0, 0xa
bl rsym.putchar
adds r0, r3, 0
mov sp, r7
pop {r7, pc}
--
push {r7, lr}
add r7, sp, 0
movs r0, 0xa
bl rsym.putchar
adds r0, r3, 0
mov sp, r7
pop {r7, pc}
push {r3, r4, r5, r6, r7, r8, sl, lr}
mov r5, r0
mov r6, r1
mov r7, r2
ldr r8, [0x00008494]
bl sym._init
ldr r3, [0x00008498]
--
push {r7, lr}
--
push {r7, lr}
add r7, sp, 0
push {r7, lr}
add r7, sp, 0
EOF
RUN

NAME=thumb sym
FILE=bins/elf/analysis/thumb
CMDS=is~main
EXPECT=<<EOF
107 0x00000424 0x00008424 GLOBAL FUNC   16       main
1   0x000002bc 0x000082bc GLOBAL FUNC   16       imp.__libc_start_main
EOF
RUN

# merged: thumb at sym.JNI_OnLoad
NAME=arm at entry libsimplejni.so
FILE=bins/elf/analysis/libsimplejni.so
CMDS=<<EOF
pi 7@entry0
?e --
pi 6@sym.JNI_OnLoad
EOF
EXPECT=<<EOF
push {fp, lr}
add fp, sp, 4
ldr r3, [0x00000f64]
add r3, pc, r3
mov r0, r3
bl sym.imp.__cxa_finalize
pop {fp, pc}
--
push {r4, lr}
sub sp, 8
mov r4, r0
ldr r0, [0x000010e0]
ldr r1, [0x000010e4]
add r0, pc
EOF
RUN
