NAME=cmd.esil.trap
FILE=-
CMDS=<<EOF
e cmd.esil.trap=?e hello world
ae 2,1,TRAP
EOF
EXPECT=<<EOF
hello world 1 2
EOF
RUN

NAME=cmd.esil.trap via invalid pc
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
e cmd.esil.trap=?e its a trap
dr PC=0xdeadbeef
aes
EOF
EXPECT=<<EOF
its a trap 0xdeadbeef 0x7
EOF
RUN

NAME=cmd.esil.trap via invalid op
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
e cmd.esil.trap=?e its a trap
e io.cache=1
wx ffffffffffffffffffffffffffffffffffffffff
ao~type
aes
EOF
EXPECT=<<EOF
type: ill
its a trap 0x0 0x7
EOF
RUN

NAME=aesu steps over invalid op by default
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
e io.cache=1
wx 9006909090
aesu 0x4
dr rip
EOF
EXPECT=<<EOF
0x00000004
EOF
RUN

NAME=aesu stops on invalid op with breakoninvalid
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
e io.cache=1
e esil.breakoninvalid=1
wx 9006909090
aesu 0x4
dr rip
EOF
EXPECT=<<EOF
0x00000001
EOF
RUN

NAME=cmd.esil.trap hint TRAP
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
e cmd.esil.trap=?e its a trap
ahe TRAP
aes
EOF
EXPECT=<<EOF
its a trap 0 7
EOF
RUN

NAME=cmd.esil.intr
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx cd21
e cmd.esil.intr=?e its an intr
aes
EOF
EXPECT=<<EOF
its an intr 33 0
EOF
RUN

NAME=cmd.esil.ioer
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx 8900  # mov dword [rax], eax
e cmd.esil.ioer=?e its an ioer
aer rax=0xdeadbeef
aes
EOF
EXPECT=<<EOF
its an ioer 0x0 0x0
its an ioer 0x0 0x0
its an ioer 0x0 0x1
EOF
RUN

NAME=esil.iotrap traps invalid writes
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx 8900  # mov dword [rax], eax
e cmd.esil.trap=?e trapped
aer rax=0xdeadbeef
aes
EOF
EXPECT=<<EOF
trapped 0x0 0xdeadbeef
EOF
RUN

NAME=esil.iotrap=0 ignores invalid writes
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx 8900  # mov dword [rax], eax
e esil.iotrap=0
e cmd.esil.trap=?e trapped
aer rax=0xdeadbeef
aes
EOF
EXPECT=<<EOF
EOF
RUN

NAME=cmd.esil.pin
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx 90
e cmd.esil.pin=?e pin triggered
aep 0x1337
aes
EOF
EXPECT=<<EOF
pin triggered 0x1337
EOF
RUN

NAME=cmd.esil.step
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx 90
e cmd.esil.step=?e step triggered
aes
EOF
EXPECT=<<EOF
step triggered 0x0 0x0
EOF
RUN

NAME=cmd.esil.stepout
FILE=-
ARGS=-a x86 -b 64
CMDS=<<EOF
wx c3
e cmd.esil.stepout=?e stepout triggered
aa
aef 0
EOF
EXPECT=<<EOF
stepout triggered 0 0
EOF
RUN
