NAME=drT
FILE=bins/elf/sse2-add
ARGS=-d
CMDS=drT
EXPECT=<<EOF
gpr
drx
fpu
mmx
xmm
ymm
flg
seg
sys
sec
vc
vcc
ctr
EOF
RUN

NAME=dr gpr
FILE=bins/elf/sse2-add
ARGS=-d
CMDS=dr gpr~[0]
EXPECT=<<EOF
rax
eax
ax
ah
al
rbx
ebx
bx
bh
bl
rcx
ecx
cx
ch
cl
rdx
edx
dx
dh
dl
r8
r8d
r8w
r8b
r9
r9d
r9w
r9b
r10
r10d
r10w
r10b
r11
r11d
r11w
r11b
r12
r12d
r12w
r12b
r13
r13d
r13w
r13b
r14
r14d
r14w
r14b
r15
r15d
r15w
r15b
rsi
esi
si
sil
rdi
edi
di
dil
rsp
esp
sp
spl
rbp
ebp
bp
bpl
rip
cs
rflags
eflags
cf
pf
af
zf
sf
tf
if
df
of
orax
ss
fs
gs
ds
es
fs_base
gs_base
EOF
RUN

NAME=dr all
FILE=bins/elf/sse2-add
ARGS=-d
CMDS=dr all~[0]
EXPECT=<<EOF
r15b
r15w
cwd
r15d
r15
dr0
ymm0
swd
ftw
fop
r14b
r14w
r14d
r14
dr1
frip
r13b
r13w
r13d
r13
dr2
frdp
r12b
r12w
r12d
mxcsr
r12
dr3
mxcr_mask
bpl
bp
ebp
rbp
mm0
st0
ymm1
bl
bx
ebx
rbx
bh
r11b
r11w
r11d
r11
dr6
mm1
st1
r10b
r10w
r10d
r10
dr7
r9b
r9w
r9d
r9
mm2
st2
ymm2
r8b
r8w
r8d
r8
al
ax
eax
rax
mm3
st3
ah
cl
cx
ecx
rcx
ch
dl
dx
edx
rdx
mm4
st4
dh
ymm3
sil
si
esi
rsi
dil
di
edi
rdi
mm5
st5
orax
rip
mm6
st6
ymm4
cs
cf
eflags
pf
rflags
mm7
af
st7
zf
sf
tf
if
df
of
spl
sp
esp
rsp
ss
xmm0h
xmm0
ymm5
fs
xmm0l
gs
xmm1h
xmm1
ds
xmm1l
es
xmm2h
xmm2
ymm6
fs_base
xmm2l
gs_base
xmm3h
xmm3
xmm3l
xmm4h
xmm4
ymm7
xmm4l
xmm5h
xmm5
xmm5l
xmm6h
xmm6
ymm8
xmm6l
xmm7h
xmm7
xmm7l
xmm8h
xmm8
ymm9
xmm8l
xmm9h
xmm9
xmm9l
xmm10h
xmm10
ymm10
xmm10l
xmm11h
xmm11
xmm11l
xmm12h
xmm12
ymm11
xmm12l
xmm13h
xmm13
xmm13l
xmm14h
xmm14
ymm12
xmm14l
xmm15h
xmm15
x64
ymm13
ymm14
ymm15
EOF
RUN

NAME=Conditional dr/ar
FILE=bins/elf/crackme0x00b
CMDS=<<EOF
ar eax=0x1337
e cfg.debug
# The following command is used exactly like this as PANEL_CMD_REGISTERS.
# Here we make sure it does what it should, namely show dr or ar depending on cfg.debug.
%== true `e cfg.debug`; %! dr; %% ar
echo --
ood > $_
e cfg.debug
# mask out anything aslr-dependent
# we don't use ~ below to test the conditional command as-is
dcu 0x080484a2
dr ebx=0x42
dr ecx=0x42
dr edx=0x42
dr esp=0x42
dr ebp=0x42
dr esi=0x42
dr edi=0x42
dr rflags=0
%== true `e cfg.debug`; %! dr; %% ar
EOF
EXPECT=<<EOF
false
oeax = 0x00000000
eax = 0x00001337
ebx = 0x00000000
ecx = 0x00000000
edx = 0x00000000
esi = 0x00000000
edi = 0x00000000
esp = 0x00000000
ebp = 0x00000000
eip = 0x00000000
eflags = 0x00000000
--
true
eax = 0x080485d0
ebx = 0x00000042
ecx = 0x00000042
edx = 0x00000042
esi = 0x00000042
edi = 0x00000042
esp = 0x00000042
ebp = 0x00000042
eip = 0x080484a2
xfs = 0x00000000
xgs = 0x00000063
xcs = 0x00000023
xss = 0x0000002b
rflags = 0x0000000000000202
oeax = 0xffffffff
EOF
RUN
