NAME=omp twice bug
FILE=malloc://1024
CMDS=<<EOF
omf 1 rw
wx 9090
p8 2
on malloc://1024
p8 2
om
omp 1
om
p8 2
EOF
EXPECT=<<EOF
9090
0000
* 2 fd: 4 +0x00000000 0x00000000 - 0x000003ff rw-
- 1 fd: 3 +0x00000000 0x00000000 - 0x000003ff rw-
* 1 fd: 3 +0x00000000 0x00000000 - 0x000003ff rw-
- 2 fd: 4 +0x00000000 0x00000000 - 0x000003ff rw-
9090
EOF
RUN

NAME=io.maps alloc map
FILE=malloc://1024
CMDS=<<EOF
e io.va=true
s 0
b 100
wox 0x10 @ 0
on malloc://0x1000 0x80000 >/dev/null
p8 4 @ 0x80000
EOF
EXPECT=<<EOF
00000000
EOF
RUN

NAME=io.maps: o 100
FILE=malloc://1024
CMDS=<<EOF
s 0
b 100
wox 0x10 @ 0
o malloc://0x1000 0x80000 > /dev/null
e io.va=true
b 0x1000
wow 20 @ 0x80000
b 20
p8 @ 0
p8 @ 90
p8 @ 0x400
p8 @ 0x80000
EOF
EXPECT=<<EOF
1010101010101010101010101010101010101010
1010101010101010101000000000000000000000
ffffffffffffffffffffffffffffffffffffffff
2020202020202020202020202020202020202020
EOF
RUN

NAME=om 0x100;x@0xff
FILE=-
CMDS=<<EOF
e io.va=false
om `o~[0]` 0x100
w pop @ 1
p8 4 @ 0x100
EOF
EXPECT=<<EOF
00000000
EOF
RUN

NAME=o - 0x9000;x@0x8f00
FILE=-
CMDS=<<EOF
o malloc://128 0x9000 > /dev/null
e io.va=true
x 32 @ 0x8ff0
EOF
EXPECT=<<EOF
- offset -  F0F1 F2F3 F4F5 F6F7 F8F9 FAFB FCFD FEFF  0123456789ABCDEF
0x00008ff0  ffff ffff ffff ffff ffff ffff ffff ffff  ................
0x00009000  0000 0000 0000 0000 0000 0000 0000 0000  ................
EOF
RUN

NAME=omfg all rwx
FILE=-
CMDS=<<EOF
e scr.null=true
o malloc://32 0x400
e scr.null=false
omfg-rwx
om~rwx
omfg
om~rwx~?
EOF
EXPECT=<<EOF
2
EOF
RUN

NAME=Opening a new map doesnt set io.a to false
FILE=-
CMDS=<<EOF
e io.va
e scr.null=true
o malloc://32 0x400
e scr.null=false
e io.va
EOF
EXPECT=<<EOF
true
true
EOF
RUN

NAME=omf one mapping
FILE=-
CMDS=<<EOF
omf 1 rwx
om~rwx~?
omf 1 r-x
om~r-x~?
omf 1 --x
om~--x~?
omf 1 -w-
om~-w-~?
EOF
EXPECT=<<EOF
1
1
1
1
EOF
RUN

NAME=io.unalloc off-by-one fix
FILE=bins/elf/analysis/tiny1
CMDS=<<EOF
e asm.comments=false
e io.unalloc=true
e io.unalloc.ch=
pd 6
?e
px 16
EOF
EXPECT=<<EOF
            ;-- entry0:
            0x08048054      b32a           mov bl, 0x2a
            0x08048056      31c0           xor eax, eax
            0x08048058      40             inc eax
            0x08048059      cd80           int 0x80
  0x0804805b   unmapped
  0x0804805c   unmapped

- offset -  5455 5657 5859 5A5B 5C5D 5E5F 6061 6263  456789ABCDEF0123
0x08048054  b32a 31c0 40cd 80                        .*1.@..         
EOF
RUN

NAME=om* order
FILE=bins/elf/before-after-main
CMDS=<<EOF
om
om* > $initial_map
om-*
?e ----
om
?e ----
$initial_map |.
om               # Output must be the same as initial om
EOF
EXPECT=<<EOF
* 3 fd: 3 +0x00000000 0x08048000 - 0x08048a67 r-x fmap.LOAD0
- 2 fd: 3 +0x00000ed4 0x08049ed4 - 0x0804a01f r-- fmap.LOAD1
- 1 fd: 4 +0x00000000 0x0804a020 - 0x0804a023 rw- mmap.LOAD1
----
----
* 3 fd: 3 +0x00000000 0x08048000 - 0x08048a67 r-x fmap.LOAD0
- 2 fd: 3 +0x00000ed4 0x08049ed4 - 0x0804a01f r-- fmap.LOAD1
- 1 fd: 4 +0x00000000 0x0804a020 - 0x0804a023 rw- mmap.LOAD1
EOF
RUN
