NAME=ELF: entrypoint
FILE=../bins/elf/analysis/pie
EXPECT=<<EOF
vaddr=0x00000450 paddr=0x00000450 haddr=0x00000018 hvaddr=0x00000018 type=program
EOF
CMDS=<<EOF
ie~addr
EOF
RUN

NAME=ELF: entrypoint with baddr
FILE=../bins/elf/analysis/pie
ARGS=-B 0x300000
CMDS=<<EOF
iI~baddr
ie~program
EOF
EXPECT=<<EOF
baddr    0x300000
vaddr=0x00300450 paddr=0x00000450 haddr=0x00000018 hvaddr=0x00300018 type=program
EOF
RUN

NAME=ELF: rabin2 entrypoint with baddr
FILE=-
CMDS=<<EOF
!rabin2 -I -B 0x300000 ../bins/elf/analysis/pie | grep baddr
!rabin2 -e -B 0x300000 ../bins/elf/analysis/pie | sed -n '2 p'
EOF
EXPECT=<<EOF
baddr    0x300000
vaddr=0x00300450 paddr=0x00000450 haddr=0x00000018 hvaddr=0x00300018 type=program
EOF
RUN

NAME=ELF: sym.main
FILE=../bins/elf/analysis/pie
EXPECT=<<EOF
0x5c5
EOF
CMDS=<<EOF
?v sym.main
EOF
RUN

NAME=ELF: simple.elf - code
FILE=../bins/elf/analysis/pie
ARGS=-n
EXPECT=<<EOF
0x5c5
push ebp
mov ebp, esp
int3
pop ebp
ret
EOF
CMDS=<<EOF
.!rabin2 -rps ../bins/elf/analysis/pie
?v sym.main
e asm.arch=x86
e asm.bits=32
pi 5 @ sym.main
EOF
RUN

NAME=ELF: simple.elf - code
FILE=../bins/elf/analysis/pie
ARGS=-n -b32
EXPECT=<<EOF
push ebp
mov ebp, esp
int3
pop ebp
ret
EOF
CMDS=<<EOF
.!rabin2 -rps ../bins/elf/analysis/pie
e asm.arch=x86
e asm.bits=32
pi 5 @ sym.main
EOF
RUN

NAME=ELF: simple.elf - baddr - code
FILE=../bins/elf/analysis/pie
ARGS=-b32 -B 0x100000
EXPECT=<<EOF
push ebp
mov ebp, esp
int3
pop ebp
ret
EOF
CMDS=<<EOF
e asm.bits=32;pi 5 @ sym.main
EOF
RUN

NAME=ELF: Candypop, main detection
FILE=../bins/elf/analysis/candypop
ARGS=-A
EXPECT=<<EOF
1
EOF
CMDS=<<EOF
? main~?0x1235
EOF
RUN

NAME=ELF: pd around a reloc with asm.flags.middle
FILE=../bins/elf/analysis/hello-linux-i386-pie
EXPECT=<<EOF
0
EOF
CMDS=<<EOF
e asm.flags.middle=2;pd 3 @0x000004a6 ~?invalid
EOF
RUN
