NAME=bflt loading
FILE=bins/bflt/bin.bflt
CMDS=<<EOF
i~format,os,subsys,PIE,endian
iS
iSS
oml
EOF
EXPECT=<<EOF
format   bflt
endian   LE
os       Linux
subsys   uClinux
PIE      true
     paddr   size      vaddr  vsize align perm name   type flags 
-----------------------------------------------------------------
0x00000000   0x40 0x00000000   0x40   0x0 -rwx header      
0x00000040 0x2dfc 0x00000040 0x2dfc   0x0 -rwx text        
0x00002e3c  0x188 0x00002e40  0x188   0x0 -rwx data        
0x00002fc4    0x0 0x00002fc8 0x202c   0x0 -rwx bss         
     paddr   size      vaddr  vsize align perm name 
----------------------------------------------------
0x00000000 0x2e3c 0x00000000 0x2e3c   0x0 -rwx TEXT
0x00002e3c 0x2e3c 0x00002e40 0x21b4   0x0 -rwx DATA
 1 fd: 4 +0x00000000 0x00000000 * 0x00002e3b r-x vmap.hdr+text
 2 fd: 5 +0x00000000 0x00002fc8 - 0x00004ff3 rwx mmap.data+bss
 3 fd: 4 +0x00002e3c 0x00002e40 - 0x00002fc7 r-x vmap.data+bss
EOF
RUN

NAME=bflt relocs + patching
FILE=bins/bflt/bin.bflt
CMDS=<<EOF
ir
px 4 @ 0x74 # text -> text reloc
pv4 @ 0x74 # same, but endian-sensitive
pv4 @ 0x938 # text -> data reloc
pv4 @ 0x2fbc # data -> text reloc
pv4 @ 0x2fb8 # data -> data reloc
# sanity check if code makes sense
pi 1 @ 0x0000016c
EOF
EXPECT=<<EOF
     vaddr      paddr     target type   name 
---------------------------------------------
0x00000074 0x00000074 0x00002e0c SET_32 
0x00000078 0x00000078 0x00000150 SET_32 
0x0000007c 0x0000007c 0x00002df4 SET_32 
0x000000a4 0x000000a4 0x00002fc7 SET_32 
0x000000a8 0x000000a8 0x00002fc4 SET_32 
0x000000ac 0x000000ac 0x00000040 SET_32 
0x000000dc 0x000000dc 0x00002fc4 SET_32 
0x000000e0 0x000000e0 0x00002fc4 SET_32 
0x000000e4 0x000000e4 0x00000040 SET_32 
0x00000110 0x00000110 0x00002fc8 SET_32 
0x00000148 0x00000148 0x00002df0 SET_32 
0x0000014c 0x0000014c 0x00000040 SET_32 
0x0000018c 0x0000018c 0x00002f24 SET_32 
0x000001d4 0x000001d4 0x00002fb0 SET_32 
0x0000020c 0x0000020c 0x00002f34 SET_32 
0x00000260 0x00000260 0x00004fe8 SET_32 
0x00000264 0x00000264 0x00002f34 SET_32 
0x00000474 0x00000474 0x00004fe8 SET_32 
0x00000640 0x00000640 0x00004fcc SET_32 
0x00000678 0x00000678 0x00004fd0 SET_32 
0x0000067c 0x0000067c 0x00000210 SET_32 
0x000006e8 0x000006e8 0x00002fc0 SET_32 
0x000006ec 0x000006ec 0x00002fc4 SET_32 
0x000006f0 0x000006f0 0x00004fd0 SET_32 
0x00000814 0x00000814 0x00004fd0 SET_32 
0x00000818 0x00000818 0x00002fb8 SET_32 
0x0000081c 0x0000081c 0x00002fbc SET_32 
0x00000820 0x00000820 0x00002fbc SET_32 
0x00000824 0x00000824 0x00002fbc SET_32 
0x00000828 0x00000828 0x00002fc0 SET_32 
0x0000082c 0x0000082c 0x00000040 SET_32 
0x00000830 0x00000830 0x00000040 SET_32 
0x000008a8 0x000008a8 0x000008b4 SET_32 
0x000008ac 0x000008ac 0x000008c0 SET_32 
0x000008f0 0x000008f0 0x00004fe8 SET_32 
0x00000938 0x00000938 0x00004fe8 SET_32 
0x00000968 0x00000968 0x00004fe8 SET_32 
0x00000994 0x00000994 0x00004fe8 SET_32 
0x00000a68 0x00000a68 0x00004fe8 SET_32 
0x00000c6c 0x00000c6c 0x00004fe8 SET_32 
0x00000f68 0x00000f68 0x00004fec SET_32 
0x00000f6c 0x00000f6c 0x000001d8 SET_32 
0x00000fac 0x00000fac 0x00004fe8 SET_32 
0x00000fd8 0x00000fd8 0x00004fe8 SET_32 
0x000010a8 0x000010a8 0x00004fe8 SET_32 
0x00001108 0x00001108 0x00004fe8 SET_32 
0x00001620 0x00001620 0x00004fe8 SET_32 
0x00001820 0x00001820 0x0000236c SET_32 
0x00001824 0x00001824 0x00002374 SET_32 
0x00001828 0x00001828 0x0000237c SET_32 
0x00001950 0x00001950 0x00000040 SET_32 
0x00001954 0x00001954 0x00002e40 SET_32 
0x00001958 0x00001958 0x00002f00 SET_32 
0x00001d58 0x00001d58 0x00001d6c SET_32 
0x00001d5c 0x00001d5c 0x00001d88 SET_32 
0x00001d60 0x00001d60 0x00001d80 SET_32 
0x00001d64 0x00001d64 0x00001d88 SET_32 
0x00001d68 0x00001d68 0x00001d88 SET_32 
0x00001de4 0x00001de4 0x00001df8 SET_32 
0x00001de8 0x00001de8 0x00001e14 SET_32 
0x00001dec 0x00001dec 0x00001e0c SET_32 
0x00001df0 0x00001df0 0x00001e14 SET_32 
0x00001df4 0x00001df4 0x00001e14 SET_32 
0x00002368 0x00002368 0x00000040 SET_32 
0x0000239c 0x0000239c 0x000024e8 SET_32 
0x000023a0 0x000023a0 0x000023b0 SET_32 
0x000023a4 0x000023a4 0x000023ec SET_32 
0x000023a8 0x000023a8 0x00002464 SET_32 
0x000023ac 0x000023ac 0x000023fc SET_32 
0x00002f34 0x00002f30 0x00002f38 SET_32 
0x00002f40 0x00002f3c 0x00002fc9 SET_32 
0x00002f44 0x00002f40 0x00003fc9 SET_32 
0x00002f48 0x00002f44 0x00002fc9 SET_32 
0x00002f4c 0x00002f48 0x00002fc9 SET_32 
0x00002f50 0x00002f4c 0x00002fc9 SET_32 
0x00002f54 0x00002f50 0x00002fc9 SET_32 
0x00002f58 0x00002f54 0x00002f5c SET_32 
0x00002f64 0x00002f60 0x00003fc9 SET_32 
0x00002f68 0x00002f64 0x00004fc9 SET_32 
0x00002f6c 0x00002f68 0x00003fc9 SET_32 
0x00002f70 0x00002f6c 0x00003fc9 SET_32 
0x00002f74 0x00002f70 0x00003fc9 SET_32 
0x00002f78 0x00002f74 0x00003fc9 SET_32 
0x00002f7c 0x00002f78 0x00002f80 SET_32 
0x00002fa4 0x00002fa0 0x00002f5c SET_32 
0x00002fa8 0x00002fa4 0x00002f38 SET_32 
0x00002fac 0x00002fa8 0x00002f80 SET_32 
0x00002fb0 0x00002fac 0x00002f5c SET_32 
0x00002fb4 0x00002fb0 0x00002f38 SET_32 
0x00002fb8 0x00002fb4 0x00002f29 SET_32 
0x00002fbc 0x00002fb8 0x00000114 SET_32 
0x00002fc0 0x00002fbc 0x000000e8 SET_32 
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000074  0c2e 0000                                ....
0x00002e0c
0x00004fe8
0x00000114
0x00002f29
ldr r0, str.Hola
EOF
RUN

NAME=bflt baddr
FILE=bins/bflt/bin.bflt
ARGS=-B0x6908000
CMDS=<<EOF
iS
iSS
oml
ir
px 4 @ 0x6908000+0x74 # text -> text reloc
pv4 @ 0x6908000+0x74 # same, but endian-sensitive
pv4 @ 0x6908000+0x938 # text -> data reloc
pv4 @ 0x6908000+0x2fbc # data -> text reloc
pv4 @ 0x6908000+0x2fb8 # data -> data reloc
# sanity check if code makes sense
pi 1 @ 0x6908000+0x0000016c
EOF
EXPECT=<<EOF
     paddr   size      vaddr  vsize align perm name   type flags 
-----------------------------------------------------------------
0x00000000   0x40 0x06908000   0x40   0x0 -rwx header      
0x00000040 0x2dfc 0x06908040 0x2dfc   0x0 -rwx text        
0x00002e3c  0x188 0x0690ae40  0x188   0x0 -rwx data        
0x00002fc4    0x0 0x0690afc8 0x202c   0x0 -rwx bss         
     paddr   size      vaddr  vsize align perm name 
----------------------------------------------------
0x00000000 0x2e3c 0x06908000 0x2e3c   0x0 -rwx TEXT
0x00002e3c 0x2e3c 0x0690ae40 0x21b4   0x0 -rwx DATA
 1 fd: 4 +0x00000000 0x06908000 * 0x0690ae3b r-x vmap.hdr+text
 2 fd: 5 +0x00000000 0x0690afc8 - 0x0690cff3 rwx mmap.data+bss
 3 fd: 4 +0x00002e3c 0x0690ae40 - 0x0690afc7 r-x vmap.data+bss
     vaddr      paddr     target type   name 
---------------------------------------------
0x06908074 0x00000074 0x0690ae0c SET_32 
0x06908078 0x00000078 0x06908150 SET_32 
0x0690807c 0x0000007c 0x0690adf4 SET_32 
0x069080a4 0x000000a4 0x0690afc7 SET_32 
0x069080a8 0x000000a8 0x0690afc4 SET_32 
0x069080ac 0x000000ac 0x06908040 SET_32 
0x069080dc 0x000000dc 0x0690afc4 SET_32 
0x069080e0 0x000000e0 0x0690afc4 SET_32 
0x069080e4 0x000000e4 0x06908040 SET_32 
0x06908110 0x00000110 0x0690afc8 SET_32 
0x06908148 0x00000148 0x0690adf0 SET_32 
0x0690814c 0x0000014c 0x06908040 SET_32 
0x0690818c 0x0000018c 0x0690af24 SET_32 
0x069081d4 0x000001d4 0x0690afb0 SET_32 
0x0690820c 0x0000020c 0x0690af34 SET_32 
0x06908260 0x00000260 0x0690cfe8 SET_32 
0x06908264 0x00000264 0x0690af34 SET_32 
0x06908474 0x00000474 0x0690cfe8 SET_32 
0x06908640 0x00000640 0x0690cfcc SET_32 
0x06908678 0x00000678 0x0690cfd0 SET_32 
0x0690867c 0x0000067c 0x06908210 SET_32 
0x069086e8 0x000006e8 0x0690afc0 SET_32 
0x069086ec 0x000006ec 0x0690afc4 SET_32 
0x069086f0 0x000006f0 0x0690cfd0 SET_32 
0x06908814 0x00000814 0x0690cfd0 SET_32 
0x06908818 0x00000818 0x0690afb8 SET_32 
0x0690881c 0x0000081c 0x0690afbc SET_32 
0x06908820 0x00000820 0x0690afbc SET_32 
0x06908824 0x00000824 0x0690afbc SET_32 
0x06908828 0x00000828 0x0690afc0 SET_32 
0x0690882c 0x0000082c 0x06908040 SET_32 
0x06908830 0x00000830 0x06908040 SET_32 
0x069088a8 0x000008a8 0x069088b4 SET_32 
0x069088ac 0x000008ac 0x069088c0 SET_32 
0x069088f0 0x000008f0 0x0690cfe8 SET_32 
0x06908938 0x00000938 0x0690cfe8 SET_32 
0x06908968 0x00000968 0x0690cfe8 SET_32 
0x06908994 0x00000994 0x0690cfe8 SET_32 
0x06908a68 0x00000a68 0x0690cfe8 SET_32 
0x06908c6c 0x00000c6c 0x0690cfe8 SET_32 
0x06908f68 0x00000f68 0x0690cfec SET_32 
0x06908f6c 0x00000f6c 0x069081d8 SET_32 
0x06908fac 0x00000fac 0x0690cfe8 SET_32 
0x06908fd8 0x00000fd8 0x0690cfe8 SET_32 
0x069090a8 0x000010a8 0x0690cfe8 SET_32 
0x06909108 0x00001108 0x0690cfe8 SET_32 
0x06909620 0x00001620 0x0690cfe8 SET_32 
0x06909820 0x00001820 0x0690a36c SET_32 
0x06909824 0x00001824 0x0690a374 SET_32 
0x06909828 0x00001828 0x0690a37c SET_32 
0x06909950 0x00001950 0x06908040 SET_32 
0x06909954 0x00001954 0x0690ae40 SET_32 
0x06909958 0x00001958 0x0690af00 SET_32 
0x06909d58 0x00001d58 0x06909d6c SET_32 
0x06909d5c 0x00001d5c 0x06909d88 SET_32 
0x06909d60 0x00001d60 0x06909d80 SET_32 
0x06909d64 0x00001d64 0x06909d88 SET_32 
0x06909d68 0x00001d68 0x06909d88 SET_32 
0x06909de4 0x00001de4 0x06909df8 SET_32 
0x06909de8 0x00001de8 0x06909e14 SET_32 
0x06909dec 0x00001dec 0x06909e0c SET_32 
0x06909df0 0x00001df0 0x06909e14 SET_32 
0x06909df4 0x00001df4 0x06909e14 SET_32 
0x0690a368 0x00002368 0x06908040 SET_32 
0x0690a39c 0x0000239c 0x0690a4e8 SET_32 
0x0690a3a0 0x000023a0 0x0690a3b0 SET_32 
0x0690a3a4 0x000023a4 0x0690a3ec SET_32 
0x0690a3a8 0x000023a8 0x0690a464 SET_32 
0x0690a3ac 0x000023ac 0x0690a3fc SET_32 
0x0690af34 0x00002f30 0x0690af38 SET_32 
0x0690af40 0x00002f3c 0x0690afc9 SET_32 
0x0690af44 0x00002f40 0x0690bfc9 SET_32 
0x0690af48 0x00002f44 0x0690afc9 SET_32 
0x0690af4c 0x00002f48 0x0690afc9 SET_32 
0x0690af50 0x00002f4c 0x0690afc9 SET_32 
0x0690af54 0x00002f50 0x0690afc9 SET_32 
0x0690af58 0x00002f54 0x0690af5c SET_32 
0x0690af64 0x00002f60 0x0690bfc9 SET_32 
0x0690af68 0x00002f64 0x0690cfc9 SET_32 
0x0690af6c 0x00002f68 0x0690bfc9 SET_32 
0x0690af70 0x00002f6c 0x0690bfc9 SET_32 
0x0690af74 0x00002f70 0x0690bfc9 SET_32 
0x0690af78 0x00002f74 0x0690bfc9 SET_32 
0x0690af7c 0x00002f78 0x0690af80 SET_32 
0x0690afa4 0x00002fa0 0x0690af5c SET_32 
0x0690afa8 0x00002fa4 0x0690af38 SET_32 
0x0690afac 0x00002fa8 0x0690af80 SET_32 
0x0690afb0 0x00002fac 0x0690af5c SET_32 
0x0690afb4 0x00002fb0 0x0690af38 SET_32 
0x0690afb8 0x00002fb4 0x0690af29 SET_32 
0x0690afbc 0x00002fb8 0x06908114 SET_32 
0x0690afc0 0x00002fbc 0x069080e8 SET_32 
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x06908074  0cae 9006                                ....
0x0690ae0c
0x0690cfe8
0x06908114
0x0690af29
ldr r0, str.Hola
EOF
RUN

NAME=bflt no relocs
FILE=bins/bflt/bin.bflt
ARGS=-e bin.relocs=0
CMDS=<<EOF
ir
px 4 @ 0x74 # text -> text reloc
pv4 @ 0x74 # same, but endian-sensitive
pv4 @ 0x938 # text -> data reloc
pv4 @ 0x2fbc # data -> text reloc
pv4 @ 0x2fb8 # data -> data reloc
# sanity check if code makes sense
pi 1 @ 0x0000016c
EOF
EXPECT=<<EOF
     vaddr      paddr     target type   name 
---------------------------------------------
0x00000074 0x00000074 0x00002e0c SET_32 
0x00000078 0x00000078 0x00000150 SET_32 
0x0000007c 0x0000007c 0x00002df4 SET_32 
0x000000a4 0x000000a4 0x00002fc7 SET_32 
0x000000a8 0x000000a8 0x00002fc4 SET_32 
0x000000ac 0x000000ac 0x00000040 SET_32 
0x000000dc 0x000000dc 0x00002fc4 SET_32 
0x000000e0 0x000000e0 0x00002fc4 SET_32 
0x000000e4 0x000000e4 0x00000040 SET_32 
0x00000110 0x00000110 0x00002fc8 SET_32 
0x00000148 0x00000148 0x00002df0 SET_32 
0x0000014c 0x0000014c 0x00000040 SET_32 
0x0000018c 0x0000018c 0x00002f24 SET_32 
0x000001d4 0x000001d4 0x00002fb0 SET_32 
0x0000020c 0x0000020c 0x00002f34 SET_32 
0x00000260 0x00000260 0x00004fe8 SET_32 
0x00000264 0x00000264 0x00002f34 SET_32 
0x00000474 0x00000474 0x00004fe8 SET_32 
0x00000640 0x00000640 0x00004fcc SET_32 
0x00000678 0x00000678 0x00004fd0 SET_32 
0x0000067c 0x0000067c 0x00000210 SET_32 
0x000006e8 0x000006e8 0x00002fc0 SET_32 
0x000006ec 0x000006ec 0x00002fc4 SET_32 
0x000006f0 0x000006f0 0x00004fd0 SET_32 
0x00000814 0x00000814 0x00004fd0 SET_32 
0x00000818 0x00000818 0x00002fb8 SET_32 
0x0000081c 0x0000081c 0x00002fbc SET_32 
0x00000820 0x00000820 0x00002fbc SET_32 
0x00000824 0x00000824 0x00002fbc SET_32 
0x00000828 0x00000828 0x00002fc0 SET_32 
0x0000082c 0x0000082c 0x00000040 SET_32 
0x00000830 0x00000830 0x00000040 SET_32 
0x000008a8 0x000008a8 0x000008b4 SET_32 
0x000008ac 0x000008ac 0x000008c0 SET_32 
0x000008f0 0x000008f0 0x00004fe8 SET_32 
0x00000938 0x00000938 0x00004fe8 SET_32 
0x00000968 0x00000968 0x00004fe8 SET_32 
0x00000994 0x00000994 0x00004fe8 SET_32 
0x00000a68 0x00000a68 0x00004fe8 SET_32 
0x00000c6c 0x00000c6c 0x00004fe8 SET_32 
0x00000f68 0x00000f68 0x00004fec SET_32 
0x00000f6c 0x00000f6c 0x000001d8 SET_32 
0x00000fac 0x00000fac 0x00004fe8 SET_32 
0x00000fd8 0x00000fd8 0x00004fe8 SET_32 
0x000010a8 0x000010a8 0x00004fe8 SET_32 
0x00001108 0x00001108 0x00004fe8 SET_32 
0x00001620 0x00001620 0x00004fe8 SET_32 
0x00001820 0x00001820 0x0000236c SET_32 
0x00001824 0x00001824 0x00002374 SET_32 
0x00001828 0x00001828 0x0000237c SET_32 
0x00001950 0x00001950 0x00000040 SET_32 
0x00001954 0x00001954 0x00002e40 SET_32 
0x00001958 0x00001958 0x00002f00 SET_32 
0x00001d58 0x00001d58 0x00001d6c SET_32 
0x00001d5c 0x00001d5c 0x00001d88 SET_32 
0x00001d60 0x00001d60 0x00001d80 SET_32 
0x00001d64 0x00001d64 0x00001d88 SET_32 
0x00001d68 0x00001d68 0x00001d88 SET_32 
0x00001de4 0x00001de4 0x00001df8 SET_32 
0x00001de8 0x00001de8 0x00001e14 SET_32 
0x00001dec 0x00001dec 0x00001e0c SET_32 
0x00001df0 0x00001df0 0x00001e14 SET_32 
0x00001df4 0x00001df4 0x00001e14 SET_32 
0x00002368 0x00002368 0x00000040 SET_32 
0x0000239c 0x0000239c 0x000024e8 SET_32 
0x000023a0 0x000023a0 0x000023b0 SET_32 
0x000023a4 0x000023a4 0x000023ec SET_32 
0x000023a8 0x000023a8 0x00002464 SET_32 
0x000023ac 0x000023ac 0x000023fc SET_32 
0x00002f34 0x00002f30 0x00002f38 SET_32 
0x00002f40 0x00002f3c 0x00002fc9 SET_32 
0x00002f44 0x00002f40 0x00003fc9 SET_32 
0x00002f48 0x00002f44 0x00002fc9 SET_32 
0x00002f4c 0x00002f48 0x00002fc9 SET_32 
0x00002f50 0x00002f4c 0x00002fc9 SET_32 
0x00002f54 0x00002f50 0x00002fc9 SET_32 
0x00002f58 0x00002f54 0x00002f5c SET_32 
0x00002f64 0x00002f60 0x00003fc9 SET_32 
0x00002f68 0x00002f64 0x00004fc9 SET_32 
0x00002f6c 0x00002f68 0x00003fc9 SET_32 
0x00002f70 0x00002f6c 0x00003fc9 SET_32 
0x00002f74 0x00002f70 0x00003fc9 SET_32 
0x00002f78 0x00002f74 0x00003fc9 SET_32 
0x00002f7c 0x00002f78 0x00002f80 SET_32 
0x00002fa4 0x00002fa0 0x00002f5c SET_32 
0x00002fa8 0x00002fa4 0x00002f38 SET_32 
0x00002fac 0x00002fa8 0x00002f80 SET_32 
0x00002fb0 0x00002fac 0x00002f5c SET_32 
0x00002fb4 0x00002fb0 0x00002f38 SET_32 
0x00002fb8 0x00002fb4 0x00002f29 SET_32 
0x00002fbc 0x00002fb8 0x00000114 SET_32 
0x00002fc0 0x00002fbc 0x000000e8 SET_32 
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000074  0000 2dcc                                ..-.
0xcc2d0000
0xa44f0000
0xd4000000
0xe52e0000
ldr r0, [0x0000018c]
EOF
RUN

NAME=bflt baddr
FILE=bins/bflt/bin.bflt
ARGS=-B0x6908000
CMDS=<<EOF
iS
iSS
oml
ir
px 4 @ 0x6908000+0x74 # text -> text reloc
pv4 @ 0x6908000+0x74 # same, but endian-sensitive
pv4 @ 0x6908000+0x938 # text -> data reloc
pv4 @ 0x6908000+0x2fbc # data -> text reloc
pv4 @ 0x6908000+0x2fb8 # data -> data reloc
# sanity check if code makes sense
pi 1 @ 0x6908000+0x0000016c
EOF
EXPECT=<<EOF
     paddr   size      vaddr  vsize align perm name   type flags 
-----------------------------------------------------------------
0x00000000   0x40 0x06908000   0x40   0x0 -rwx header      
0x00000040 0x2dfc 0x06908040 0x2dfc   0x0 -rwx text        
0x00002e3c  0x188 0x0690ae40  0x188   0x0 -rwx data        
0x00002fc4    0x0 0x0690afc8 0x202c   0x0 -rwx bss         
     paddr   size      vaddr  vsize align perm name 
----------------------------------------------------
0x00000000 0x2e3c 0x06908000 0x2e3c   0x0 -rwx TEXT
0x00002e3c 0x2e3c 0x0690ae40 0x21b4   0x0 -rwx DATA
 1 fd: 4 +0x00000000 0x06908000 * 0x0690ae3b r-x vmap.hdr+text
 2 fd: 5 +0x00000000 0x0690afc8 - 0x0690cff3 rwx mmap.data+bss
 3 fd: 4 +0x00002e3c 0x0690ae40 - 0x0690afc7 r-x vmap.data+bss
     vaddr      paddr     target type   name 
---------------------------------------------
0x06908074 0x00000074 0x0690ae0c SET_32 
0x06908078 0x00000078 0x06908150 SET_32 
0x0690807c 0x0000007c 0x0690adf4 SET_32 
0x069080a4 0x000000a4 0x0690afc7 SET_32 
0x069080a8 0x000000a8 0x0690afc4 SET_32 
0x069080ac 0x000000ac 0x06908040 SET_32 
0x069080dc 0x000000dc 0x0690afc4 SET_32 
0x069080e0 0x000000e0 0x0690afc4 SET_32 
0x069080e4 0x000000e4 0x06908040 SET_32 
0x06908110 0x00000110 0x0690afc8 SET_32 
0x06908148 0x00000148 0x0690adf0 SET_32 
0x0690814c 0x0000014c 0x06908040 SET_32 
0x0690818c 0x0000018c 0x0690af24 SET_32 
0x069081d4 0x000001d4 0x0690afb0 SET_32 
0x0690820c 0x0000020c 0x0690af34 SET_32 
0x06908260 0x00000260 0x0690cfe8 SET_32 
0x06908264 0x00000264 0x0690af34 SET_32 
0x06908474 0x00000474 0x0690cfe8 SET_32 
0x06908640 0x00000640 0x0690cfcc SET_32 
0x06908678 0x00000678 0x0690cfd0 SET_32 
0x0690867c 0x0000067c 0x06908210 SET_32 
0x069086e8 0x000006e8 0x0690afc0 SET_32 
0x069086ec 0x000006ec 0x0690afc4 SET_32 
0x069086f0 0x000006f0 0x0690cfd0 SET_32 
0x06908814 0x00000814 0x0690cfd0 SET_32 
0x06908818 0x00000818 0x0690afb8 SET_32 
0x0690881c 0x0000081c 0x0690afbc SET_32 
0x06908820 0x00000820 0x0690afbc SET_32 
0x06908824 0x00000824 0x0690afbc SET_32 
0x06908828 0x00000828 0x0690afc0 SET_32 
0x0690882c 0x0000082c 0x06908040 SET_32 
0x06908830 0x00000830 0x06908040 SET_32 
0x069088a8 0x000008a8 0x069088b4 SET_32 
0x069088ac 0x000008ac 0x069088c0 SET_32 
0x069088f0 0x000008f0 0x0690cfe8 SET_32 
0x06908938 0x00000938 0x0690cfe8 SET_32 
0x06908968 0x00000968 0x0690cfe8 SET_32 
0x06908994 0x00000994 0x0690cfe8 SET_32 
0x06908a68 0x00000a68 0x0690cfe8 SET_32 
0x06908c6c 0x00000c6c 0x0690cfe8 SET_32 
0x06908f68 0x00000f68 0x0690cfec SET_32 
0x06908f6c 0x00000f6c 0x069081d8 SET_32 
0x06908fac 0x00000fac 0x0690cfe8 SET_32 
0x06908fd8 0x00000fd8 0x0690cfe8 SET_32 
0x069090a8 0x000010a8 0x0690cfe8 SET_32 
0x06909108 0x00001108 0x0690cfe8 SET_32 
0x06909620 0x00001620 0x0690cfe8 SET_32 
0x06909820 0x00001820 0x0690a36c SET_32 
0x06909824 0x00001824 0x0690a374 SET_32 
0x06909828 0x00001828 0x0690a37c SET_32 
0x06909950 0x00001950 0x06908040 SET_32 
0x06909954 0x00001954 0x0690ae40 SET_32 
0x06909958 0x00001958 0x0690af00 SET_32 
0x06909d58 0x00001d58 0x06909d6c SET_32 
0x06909d5c 0x00001d5c 0x06909d88 SET_32 
0x06909d60 0x00001d60 0x06909d80 SET_32 
0x06909d64 0x00001d64 0x06909d88 SET_32 
0x06909d68 0x00001d68 0x06909d88 SET_32 
0x06909de4 0x00001de4 0x06909df8 SET_32 
0x06909de8 0x00001de8 0x06909e14 SET_32 
0x06909dec 0x00001dec 0x06909e0c SET_32 
0x06909df0 0x00001df0 0x06909e14 SET_32 
0x06909df4 0x00001df4 0x06909e14 SET_32 
0x0690a368 0x00002368 0x06908040 SET_32 
0x0690a39c 0x0000239c 0x0690a4e8 SET_32 
0x0690a3a0 0x000023a0 0x0690a3b0 SET_32 
0x0690a3a4 0x000023a4 0x0690a3ec SET_32 
0x0690a3a8 0x000023a8 0x0690a464 SET_32 
0x0690a3ac 0x000023ac 0x0690a3fc SET_32 
0x0690af34 0x00002f30 0x0690af38 SET_32 
0x0690af40 0x00002f3c 0x0690afc9 SET_32 
0x0690af44 0x00002f40 0x0690bfc9 SET_32 
0x0690af48 0x00002f44 0x0690afc9 SET_32 
0x0690af4c 0x00002f48 0x0690afc9 SET_32 
0x0690af50 0x00002f4c 0x0690afc9 SET_32 
0x0690af54 0x00002f50 0x0690afc9 SET_32 
0x0690af58 0x00002f54 0x0690af5c SET_32 
0x0690af64 0x00002f60 0x0690bfc9 SET_32 
0x0690af68 0x00002f64 0x0690cfc9 SET_32 
0x0690af6c 0x00002f68 0x0690bfc9 SET_32 
0x0690af70 0x00002f6c 0x0690bfc9 SET_32 
0x0690af74 0x00002f70 0x0690bfc9 SET_32 
0x0690af78 0x00002f74 0x0690bfc9 SET_32 
0x0690af7c 0x00002f78 0x0690af80 SET_32 
0x0690afa4 0x00002fa0 0x0690af5c SET_32 
0x0690afa8 0x00002fa4 0x0690af38 SET_32 
0x0690afac 0x00002fa8 0x0690af80 SET_32 
0x0690afb0 0x00002fac 0x0690af5c SET_32 
0x0690afb4 0x00002fb0 0x0690af38 SET_32 
0x0690afb8 0x00002fb4 0x0690af29 SET_32 
0x0690afbc 0x00002fb8 0x06908114 SET_32 
0x0690afc0 0x00002fbc 0x069080e8 SET_32 
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x06908074  0cae 9006                                ....
0x0690ae0c
0x0690cfe8
0x06908114
0x0690af29
ldr r0, str.Hola
EOF
RUN

NAME=busybox arm32 data reference chain
FILE=bins/bflt/busybox-arm32.bflt
ARGS=-B0x4080000
CMDS=<<EOF
aae
aav
echo ------ reloc to string
pd 1 @ 0x0408b884
echo ------ string (reloc target of above)
pd 1 @ 0x040af7c4
echo ------ nice disassembly showing the string and xrefs
pd 1 @ 0x0408b780
axf @ 0x0408b780
EOF
EXPECT=<<EOF
------ reloc to string
            ; DATA XREFS from fcn.0408aafc @ +0xc84, +0xd80
            0x0408b884      .dword 0x040af7c4 ; str.Success            ; RELOC 32 
------ string (reloc target of above)
            ; UNKNOWN XREFS from fcn.0408aafc @ +0xc84, +0xc88, +0xd80, +0xd88
            ;-- str.Success:
            0x040af7c4     .string "Success" ; len=8                   ; RELOC TARGET 32 
------ nice disassembly showing the string and xrefs
            0x0408b780      ldr   r3, str.Success                      ; [0x40af7c4:4]=0x63637553 ; "Success"
d 0x408b884 streq pc, [sl], -str.Success
d 0x40af7c4 str.Success
EOF
RUN

NAME=busybox m68k with gotpic
FILE=bins/bflt/busybox-m68k.bflt
ARGS=-a m68k -e cfg.bigendian=true -B 0x41e40000
CMDS=<<EOF
i~format,os,subsys,PIE,endian
echo ------ got relocs (begin)
ir~:0..10
pv4 8 @ 0x41e6a8a0
echo ------ got relocs (end)
ir~0x41e6bf50
ir~0x41e6bf54 # terminator here, should show nothing
pv4 8 @ 0x41e6bf38
echo ------ regular relocs
ir~0x41e6c030
pv4 @ 0x41e6c030
EOF
EXPECT=<<EOF
format   bflt
endian   BE
os       Linux
subsys   uClinux
PIE      true
------ got relocs (begin)
     vaddr      paddr     target type   name 
---------------------------------------------
0x41e6a8a0 0x0002a88c 0x00000000 SET_32 
0x41e6a8a4 0x0002a890 0x00000000 SET_32 
0x41e6a8a8 0x0002a894 0x00000000 SET_32 
0x41e6a8ac 0x0002a898 0x41e60330 SET_32 
0x41e6a8b0 0x0002a89c 0x41e4b286 SET_32 
0x41e6a8b4 0x0002a8a0 0x41e44664 SET_32 
0x41e6a8b8 0x0002a8a4 0x41e6a670 SET_32 
0x41e6a8bc 0x0002a8a8 0x41e683f6 SET_32 
0x00000000
0x00000000
0x00000000
0x41e60330
0x41e4b286
0x41e44664
0x41e6a670
0x41e683f6
------ got relocs (end)
0x41e6bf50 0x0002bf3c 0x00000000 SET_32 
0x41e6a2a9
0x41e460e8
0x41e6a6af
0x00000000
0x00000000
0x00000000
0x00000000
0xffffffff
------ regular relocs
0x41e6a8f0 0x0002a8dc 0x41e6c030 SET_32 
0x41e6c030 0x0002c01c 0x41e5df6c SET_32 
0x41e5df6c
EOF
RUN

