NAME=ELF mini debug symbols keep distinct definitions at their original addresses
FILE=bins/elf/ls-toybox
CMDS=<<EOF
is~_ZL8snprintf[1,2,5]
is~_ZL7sprintf~?
isq~same_
is~ main$[1,2,5]
iiq~android.symtab
iiq~vsnprintf
ir~vsnprintf
EOF
EXPECT=<<EOF
0x00033410 0x00033410 144
0x00038ba0 0x00038ba0 140
0x00039718 0x00039718 144
0x0003bfd4 0x0003bfd4 140
0x00053034 0x00053034 144
0x000588b4 0x000588b4 136
0x0005d680 0x0005d680 144
0x00063898 0x00063898 140
0x00063ce8 0x00063ce8 140
0x0006dd10 0x0006dd10 132
0x0006f1e4 0x0006f1e4 132
29
0x00031da0 48 same_dev_ino
0x00031da0 48 same_file
0x000384a0 0x000384a0 100
__vsnprintf_chk
vsnprintf
0x0007b658 0x0007b658 SET_64 1026  __vsnprintf_chk
0x0007b840 0x0007b840 SET_64 1026  vsnprintf
EOF
RUN

NAME=ELF mini debug symbols rebase without changing file offsets or relocation identities
FILE=bins/elf/ls-toybox
ARGS=-B 0x100000000 -e bin.relocs.apply=true
CMDS=<<EOF
is~_ZL8snprintf[1,2,5]:0
is~ main$[1,2,5]
ir~vsnprintf
EOF
EXPECT=<<EOF
0x00033410 0x100033410 144
0x000384a0 0x1000384a0 100
0x10007b658 0x0007b658 SET_64 1026  __vsnprintf_chk
0x10007b840 0x0007b840 SET_64 1026  vsnprintf
EOF
RUN

NAME=ELF mini debug symbols out of proportion to the file are ignored
FILE=malloc://508
CMDS=<<EOF
wx 7f454c4602010100000000000000000003003e000100000000000000000000000000000000000000600000000000000000000000400038000000400003000100002e7368737472746162002e676e755f6465627567646174610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000300000000000000000000000000000000000000400000000000000020000000000000000000000000000000010000000000000000000000000000000b00000001000000000000000000000000000000000000002001000000000000dc00000000000000000000000000000001000000000000000000000000000000fd377a585a000004e6d6b446020021011c00000010cf58cce0bc9f009a5d003f914584683d89a6da8ae183324ef1ee3a336ab595d9c1bfb1f82007eabd85233dfb64184d4a0a777a6627907235d01c97e1ed3bc3373263ae6e31be2fdfd95675102e13e70bcd07e6fd0c9c8e80eacfac3db67a0de0d5b960666618532a611ff889c918304037ffd461df9bc4b523b7f98936c6957e50d154bb928d12371030ee3c71c2e21bdd224fb118029cd1d1764ebab9963104ae7f00000000007e15c3d4954ebd790001b601a0f90200dd3eeef7b1c467fb020000000004595a
oba 0
iS~.gnu_debugdata~?
isq~?
EOF
EXPECT=<<EOF
1
0
EOF
RUN


NAME=ELF mini debug section larger than the file is rejected before reading it
FILE=malloc://298
CMDS=<<EOF
wx 7f454c4602010100000000000000000003003e0001000000000000000000000000000000000000006a0000000000000000000000400038000000400003000100002e7368737472746162002e676e755f64656275676461746100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001000000030000000000000000000000000000000000000040000000000000001a000000000000000000000000000000010000000000000000000000000000000b00000001000000000000000000000000000000000000005a00000000000000ffffff7f00000000000000000000000001000000000000000000000000000000
oba 0
iS~.gnu_debugdata[1,2]
isj
EOF
EXPECT=<<EOF
0x0000005a 0x7fffffff
[]
EOF
EXPECT_ERR=
RUN
