NAME=use of dmh, then any command which use grep and index
FILE=bins/elf/simple_malloc_x86_64
ARGS=-d
CMDS=<<EOF
db @ sym.main
dc
dmh > /dev/null
aa > /dev/null
dr r13=rip
pdf @ sym.main~:4
EOF
EXPECT=<<EOF
/ int main(int argc, char **argv, char **envp);
EOF
RUN

NAME=dmh allocated
FILE=bins/elf/simple_malloc_x86_64
ARGS=-d
CMDS=<<EOF
dcu main
dmh | tail -n 2
echo ----
7dso
dmh | tail -n 3
EOF
REGEXP_FILTER_OUT=(status=[a-z]+)|(size=0x[a-f0-9]+)
EXPECT=<<EOF
status=allocated
size=0x11c10
status=free
size=0xf160
status=allocated
size=0x11c10
status=allocated
size=0x20
status=free
size=0xf140
EOF
RUN

NAME=dmh/dmha with memory dump
FILE=bins/heap/linux_glibc-2.30_x64.bin
ARGS=-n
CMDS=<<EOF
#re-map arena and [heap]
om 3 0x7ffff7f8a000 0x898 0x0 rw- arena
om 3 0x555555559000 0x3200 0x898 rw- [heap]

dmha~?0x7ffff7f8a000
e dbg.glibc.tcache=0
dmh~?allocated
e dbg.glibc.tcache=1
dmh~?allocated
EOF
EXPECT=<<EOF
1
3
2
EOF
RUN

NAME=dmht with memory dump
FILE=bins/heap/linux_glibc-2.30_x64.bin
ARGS=-n
CMDS=<<EOF
#re-map arena and [heap]
om 3 0x7ffff7f8a000 0x898 0x0 rw- arena
om 3 0x555555559000 0x3200 0x898 rw- [heap]

e dbg.glibc.tcache=0
dmht~?Items[2]
e dbg.glibc.tcache=1
dmht~?Items[2]
EOF
EXPECT=<<EOF
0
1
EOF
RUN

NAME=dmhl with memory dump
FILE=bins/heap/linux_glibc-2.30_x64.bin
ARGS=-n
CMDS=<<EOF
#re-map arena and [heap]
om 3 0x7ffff7f8a000 0x898 0x0 rw- arena
om 3 0x555555559000 0x3200 0x898 rw- [heap]

dmhl~?0x7ffff7f8a000
e dbg.glibc.tcache=0
dmhl~?0x555555559000
dmhl~?0x555555559010
e dbg.glibc.tcache=1
dmhl~?0x555555559000
dmhl~?0x55555555c1a0
dmhl~?0x55555555c1c0
EOF
EXPECT=<<EOF
1
2
1
1
1
1
EOF
RUN

NAME=check dmhf
FILE=bins/elf/glibc-heap-2.31
ARGS=-Rsetenv=LD_PRELOAD=bins/elf/libc-2.31.so -d
CMDS=<<EOF
db @ 0x004011fa
dc
dmhf~?Chunk
dmhf 1~?Chunk
dmhf 2~?Chunk
dmhf 3~?Chunk
EOF
EXPECT=<<EOF
8
8
0
0
EOF
RUN

NAME=dmhc with memory dump
FILE=bins/heap/linux_glibc-2.30_x64.bin
ARGS=-n
CMDS=<<EOF
#re-map arena and [heap]
om 3 0x7ffff7f8a000 0x898 0x0 rw- arena
om 3 0x555555559000 0x3200 0x898 rw- [heap]
e dbg.glibc.tcache=1
dmhc @ 0x555555559290~?0x20
dmhc @ 0x555555559290~?0x555555559010
dmhc @ 0x55555555c1a0~?0x1a0a
dmhc @ 0x5555555592b0~?0x2ef0
EOF
EXPECT=<<EOF
1
1
1
1
EOF
RUN
