NAME=ELF: entrypoint
FILE=bins/elf/analysis/pie
CMDS=ie=~addr
EXPECT=<<EOF
paddr=0x00000450 vaddr=0x00000450 haddr=0x00000018 vhaddr=0x00000018 type=program
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
0x00000450 0x00300450 0x00000018 0x00300018 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
EOF
EXPECT=<<EOF
baddr    0x300000
paddr      vaddr      phaddr     vhaddr     type
------------------------------------------------
0x00000450 0x00300450 0x00000018 0x00300018 program
EOF
RUN

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

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

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

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

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

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