NAME=ELF: arm64 relocs crashing
FILE=-
CMDS=!!rabin2 -qzz bins/elf/librsjni_androix.so~?
EXPECT=<<EOF
548
EOF
RUN

NAME=ELF: arm64 relocs crashing
FILE=bins/elf/librsjni_androix.so
CMDS=ir
EXPECT=<<EOF
vaddr      paddr      type   ntype name
---------------------------------------
0x0000d008 0x0000d008 ADD_64 1027   0x000093a8
0x0000d010 0x0000d010 ADD_64 1027   0x000093b0
0x0000d018 0x0000d018 ADD_64 1027   0x000002cc
0x0000d020 0x0000d020 ADD_64 1027   0x0000a2c0
0x0000d028 0x0000d028 ADD_64 1027   0x00009d15
0x0000d030 0x0000d030 ADD_64 1027   0x000003e4
0x0000d038 0x0000d038 ADD_64 1027   0x0000a3f5
0x0000d040 0x0000d040 ADD_64 1027   0x000094b0
0x0000d048 0x0000d048 ADD_64 1027   0x00000458
0x0000d050 0x0000d050 ADD_64 1027   0x0000a599
0x0000d058 0x0000d058 ADD_64 1027   0x00008eab
0x0000d060 0x0000d060 ADD_64 1027   0x00000468
0x0000d068 0x0000d068 ADD_64 1027   0x000098ae
0x0000d070 0x0000d070 ADD_64 1027   0x000089a9
0x0000d078 0x0000d078 ADD_64 1027   0x0000047c
0x0000d080 0x0000d080 ADD_64 1027   0x000094b4
0x0000d088 0x0000d088 ADD_64 1027   0x0000acc2
0x0000d090 0x0000d090 ADD_64 1027   0x00000498
0x0000d098 0x0000d098 ADD_64 1027   0x0000a403
0x0000d0a0 0x0000d0a0 ADD_64 1027   0x00008ff8
0x0000d0a8 0x0000d0a8 ADD_64 1027   0x00000578
0x0000d0b0 0x0000d0b0 ADD_64 1027   0x0000a41b
0x0000d0b8 0x0000d0b8 ADD_64 1027   0x0000acc2
0x0000d0c0 0x0000d0c0 ADD_64 1027   0x0000060c
0x0000d0c8 0x0000d0c8 ADD_64 1027   0x00008660
0x0000d0d0 0x0000d0d0 ADD_64 1027   0x00008eab
0x0000d0d8 0x0000d0d8 ADD_64 1027   0x000006d8
0x0000d0e0 0x0000d0e0 ADD_64 1027   0x000097f3
0x0000d0e8 0x0000d0e8 ADD_64 1027   0x00008eab
0x0000d0f0 0x0000d0f0 ADD_64 1027   0x000006ec
0x0000d0f8 0x0000d0f8 ADD_64 1027   0x00008675
0x0000d100 0x0000d100 ADD_64 1027   0x00008810
0x0000d108 0x0000d108 ADD_64 1027   0x00000700
0x0000d110 0x0000d110 ADD_64 1027   0x000098bf
0x0000d118 0x0000d118 ADD_64 1027   0x00008eab
0x0000d120 0x0000d120 ADD_64 1027   0x000007dc
0x0000d128 0x0000d128 ADD_64 1027   0x00009273
0x0000d130 0x0000d130 ADD_64 1027   0x0000abb5
0x0000d138 0x0000d138 ADD_64 1027   0x000007f0
0x0000d140 0x0000d140 ADD_64 1027   0x00008c68
0x0000d148 0x0000d148 ADD_64 1027   0x00008eab
0x0000d150 0x0000d150 ADD_64 1027   0x00000808
0x0000d158 0x0000d158 ADD_64 1027   0x00008686
0x0000d160 0x0000d160 ADD_64 1027   0x0000abb5
0x0000d168 0x0000d168 ADD_64 1027   0x0000081c
0x0000d170 0x0000d170 ADD_64 1027   0x0000a2ca
0x0000d178 0x0000d178 ADD_64 1027   0x000089b0
0x0000d180 0x0000d180 ADD_64 1027   0x00000834
0x0000d188 0x0000d188 ADD_64 1027   0x00008c7a
0x0000d190 0x0000d190 ADD_64 1027   0x0000a2e0
0x0000d198 0x0000d198 ADD_64 1027   0x0000090c
0x0000d1a0 0x0000d1a0 ADD_64 1027   0x0000aa2b
0x0000d1a8 0x0000d1a8 ADD_64 1027   0x0000a742
0x0000d1b0 0x0000d1b0 ADD_64 1027   0x00000e54
0x0000d1b8 0x0000d1b8 ADD_64 1027   0x000091a2
0x0000d1c0 0x0000d1c0 ADD_64 1027   0x000094cb
0x0000d1c8 0x0000d1c8 ADD_64 1027   0x0000113c
0x0000d1d0 0x0000d1d0 ADD_64 1027   0x00008dbf
0x0000d1d8 0x0000d1d8 ADD_64 1027   0x00008eb0
0x0000d1e0 0x0000d1e0 ADD_64 1027   0x00001160
0x0000d1e8 0x0000d1e8 ADD_64 1027   0x0000a42f
0x0000d1f0 0x0000d1f0 ADD_64 1027   0x000098d0
0x0000d1f8 0x0000d1f8 ADD_64 1027   0x00001184
0x0000d200 0x0000d200 ADD_64 1027   0x0000882a
0x0000d208 0x0000d208 ADD_64 1027   0x00009d19
0x0000d210 0x0000d210 ADD_64 1027   0x0000119c
0x0000d218 0x0000d218 ADD_64 1027   0x0000a43d
0x0000d220 0x0000d220 ADD_64 1027   0x0000acc9
0x0000d228 0x0000d228 ADD_64 1027   0x000011c4
0x0000d230 0x0000d230 ADD_64 1027   0x000094d4
0x0000d238 0x0000d238 ADD_64 1027   0x00009e36
0x0000d240 0x0000d240 ADD_64 1027   0x00001548
0x0000d248 0x0000d248 ADD_64 1027   0x0000a750
0x0000d250 0x0000d250 ADD_64 1027   0x0000908c
0x0000d258 0x0000d258 ADD_64 1027   0x000016dc
0x0000d260 0x0000d260 ADD_64 1027   0x00008eb9
0x0000d268 0x0000d268 ADD_64 1027   0x00008695
0x0000d270 0x0000d270 ADD_64 1027   0x00001724
0x0000d278 0x0000d278 ADD_64 1027   0x00008dd3
0x0000d280 0x0000d280 ADD_64 1027   0x00009f72
0x0000d288 0x0000d288 ADD_64 1027   0x00001748
0x0000d290 0x0000d290 ADD_64 1027   0x0000a75e
0x0000d298 0x0000d298 ADD_64 1027   0x00009f72
0x0000d2a0 0x0000d2a0 ADD_64 1027   0x00001860
0x0000d2a8 0x0000d2a8 ADD_64 1027   0x00009098
0x0000d2b0 0x0000d2b0 ADD_64 1027   0x00009f72
0x0000d2b8 0x0000d2b8 ADD_64 1027   0x00001924
0x0000d2c0 0x0000d2c0 ADD_64 1027   0x0000a1c0
0x0000d2c8 0x0000d2c8 ADD_64 1027   0x00009d22
0x0000d2d0 0x0000d2d0 ADD_64 1027   0x00001a3c
0x0000d2d8 0x0000d2d8 ADD_64 1027   0x00009e53
0x0000d2e0 0x0000d2e0 ADD_64 1027   0x00009d22
0x0000d2e8 0x0000d2e8 ADD_64 1027   0x00001b6c
0x0000d2f0 0x0000d2f0 ADD_64 1027   0x0000a788
0x0000d2f8 0x0000d2f8 ADD_64 1027   0x00009b9e
0x0000d300 0x0000d300 ADD_64 1027   0x00001c74
0x0000d308 0x0000d308 ADD_64 1027   0x0000869e
0x0000d310 0x0000d310 ADD_64 1027   0x0000980a
0x0000d318 0x0000d318 ADD_64 1027   0x00001c90
0x0000d320 0x0000d320 ADD_64 1027   0x0000a5a8
0x0000d328 0x0000d328 ADD_64 1027   0x000098d0
0x0000d330 0x0000d330 ADD_64 1027   0x00001d34
0x0000d338 0x0000d338 ADD_64 1027   0x00009f93
0x0000d340 0x0000d340 ADD_64 1027   0x00009d41
0x0000d348 0x0000d348 ADD_64 1027   0x00001d4c
0x0000d350 0x0000d350 ADD_64 1027   0x0000972d
0x0000d358 0x0000d358 ADD_64 1027   0x000089b8
0x0000d360 0x0000d360 ADD_64 1027   0x00002520
0x0000d368 0x0000d368 ADD_64 1027   0x0000aa42
0x0000d370 0x0000d370 ADD_64 1027   0x000098d6
0x0000d378 0x0000d378 ADD_64 1027   0x000025c8
0x0000d380 0x0000d380 ADD_64 1027   0x0000aa42
0x0000d388 0x0000d388 ADD_64 1027   0x00009ba5
0x0000d390 0x0000d390 ADD_64 1027   0x00002e34
0x0000d398 0x0000d398 ADD_64 1027   0x00008c8b
0x0000d3a0 0x0000d3a0 ADD_64 1027   0x000094ed
0x0000d3a8 0x0000d3a8 ADD_64 1027   0x00002e94
0x0000d3b0 0x0000d3b0 ADD_64 1027   0x00008c8b
0x0000d3b8 0x0000d3b8 ADD_64 1027   0x00008ad8
0x0000d3c0 0x0000d3c0 ADD_64 1027   0x00003738
0x0000d3c8 0x0000d3c8 ADD_64 1027   0x0000900e
0x0000d3d0 0x0000d3d0 ADD_64 1027   0x000098f8
0x0000d3d8 0x0000d3d8 ADD_64 1027   0x000037a0
0x0000d3e0 0x0000d3e0 ADD_64 1027   0x000086b6
0x0000d3e8 0x0000d3e8 ADD_64 1027   0x00009d41
0x0000d3f0 0x0000d3f0 ADD_64 1027   0x00003e20
0x0000d3f8 0x0000d3f8 ADD_64 1027   0x00009913
0x0000d400 0x0000d400 ADD_64 1027   0x000098d6
0x0000d408 0x0000d408 ADD_64 1027   0x00004584
0x0000d410 0x0000d410 ADD_64 1027   0x0000a44f
0x0000d418 0x0000d418 ADD_64 1027   0x0000a07c
0x0000d420 0x0000d420 ADD_64 1027   0x00004d68
0x0000d428 0x0000d428 ADD_64 1027   0x00009d60
0x0000d430 0x0000d430 ADD_64 1027   0x00009b9e
0x0000d438 0x0000d438 ADD_64 1027   0x00004d80
0x0000d440 0x0000d440 ADD_64 1027   0x000091b3
0x0000d448 0x0000d448 ADD_64 1027   0x000098d0
0x0000d450 0x0000d450 ADD_64 1027   0x00004d9c
0x0000d458 0x0000d458 ADD_64 1027   0x0000abbb
0x0000d460 0x0000d460 ADD_64 1027   0x00008ed2
0x0000d468 0x0000d468 ADD_64 1027   0x00004db4
0x0000d470 0x0000d470 ADD_64 1027   0x0000abd3
0x0000d478 0x0000d478 ADD_64 1027   0x000089c4
0x0000d480 0x0000d480 ADD_64 1027   0x00004de8
0x0000d488 0x0000d488 ADD_64 1027   0x0000a927
0x0000d490 0x0000d490 ADD_64 1027   0x00009510
0x0000d498 0x0000d498 ADD_64 1027   0x00004ec0
0x0000d4a0 0x0000d4a0 ADD_64 1027   0x0000a5bc
0x0000d4a8 0x0000d4a8 ADD_64 1027   0x0000a1dc
0x0000d4b0 0x0000d4b0 ADD_64 1027   0x00004ef0
0x0000d4b8 0x0000d4b8 ADD_64 1027   0x0000a1e6
0x0000d4c0 0x0000d4c0 ADD_64 1027   0x0000a1f7
0x0000d4c8 0x0000d4c8 ADD_64 1027   0x00004fb4
0x0000d4d0 0x0000d4d0 ADD_64 1027   0x0000a1e6
0x0000d4d8 0x0000d4d8 ADD_64 1027   0x0000a937
0x0000d4e0 0x0000d4e0 ADD_64 1027   0x00005050
0x0000d4e8 0x0000d4e8 ADD_64 1027   0x0000a1e6
0x0000d4f0 0x0000d4f0 ADD_64 1027   0x000089cd
0x0000d4f8 0x0000d4f8 ADD_64 1027   0x0000515c
0x0000d500 0x0000d500 ADD_64 1027   0x0000a082
0x0000d508 0x0000d508 ADD_64 1027   0x00008c9f
0x0000d510 0x0000d510 ADD_64 1027   0x000053ec
0x0000d518 0x0000d518 ADD_64 1027   0x0000a082
0x0000d520 0x0000d520 ADD_64 1027   0x0000a79d
0x0000d528 0x0000d528 ADD_64 1027   0x000054fc
0x0000d530 0x0000d530 ADD_64 1027   0x0000a2f1
0x0000d538 0x0000d538 ADD_64 1027   0x0000a7b0
0x0000d540 0x0000d540 ADD_64 1027   0x00005684
0x0000d548 0x0000d548 ADD_64 1027   0x0000883b
0x0000d550 0x0000d550 ADD_64 1027   0x0000a464
0x0000d558 0x0000d558 ADD_64 1027   0x000058ec
0x0000d560 0x0000d560 ADD_64 1027   0x00008aea
0x0000d568 0x0000d568 ADD_64 1027   0x00008edb
0x0000d570 0x0000d570 ADD_64 1027   0x00005920
0x0000d578 0x0000d578 ADD_64 1027   0x00009d76
0x0000d580 0x0000d580 ADD_64 1027   0x0000a46d
0x0000d588 0x0000d588 ADD_64 1027   0x00005954
0x0000d590 0x0000d590 ADD_64 1027   0x0000aa56
0x0000d598 0x0000d598 ADD_64 1027   0x0000a476
0x0000d5a0 0x0000d5a0 ADD_64 1027   0x00005984
0x0000d5a8 0x0000d5a8 ADD_64 1027   0x000091d0
0x0000d5b0 0x0000d5b0 ADD_64 1027   0x0000a1dc
0x0000d5b8 0x0000d5b8 ADD_64 1027   0x000059b4
0x0000d5c0 0x0000d5c0 ADD_64 1027   0x0000a47f
0x0000d5c8 0x0000d5c8 ADD_64 1027   0x00009fa7
0x0000d5d0 0x0000d5d0 ADD_64 1027   0x00005a78
0x0000d5d8 0x0000d5d8 ADD_64 1027   0x00009a87
0x0000d5e0 0x0000d5e0 ADD_64 1027   0x00008edb
0x0000d5e8 0x0000d5e8 ADD_64 1027   0x00005bb0
0x0000d5f0 0x0000d5f0 ADD_64 1027   0x000090ba
0x0000d5f8 0x0000d5f8 ADD_64 1027   0x00009289
0x0000d600 0x0000d600 ADD_64 1027   0x00005be4
0x0000d608 0x0000d608 ADD_64 1027   0x0000a301
0x0000d610 0x0000d610 ADD_64 1027   0x0000a202
0x0000d618 0x0000d618 ADD_64 1027   0x00005d6c
0x0000d620 0x0000d620 ADD_64 1027   0x0000abe8
0x0000d628 0x0000d628 ADD_64 1027   0x0000a7bc
0x0000d630 0x0000d630 ADD_64 1027   0x00005dac
0x0000d638 0x0000d638 ADD_64 1027   0x00008ee4
0x0000d640 0x0000d640 ADD_64 1027   0x00008df1
0x0000d648 0x0000d648 ADD_64 1027   0x00005df0
0x0000d650 0x0000d650 ADD_64 1027   0x000090cb
0x0000d658 0x0000d658 ADD_64 1027   0x0000a09a
0x0000d660 0x0000d660 ADD_64 1027   0x00005e0c
0x0000d668 0x0000d668 ADD_64 1027   0x000092b5
0x0000d670 0x0000d670 ADD_64 1027   0x0000a0a2
0x0000d678 0x0000d678 ADD_64 1027   0x00005e4c
0x0000d680 0x0000d680 ADD_64 1027   0x0000ace5
0x0000d688 0x0000d688 ADD_64 1027   0x00009748
0x0000d690 0x0000d690 ADD_64 1027   0x00006488
0x0000d698 0x0000d698 ADD_64 1027   0x00009e6d
0x0000d6a0 0x0000d6a0 ADD_64 1027   0x00009518
0x0000d6a8 0x0000d6a8 ADD_64 1027   0x000066d4
0x0000d6b0 0x0000d6b0 ADD_64 1027   0x0000a20a
0x0000d6b8 0x0000d6b8 ADD_64 1027   0x00009518
0x0000d6c0 0x0000d6c0 ADD_64 1027   0x000066f4
0x0000d6c8 0x0000d6c8 ADD_64 1027   0x00008afb
0x0000d6d0 0x0000d6d0 ADD_64 1027   0x000098d0
0x0000d6d8 0x0000d6d8 ADD_64 1027   0x00006714
0x0000d6e0 0x0000d6e0 ADD_64 1027   0x00009a9a
0x0000d6e8 0x0000d6e8 ADD_64 1027   0x000098d0
0x0000d6f0 0x0000d6f0 ADD_64 1027   0x0000672c
0x0000d6f8 0x0000d6f8 ADD_64 1027   0x00009ab1
0x0000d700 0x0000d700 ADD_64 1027   0x00008cb0
0x0000d708 0x0000d708 ADD_64 1027   0x00006744
0x0000d710 0x0000d710 ADD_64 1027   0x00008efc
0x0000d718 0x0000d718 ADD_64 1027   0x000089db
0x0000d720 0x0000d720 ADD_64 1027   0x000068d4
0x0000d728 0x0000d728 ADD_64 1027   0x00009d87
0x0000d730 0x0000d730 ADD_64 1027   0x00008b11
0x0000d738 0x0000d738 ADD_64 1027   0x00006a64
0x0000d740 0x0000d740 ADD_64 1027   0x000089f5
0x0000d748 0x0000d748 ADD_64 1027   0x00009520
0x0000d750 0x0000d750 ADD_64 1027   0x00006c08
0x0000d758 0x0000d758 ADD_64 1027   0x0000a222
0x0000d760 0x0000d760 ADD_64 1027   0x00009020
0x0000d768 0x0000d768 ADD_64 1027   0x00006dac
0x0000d770 0x0000d770 ADD_64 1027   0x000086ca
0x0000d778 0x0000d778 ADD_64 1027   0x0000acfb
0x0000d780 0x0000d780 ADD_64 1027   0x00006edc
0x0000d788 0x0000d788 ADD_64 1027   0x0000a31a
0x0000d790 0x0000d790 ADD_64 1027   0x0000aa67
0x0000d798 0x0000d798 ADD_64 1027   0x00006f04
0x0000d7a0 0x0000d7a0 ADD_64 1027   0x0000ad06
0x0000d7a8 0x0000d7a8 ADD_64 1027   0x00009826
0x0000d7b0 0x0000d7b0 ADD_64 1027   0x00006f0c
0x0000d7b8 0x0000d7b8 ADD_64 1027   0x000099a0
0x0000d7c0 0x0000d7c0 ADD_64 1027   0x000094b0
0x0000d7c8 0x0000d7c8 ADD_64 1027   0x00007048
0x0000d7d0 0x0000d7d0 ADD_64 1027   0x0000ac00
0x0000d7d8 0x0000d7d8 ADD_64 1027   0x00008eab
0x0000d7e0 0x0000d7e0 ADD_64 1027   0x00007058
0x0000d7e8 0x0000d7e8 ADD_64 1027   0x0000ac12
0x0000d7f0 0x0000d7f0 ADD_64 1027   0x0000ac26
0x0000d7f8 0x0000d7f8 ADD_64 1027   0x0000706c
0x0000d800 0x0000d800 ADD_64 1027   0x0000983d
0x0000d808 0x0000d808 ADD_64 1027   0x00008eab
0x0000d810 0x0000d810 ADD_64 1027   0x00007094
0x0000d818 0x0000d818 ADD_64 1027   0x0000a7c5
0x0000d820 0x0000d820 ADD_64 1027   0x00008eab
0x0000d828 0x0000d828 ADD_64 1027   0x000070a8
0x0000d830 0x0000d830 ADD_64 1027   0x000091e1
0x0000d838 0x0000d838 ADD_64 1027   0x000098d0
0x0000d840 0x0000d840 ADD_64 1027   0x000070bc
0x0000d848 0x0000d848 ADD_64 1027   0x0000a0b1
0x0000d850 0x0000d850 ADD_64 1027   0x00009d19
0x0000d858 0x0000d858 ADD_64 1027   0x000070d4
0x0000d860 0x0000d860 ADD_64 1027   0x0000a491
0x0000d868 0x0000d868 ADD_64 1027   0x0000908c
0x0000d870 0x0000d870 ADD_64 1027   0x000070fc
0x0000d878 0x0000d878 ADD_64 1027   0x0000953c
0x0000d880 0x0000d880 ADD_64 1027   0x00008cca
0x0000d888 0x0000d888 ADD_64 1027   0x00007144
0x0000d890 0x0000d890 ADD_64 1027   0x000093c8
0x0000d898 0x0000d898 ADD_64 1027   0x000086db
0x0000d8a0 0x0000d8a0 ADD_64 1027   0x00007214
0x0000d8a8 0x0000d8a8 ADD_64 1027   0x0000a332
0x0000d8b0 0x0000d8b0 ADD_64 1027   0x0000a07c
0x0000d8b8 0x0000d8b8 ADD_64 1027   0x000072e8
0x0000e000 0x0000e000 ADD_64 1027   0x00000200
0x0000e210 0x0000e210 SET_64 1026  __cxa_finalize
0x0000e218 0x0000e218 SET_64 1026  __stack_chk_fail
0x0000e220 0x0000e220 SET_64 1026  dlopen
0x0000e228 0x0000e228 SET_64 1026  loadSymbols(void*, dispatchTable&, int)
0x0000e230 0x0000e230 SET_64 1026  dlerror
0x0000e238 0x0000e238 SET_64 1026  __android_log_print
0x0000e240 0x0000e240 SET_64 1026  dlclose
0x0000e248 0x0000e248 SET_64 1026  loadIOSuppSyms(void*, ioSuppDT&)
0x0000e250 0x0000e250 SET_64 1026  malloc
0x0000e258 0x0000e258 SET_64 1026  calloc
0x0000e260 0x0000e260 SET_64 1026  free
0x0000e268 0x0000e268 SET_64 1026  AndroidBitmap_lockPixels
0x0000e270 0x0000e270 SET_64 1026  AndroidBitmap_getInfo
0x0000e278 0x0000e278 SET_64 1026  AndroidBitmap_unlockPixels
0x0000e280 0x0000e280 SET_64 1026  memcpy
0x0000e288 0x0000e288 SET_64 1026  memset
0x0000e290 0x0000e290 SET_64 1026  dlsym
EOF
RUN

NAME=ELF: arm64 imports crashing
FILE=bins/elf/librsjni_androix.so
CMDS=ii
EXPECT=<<EOF
nth vaddr      bind   type lib name
-----------------------------------
1   0x0000b7c0 GLOBAL FUNC     __cxa_finalize
2   0x0000b880 GLOBAL FUNC     AndroidBitmap_getInfo
3   0x0000b870 GLOBAL FUNC     AndroidBitmap_lockPixels
4   0x0000b890 GLOBAL FUNC     AndroidBitmap_unlockPixels
5   0x0000b810 GLOBAL FUNC     __android_log_print
6   0x0000b7d0 GLOBAL FUNC     __stack_chk_fail
7   0x0000b850 GLOBAL FUNC     calloc
8   0x0000b820 GLOBAL FUNC     dlclose
9   0x0000b800 GLOBAL FUNC     dlerror
10  0x0000b7e0 GLOBAL FUNC     dlopen
11  0x0000b8c0 GLOBAL FUNC     dlsym
12  0x0000b860 GLOBAL FUNC     free
13  0x0000b840 GLOBAL FUNC     malloc
14  0x0000b8a0 GLOBAL FUNC     memcpy
15  0x0000b8b0 GLOBAL FUNC     memset
EOF
RUN

NAME=ELF: corkami elf-relro - sections
FILE=bins/elf/analysis/elf-relro
CMDS=iS~rel
EXPECT=<<EOF
9   0x0000027c    0x8 0x0804827c    0x8 -r-- 0x2   REL         .rel.dyn
10  0x00000284   0x10 0x08048284   0x10 -r-- 0x2   REL         .rel.plt
EOF
RUN

NAME=ELF: corkami elf-relro - relro enabled
FILE=bins/elf/analysis/elf-relro
CMDS=ik ***~relro
EXPECT=<<EOF
info/elf.relro=partial
EOF
RUN

NAME=ELF: imports partial
FILE=bins/elf/vim
CMDS=<<EOF
ik ***~relro
ii
EOF
EXPECT=<<EOF
info/elf.relro=full
nth vaddr      bind   type   lib name
-------------------------------------
2   0x00051f60 GLOBAL FUNC       __ctype_toupper_loc
3   0x00051f68 GLOBAL FUNC       __strcat_chk
4   0x00051f70 GLOBAL FUNC       getenv
5   0x00051f78 GLOBAL FUNC       utime
6   0x00051f80 GLOBAL FUNC       sigprocmask
7   0x00051f88 GLOBAL FUNC       free
8   0x00051f90 GLOBAL FUNC       putchar
9   0x00051f98 GLOBAL FUNC       is_selinux_enabled
10  0x00051fa0 GLOBAL FUNC       strcasecmp
11  0x00051fa8 GLOBAL FUNC       Gpm_Open
12  0x00051fb0 GLOBAL FUNC       localtime
13  0x00051fb8 GLOBAL FUNC       mblen
14  0x00051fc0 GLOBAL FUNC       __errno_location
15  0x00051fc8 GLOBAL FUNC       unlink
16  0x00051fd0 GLOBAL FUNC       strncpy
17  0x00051fd8 GLOBAL FUNC       strncmp
18  ---------- WEAK   NOTYPE     _ITM_deregisterTMCloneTable
19  0x00051fe0 GLOBAL FUNC       _exit
20  0x00051fe8 GLOBAL FUNC       strcpy
21  0x00051ff0 GLOBAL FUNC       mkdir
22  0x00051ff8 GLOBAL FUNC       tputs
23  0x00052000 GLOBAL FUNC       iconv
24  0x00052008 GLOBAL FUNC       ferror
25  0x00052010 GLOBAL FUNC       qsort
26  0x00052018 GLOBAL FUNC       isatty
27  0x00052020 GLOBAL FUNC       sigaction
28  0x00052028 GLOBAL FUNC       fread
29  0x00052030 GLOBAL FUNC       strtod
30  0x00052038 GLOBAL FUNC       exp
31  0x00052040 GLOBAL FUNC       readlink
32  0x00052048 GLOBAL FUNC       fcntl
33  0x00052050 GLOBAL FUNC       setenv
34  0x00052058 GLOBAL FUNC       write
35  0x00052060 GLOBAL FUNC       getpid
36  0x00052068 GLOBAL FUNC       textdomain
37  0x00052070 GLOBAL FUNC       atan
38  0x00052078 GLOBAL FUNC       tgoto
39  0x00052080 GLOBAL FUNC       fclose
40  0x00052088 GLOBAL FUNC       __xstat64
41  0x00052090 GLOBAL FUNC       opendir
42  0x00052098 GLOBAL FUNC       getpwuid
43  0x000520a0 GLOBAL FUNC       ctime
44  0x000520a8 GLOBAL FUNC       bindtextdomain
45  0x000520b0 GLOBAL FUNC       stpcpy
46  0x000520b8 GLOBAL FUNC       rmdir
47  0x000520c0 GLOBAL FUNC       dcgettext
48  0x000520c8 GLOBAL FUNC       strlen
49  0x000520d0 GLOBAL FUNC       chdir
50  0x000520d8 GLOBAL FUNC       __stack_chk_fail
51  0x000520e0 GLOBAL FUNC       getuid
52  0x000520e8 GLOBAL FUNC       dup2
53  0x000520f0 GLOBAL FUNC       tcflush
54  0x000520f8 GLOBAL FUNC       strchr
55  0x00052100 GLOBAL FUNC       printf
56  0x00052108 GLOBAL FUNC       rewind
57  0x00052110 GLOBAL FUNC       _IO_putc
58  0x00052118 GLOBAL FUNC       __fdelt_chk
59  0x00052120 GLOBAL FUNC       nanosleep
60  0x00052128 GLOBAL FUNC       strrchr
61  0x00052130 GLOBAL FUNC       uname
62  0x00052138 GLOBAL FUNC       dup
63  0x00052140 GLOBAL FUNC       gettimeofday
64  0x00052148 GLOBAL FUNC       __assert_fail
65  0x00052150 GLOBAL FUNC       fputs
66  0x00052158 GLOBAL FUNC       memset
67  0x00052160 GLOBAL FUNC       tgetflag
68  0x00052168 GLOBAL FUNC       pow
69  0x00052170 GLOBAL FUNC       ioctl
70  0x00052178 GLOBAL FUNC       getcwd
71  0x00052180 GLOBAL FUNC       log
72  0x00052188 GLOBAL FUNC       strncat
73  0x00052190 GLOBAL FUNC       alarm
74  0x00052198 GLOBAL FUNC       close
75  0x000521a0 GLOBAL FUNC       tgetent
76  0x000521a8 GLOBAL FUNC       pipe
77  0x000521b0 GLOBAL FUNC       setsid
78  0x000521b8 GLOBAL FUNC       fmod
79  0x000521c0 GLOBAL FUNC       closedir
80  0x000521c8 GLOBAL FUNC       cos
81  0x000521d0 GLOBAL FUNC       fputc
82  0x000521d8 GLOBAL FUNC       memchr
83  0x000521e0 GLOBAL FUNC       ftello64
84  0x000521e8 GLOBAL FUNC       acos
85  0x000521f0 GLOBAL FUNC       read
86  ---------- GLOBAL FUNC       __libc_start_main
87  0x000521f8 GLOBAL FUNC       srand
88  0x00052200 GLOBAL FUNC       memcmp
89  0x00052208 GLOBAL FUNC       fgets
90  0x00052210 GLOBAL FUNC       tgetnum
91  0x00052218 GLOBAL FUNC       getsockopt
92  0x00052220 GLOBAL FUNC       _setjmp
93  0x00052228 GLOBAL FUNC       acl_set_file
94  0x00052230 GLOBAL FUNC       __fxstat64
95  0x00052238 GLOBAL FUNC       strcmp
96  0x00052240 GLOBAL FUNC       signal
97  0x00052248 GLOBAL FUNC       getpwnam
98  0x00052250 GLOBAL FUNC       gethostbyname
99  0x00052258 GLOBAL FUNC       log10
100 0x00052260 GLOBAL FUNC       __memmove_chk
101 0x00052268 GLOBAL FUNC       setpwent
102 0x00052270 GLOBAL FUNC       __memcpy_chk
103 0x00052278 GLOBAL FUNC       fprintf
104 0x00052280 GLOBAL FUNC       sigemptyset
105 0x00052288 GLOBAL FUNC       ftell
106 0x00052290 GLOBAL FUNC       feof
107 ---------- WEAK   NOTYPE     __gmon_start__
108 0x00052298 GLOBAL FUNC       umask
109 0x000522a0 GLOBAL FUNC       fopen64
110 0x000522a8 GLOBAL FUNC       strtol
111 0x000522b0 GLOBAL FUNC       memcpy
112 0x000522b8 GLOBAL FUNC       getfilecon
113 0x000522c0 GLOBAL FUNC       getpwent
114 0x000522c8 GLOBAL FUNC       cosh
115 0x000522d0 GLOBAL FUNC       kill
116 0x000522d8 GLOBAL FUNC       time
117 0x000522e0 GLOBAL FUNC       fileno
118 0x000522e8 GLOBAL FUNC       __stpcpy_chk
119 0x000522f0 GLOBAL FUNC       getgid
120 0x000522f8 GLOBAL FUNC       iswupper
121 0x00052300 GLOBAL FUNC       select
122 0x00052308 GLOBAL FUNC       getrlimit64
123 0x00052310 GLOBAL FUNC       dlopen
124 0x00052318 GLOBAL FUNC       sync
125 0x00052320 GLOBAL FUNC       sinh
126 0x00052328 GLOBAL FUNC       pthread_getspecific
127 0x00052330 GLOBAL FUNC       malloc
128 0x00052338 GLOBAL FUNC       strncasecmp
129 0x00052340 GLOBAL FUNC       fflush
130 0x00052348 GLOBAL FUNC       _IO_getc
131 0x00052350 GLOBAL FUNC       acl_get_file
132 0x00052358 GLOBAL FUNC       nl_langinfo
133 0x00052360 GLOBAL FUNC       tan
134 0x00052368 GLOBAL FUNC       ungetc
135 0x00052370 GLOBAL FUNC       endpwent
136 0x00052378 GLOBAL FUNC       sscanf
137 0x00052380 GLOBAL FUNC       atan2
138 0x00052388 GLOBAL FUNC       strpbrk
139 0x00052390 GLOBAL FUNC       fseek
140 0x00052398 GLOBAL FUNC       fseeko64
141 0x000523a0 GLOBAL FUNC       bind_textdomain_codeset
142 0x000523a8 GLOBAL FUNC       fchdir
143 0x000523b0 GLOBAL FUNC       dlclose
144 0x000523b8 GLOBAL FUNC       setfilecon
145 0x000523c0 GLOBAL FUNC       realloc
146 0x000523c8 GLOBAL FUNC       __strcpy_chk
147 0x000523d0 GLOBAL FUNC       fdopen
148 0x000523d8 GLOBAL FUNC       mkdtemp
149 0x000523e0 GLOBAL FUNC       setlocale
150 0x000523e8 GLOBAL FUNC       iconv_close
151 0x000523f0 GLOBAL FUNC       chmod
152 0x000523f8 GLOBAL FUNC       sigset
153 0x00052400 GLOBAL FUNC       __longjmp_chk
154 0x00052408 GLOBAL FUNC       open64
155 0x00052410 GLOBAL FUNC       strftime
156 0x00052418 GLOBAL FUNC       memmove
157 0x00052420 GLOBAL FUNC       readdir64
158 0x00052428 GLOBAL FUNC       fsync
159 0x00052430 GLOBAL FUNC       Gpm_GetEvent
160 0x00052438 GLOBAL FUNC       waitpid
161 0x00052440 GLOBAL FUNC       tcgetattr
162 0x00052448 GLOBAL FUNC       tcsetattr
163 0x00052450 GLOBAL FUNC       access
164 0x00052458 GLOBAL FUNC       fchown
165 0x00052460 GLOBAL FUNC       dcngettext
166 0x00052468 GLOBAL FUNC       perror
167 0x00052470 GLOBAL FUNC       strtok
168 0x00052478 GLOBAL FUNC       sysconf
169 ---------- WEAK   NOTYPE     _Jv_RegisterClasses
170 0x00052480 GLOBAL FUNC       towlower
171 0x00052488 GLOBAL FUNC       rename
172 0x00052490 GLOBAL FUNC       tgetstr
173 0x00052498 GLOBAL FUNC       towupper
174 0x000524a0 GLOBAL FUNC       sin
175 0x000524a8 GLOBAL FUNC       floor
176 0x000524b0 GLOBAL FUNC       execvp
177 0x000524b8 GLOBAL FUNC       getpgid
178 0x000524c0 GLOBAL FUNC       __lxstat64
179 0x000524c8 GLOBAL FUNC       sysinfo
180 0x000524d0 GLOBAL FUNC       strcat
181 0x000524d8 GLOBAL FUNC       freecon
182 0x000524e0 GLOBAL FUNC       tanh
183 0x000524e8 GLOBAL FUNC       asin
184 0x000524f0 GLOBAL FUNC       __memset_chk
185 0x000524f8 GLOBAL FUNC       sprintf
186 0x00052500 GLOBAL FUNC       exit
187 0x00052508 GLOBAL FUNC       connect
188 0x00052510 GLOBAL FUNC       fwrite
189 0x00052518 GLOBAL FUNC       lseek64
190 0x00052520 GLOBAL FUNC       __fprintf_chk
191 ---------- WEAK   NOTYPE     _ITM_registerTMCloneTable
192 0x00052528 GLOBAL FUNC       sqrt
193 0x00052530 GLOBAL FUNC       sigaltstack
194 0x00052538 GLOBAL FUNC       strerror
195 0x00052540 GLOBAL FUNC       execl
196 0x00052548 GLOBAL FUNC       dlsym
197 0x00052550 GLOBAL FUNC       ceil
198 0x00052558 GLOBAL FUNC       sleep
199 0x00052560 GLOBAL FUNC       Gpm_Close
200 0x00052568 WEAK   FUNC       __cxa_finalize
201 0x00052570 GLOBAL FUNC       sigaddset
202 0x00052578 GLOBAL FUNC       fork
203 0x00052580 GLOBAL FUNC       strstr
204 0x00052588 GLOBAL FUNC       rand
205 0x00052590 GLOBAL FUNC       dlerror
206 0x00052598 GLOBAL FUNC       __ctype_tolower_loc
207 0x000525a0 GLOBAL FUNC       __ctype_b_loc
208 0x000525a8 GLOBAL FUNC       acl_free
209 0x000525b0 GLOBAL FUNC       iconv_open
210 0x000525b8 GLOBAL FUNC       __sprintf_chk
211 0x000525c0 GLOBAL FUNC       socket
EOF
RUN

NAME=ELF: arm64 missing internal plt imports
FILE=bins/elf/libcurl.so.4.2.0
CMDS=<<EOF
s section..plt
pd 20
s 0x0001de5c
af
pdf
EOF
EXPECT=<<EOF
            ;-- section..plt:
            0x000074dc      04e02de5       str lr, [sp, -4]!           ; [09] -r-x section size 4964 named .plt
            0x000074e0      04e09fe5       ldr lr, [0x000074ec]        ; [0x74ec:4]=0x45610
            0x000074e4      0ee08fe0       add lr, pc, lr
            0x000074e8      08f0bee5       ldr pc, [lr, 8]!
            0x000074ec      10560400       andeq r5, r4, r0, lsl r6
            ;-- rsym.gnutls_x509_crt_get_expiration_time:
            ;-- gnutls_x509_crt_get_expiration_time:
            0x000074f0      00c68fe2       add ip, pc, 0, 12
            0x000074f4      45ca8ce2       add ip, ip, 0x45000
            0x000074f8      10f6bce5       ldr pc, [ip, 0x610]!
            ;-- rsym.Curl_getaddrinfo_ex:
            0x000074fc      00c68fe2       add ip, pc, 0, 12
            0x00007500      45ca8ce2       add ip, ip, 0x45000
            0x00007504      08f6bce5       ldr pc, [ip, 0x608]!
            ;-- rsym.Curl_cookie_add:
            0x00007508      00c68fe2       add ip, pc, 0, 12
            0x0000750c      45ca8ce2       add ip, ip, 0x45000
            0x00007510      00f6bce5       ldr pc, [ip, 0x600]!
            ;-- rsym.Curl_unencode_gzip_write:
            0x00007514      00c68fe2       add ip, pc, 0, 12
            0x00007518      45ca8ce2       add ip, ip, 0x45000
            0x0000751c      f8f5bce5       ldr pc, [ip, 0x5f8]!
            ;-- rsym.freeifaddrs:
            ;-- freeifaddrs:
            0x00007520      00c68fe2       add ip, pc, 0, 12
            0x00007524      45ca8ce2       add ip, ip, 0x45000
            0x00007528      f0f5bce5       ldr pc, [ip, 0x5f0]!
/ 552: sym.Curl_close (int32_t arg1);
| `- args(r0)
|           0x0001de5c      70402de9       push {r4, r5, r6, lr}
|           0x0001de60      0010a0e3       mov r1, 0
|           0x0001de64      086090e5       ldr r6, [r0, 8]             ; arg1
|           0x0001de68      14529fe5       ldr r5, [0x0001e084]        ; [0x1e084:4]=0x2ec7c
|           0x0001de6c      0040a0e1       mov r4, r0                  ; arg1
|           0x0001de70      58a9ffeb       bl rsym.Curl_expire
|           0x0001de74      000056e3       cmp r6, 0
|           0x0001de78      05508fe0       add r5, pc, r5
|       ,=< 0x0001de7c      0200000a       beq 0x1de8c
|       |   0x0001de80      080094e5       ldr r0, [r4, 8]
|       |   0x0001de84      0410a0e1       mov r1, r4
|       |   0x0001de88      d4a5ffeb       bl rsym.curl_multi_remove_handle
|       `-> 0x0001de8c      f4619fe5       ldr r6, rsym.Curl_splayinsert ; [0x1e088:4]=0x8594 rsym.Curl_splayinsert
|           0x0001de90      060094e7       ldr r0, [r4, r6]
|           0x0001de94      000050e3       cmp r0, 0
|       ,=< 0x0001de98      0300000a       beq 0x1deac
|       |   0x0001de9c      0010a0e3       mov r1, 0
|       |   0x0001dea0      fda9ffeb       bl rsym.Curl_llist_destroy
|       |   0x0001dea4      0030a0e3       mov r3, 0
|       |   0x0001dea8      063084e7       str r3, [r4, r6]
|       `-> 0x0001deac      b43494e5       ldr r3, [r4, 0x4b4]
|           0x0001deb0      d4219fe5       ldr r2, [0x0001e08c]        ; [0x1e08c:4]=0x86a4
|           0x0001deb4      0010a0e3       mov r1, 0
|           0x0001deb8      000053e3       cmp r3, 0
|           0x0001debc      021084e7       str r1, [r4, r2]
|       ,=< 0x0001dec0      0200000a       beq 0x1ded0
|       |   0x0001dec4      080093e5       ldr r0, [r3, 8]
|       |   0x0001dec8      010050e1       cmp r0, r1
|      ,==< 0x0001decc      0800000a       beq 0x1def4
|      |`-> 0x0001ded0      b8119fe5       ldr r1, [0x0001e090]        ; [0x1e090:4]=0x85b0
|      |    0x0001ded4      016094e7       ldr r6, [r4, r1]
|      |    0x0001ded8      000056e3       cmp r6, 0
|      |    0x0001dedc      04108112       addne r1, r1, 4
|      |    0x0001dee0      0120a013       movne r2, 1
|      |    0x0001dee4      0120c417       strbne r2, [r4, r1]
|      |,=< 0x0001dee8      0e00000a       beq 0x1df28
|     .---> 0x0001deec      0000a0e3       mov r0, 0
|     :||   0x0001def0      7080bde8       pop {r4, r5, r6, pc}
|    .-`--> 0x0001def4      0400a0e1       mov r0, r4
|    :: |   0x0001def8      50f2ffeb       bl 0x1a840
|    :: |   0x0001defc      010070e3       cmn r0, 1
|    `====< 0x0001df00      fbffff1a       bne 0x1def4
|     : |   0x0001df04      b40494e5       ldr r0, [r4, 0x4b4]
|     : |   0x0001df08      53a6ffeb       bl rsym.Curl_rm_connc
|     : |   0x0001df0c      7c119fe5       ldr r1, [0x0001e090]        ; [0x1e090:4]=0x85b0
|     : |   0x0001df10      016094e7       ldr r6, [r4, r1]
|     : |   0x0001df14      000056e3       cmp r6, 0
|     : |   0x0001df18      04108112       addne r1, r1, 4
|     : |   0x0001df1c      0120a013       movne r2, 1
|     : |   0x0001df20      0120c417       strbne r2, [r4, r1]
|     `===< 0x0001df24      f0ffff1a       bne 0x1deec
|       `-> 0x0001df28      042094e5       ldr r2, [r4, 4]
|           0x0001df2c      010052e3       cmp r2, 1
|       ,=< 0x0001df30      4e00000a       beq 0x1e070
|       |   ; CODE XREF from sym.Curl_close @ 0x1e080(x)
|      .--> 0x0001df34      58e19fe5       ldr lr, [0x0001e094]        ; [0x1e094:4]=0x85c2
|      :|   0x0001df38      0ec0d4e7       ldrb ip, [r4, lr]
|      :|   0x0001df3c      00005ce3       cmp ip, 0
|     ,===< 0x0001df40      3900001a       bne 0x1e02c
|     |:|   0x0001df44      4c619fe5       ldr r6, [0x0001e098]        ; [0x1e098:4]=0x6c4
|     |:|   ; CODE XREF from sym.Curl_close @ 0x1e044(x)
|    .----> 0x0001df48      4ce19fe5       ldr lr, rsym.curl_global_init ; [0x1e09c:4]=0x85b8 rsym.curl_global_init
|    :|:|   0x0001df4c      0e0094e7       ldr r0, [r4, lr]
|    :|:|   0x0001df50      2eaaffeb       bl rsym.Curl_safefree
|    :|:|   0x0001df54      44119fe5       ldr r1, sym.imp.gnutls_global_deinit ; [0x1e0a0:4]=0x85dc sym.imp.gnutls_global_deinit
|    :|:|   0x0001df58      010094e7       ldr r0, [r4, r1]
|    :|:|   0x0001df5c      2baaffeb       bl rsym.Curl_safefree
|    :|:|   0x0001df60      0400a0e1       mov r0, r4
|    :|:|   0x0001df64      cea7ffeb       bl rsym.Curl_ssl_close_all
|    :|:|   0x0001df68      34319fe5       ldr r3, [0x0001e0a4]        ; [0x1e0a4:4]=0x84dc
|    :|:|   0x0001df6c      030094e7       ldr r0, [r4, r3]
|    :|:|   0x0001df70      26aaffeb       bl rsym.Curl_safefree
|    :|:|   0x0001df74      2cc19fe5       ldr ip, [0x0001e0a8]        ; [0x1e0a8:4]=0x84f4
|    :|:|   0x0001df78      0c0094e7       ldr r0, [r4, ip]
|    :|:|   0x0001df7c      23aaffeb       bl rsym.Curl_safefree
|    :|:|   0x0001df80      0400a0e1       mov r0, r4
|    :|:|   0x0001df84      5aa7ffeb       bl rsym.Curl_ssl_free_certinfo
|    :|:|   0x0001df88      a403d4e5       ldrb r0, [r4, 0x3a4]
|    :|:|   0x0001df8c      000050e3       cmp r0, 0
|   ,=====< 0x0001df90      3100001a       bne 0x1e05c
|   |:|:|   ; CODE XREF from sym.Curl_close @ 0x1e06c(x)
|  .------> 0x0001df94      9c03d4e5       ldrb r0, [r4, 0x39c]
|  :|:|:|   0x0001df98      000050e3       cmp r0, 0
| ,=======< 0x0001df9c      2900001a       bne 0x1e048
| |:|:|:|   ; CODE XREF from sym.Curl_close @ 0x1e058(x)
| --------> 0x0001dfa0      c40494e5       ldr r0, [r4, 0x4c4]
| |:|:|:|   0x0001dfa4      19aaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0001dfa8      0110a0e3       mov r1, 1
| |:|:|:|   0x0001dfac      0400a0e1       mov r0, r4
| |:|:|:|   0x0001dfb0      c2f8ffeb       bl 0x1c2c0
| |:|:|:|   0x0001dfb4      0400a0e1       mov r0, r4
| |:|:|:|   0x0001dfb8      01a8ffeb       bl rsym.Curl_digest_cleanup
| |:|:|:|   0x0001dfbc      e8309fe5       ldr r3, [0x0001e0ac]        ; [0x1e0ac:4]=0x862c
| |:|:|:|   0x0001dfc0      030094e7       ldr r0, [r4, r3]
| |:|:|:|   0x0001dfc4      11aaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0001dfc8      e0c09fe5       ldr ip, sym.imp.getpeername ; [0x1e0b0:4]=0x8630 sym.imp.getpeername
| |:|:|:|   0x0001dfcc      0c0094e7       ldr r0, [r4, ip]
| |:|:|:|   0x0001dfd0      0eaaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0001dfd4      102094e5       ldr r2, [r4, 0x10]
| |:|:|:|   0x0001dfd8      000052e3       cmp r2, 0
| ========< 0x0001dfdc      0a00000a       beq 0x1e00c
| |:|:|:|   0x0001dfe0      0110a0e3       mov r1, 1
| |:|:|:|   0x0001dfe4      0220a0e3       mov r2, 2
| |:|:|:|   0x0001dfe8      0400a0e1       mov r0, r4
| |:|:|:|   0x0001dfec      0ba9ffeb       bl rsym.Curl_share_lock
| |:|:|:|   0x0001dff0      10c094e5       ldr ip, [r4, 0x10]
| |:|:|:|   0x0001dff4      0400a0e1       mov r0, r4
| |:|:|:|   0x0001dff8      0110a0e3       mov r1, 1
| |:|:|:|   0x0001dffc      04309ce5       ldr r3, [ip, 4]
| |:|:|:|   0x0001e000      012043e2       sub r2, r3, 1
| |:|:|:|   0x0001e004      04208ce5       str r2, [ip, 4]
| |:|:|:|   0x0001e008      09aaffeb       bl rsym.Curl_share_unlock
| --------> 0x0001e00c      0400a0e1       mov r0, r4
| |:|:|:|   0x0001e010      0ea6ffeb       bl rsym.Curl_freeset
| |:|:|:|   0x0001e014      062095e7       ldr r2, [r5, r6]
| |:|:|:|   0x0001e018      0400a0e1       mov r0, r4
| |:|:|:|   0x0001e01c      001092e5       ldr r1, [r2]
| |:|:|:|   0x0001e020      31ff2fe1       blx r1
| |:|:|:|   0x0001e024      0000a0e3       mov r0, 0
| |:|:|:|   0x0001e028      7080bde8       pop {r4, r5, r6, pc}
| |:|:`---> 0x0001e02c      64609fe5       ldr r6, [0x0001e098]        ; [0x1e098:4]=0x6c4
| |:|: :|   0x0001e030      7c209fe5       ldr r2, rsym.Curl_resolv_timeout ; [0x1e0b4:4]=0x85c4 rsym.Curl_resolv_timeout
| |:|: :|   0x0001e034      061095e7       ldr r1, [r5, r6]
| |:|: :|   0x0001e038      020094e7       ldr r0, [r4, r2]
| |:|: :|   0x0001e03c      003091e5       ldr r3, [r1]
| |:|: :|   0x0001e040      33ff2fe1       blx r3
| |:|`====< 0x0001e044      bfffffea       b 0x1df48
| `-------> 0x0001e048      061095e7       ldr r1, [r5, r6]
|  :|  :|   0x0001e04c      980394e5       ldr r0, [r4, 0x398]
|  :|  :|   0x0001e050      003091e5       ldr r3, [r1]
|  :|  :|   0x0001e054      33ff2fe1       blx r3
| ========< 0x0001e058      d0ffffea       b 0x1dfa0
|  :`-----> 0x0001e05c      06c095e7       ldr ip, [r5, r6]
|  :   :|   0x0001e060      a00394e5       ldr r0, [r4, 0x3a0]
|  :   :|   0x0001e064      00209ce5       ldr r2, [ip]
|  :   :|   0x0001e068      32ff2fe1       blx r2
|  `======< 0x0001e06c      c8ffffea       b 0x1df94
|      :`-> 0x0001e070      000094e5       ldr r0, [r4]
|      :    0x0001e074      39a7ffeb       bl rsym.Curl_hash_destroy
|      :    0x0001e078      006084e5       str r6, [r4]
|      :    0x0001e07c      046084e5       str r6, [r4, 4]
\      `==< 0x0001e080      abffffea       b 0x1df34
EOF
RUN

NAME=ELF: arm64 missing internal plt imports with baddr
ARGS=-B 0x10000
FILE=bins/elf/libcurl.so.4.2.0
CMDS=<<EOF
s section..plt
pd 20
s 0x0002de5c
af
pdf
EOF
EXPECT=<<EOF
            ;-- section..plt:
            0x000174dc      04e02de5       str lr, [sp, -4]!           ; [09] -r-x section size 4964 named .plt
            0x000174e0      04e09fe5       ldr lr, [0x000174ec]        ; [0x174ec:4]=0x45610
            0x000174e4      0ee08fe0       add lr, pc, lr
            0x000174e8      08f0bee5       ldr pc, [lr, 8]!
            0x000174ec      10560400       andeq r5, r4, r0, lsl r6
            ;-- rsym.gnutls_x509_crt_get_expiration_time:
            ;-- gnutls_x509_crt_get_expiration_time:
            0x000174f0      00c68fe2       add ip, pc, 0, 12
            0x000174f4      45ca8ce2       add ip, ip, 0x45000
            0x000174f8      10f6bce5       ldr pc, [ip, 0x610]!
            ;-- rsym.Curl_getaddrinfo_ex:
            0x000174fc      00c68fe2       add ip, pc, 0, 12
            0x00017500      45ca8ce2       add ip, ip, 0x45000
            0x00017504      08f6bce5       ldr pc, [ip, 0x608]!
            ;-- rsym.Curl_cookie_add:
            0x00017508      00c68fe2       add ip, pc, 0, 12
            0x0001750c      45ca8ce2       add ip, ip, 0x45000
            0x00017510      00f6bce5       ldr pc, [ip, 0x600]!
            ;-- rsym.Curl_unencode_gzip_write:
            0x00017514      00c68fe2       add ip, pc, 0, 12
            0x00017518      45ca8ce2       add ip, ip, 0x45000
            0x0001751c      f8f5bce5       ldr pc, [ip, 0x5f8]!
            ;-- rsym.freeifaddrs:
            ;-- freeifaddrs:
            0x00017520      00c68fe2       add ip, pc, 0, 12
            0x00017524      45ca8ce2       add ip, ip, 0x45000
            0x00017528      f0f5bce5       ldr pc, [ip, 0x5f0]!
/ 552: sym.Curl_close (int32_t arg1);
| `- args(r0)
|           0x0002de5c      70402de9       push {r4, r5, r6, lr}
|           0x0002de60      0010a0e3       mov r1, 0
|           0x0002de64      086090e5       ldr r6, [r0, 8]             ; arg1
|           0x0002de68      14529fe5       ldr r5, [0x0002e084]        ; [0x2e084:4]=0x2ec7c
|           0x0002de6c      0040a0e1       mov r4, r0                  ; arg1
|           0x0002de70      58a9ffeb       bl rsym.Curl_expire
|           0x0002de74      000056e3       cmp r6, 0
|           0x0002de78      05508fe0       add r5, pc, r5
|       ,=< 0x0002de7c      0200000a       beq 0x2de8c
|       |   0x0002de80      080094e5       ldr r0, [r4, 8]
|       |   0x0002de84      0410a0e1       mov r1, r4
|       |   0x0002de88      d4a5ffeb       bl rsym.curl_multi_remove_handle
|       `-> 0x0002de8c      f4619fe5       ldr r6, [0x0002e088]        ; [0x2e088:4]=0x8594
|           0x0002de90      060094e7       ldr r0, [r4, r6]
|           0x0002de94      000050e3       cmp r0, 0
|       ,=< 0x0002de98      0300000a       beq 0x2deac
|       |   0x0002de9c      0010a0e3       mov r1, 0
|       |   0x0002dea0      fda9ffeb       bl rsym.Curl_llist_destroy
|       |   0x0002dea4      0030a0e3       mov r3, 0
|       |   0x0002dea8      063084e7       str r3, [r4, r6]
|       `-> 0x0002deac      b43494e5       ldr r3, [r4, 0x4b4]
|           0x0002deb0      d4219fe5       ldr r2, [0x0002e08c]        ; [0x2e08c:4]=0x86a4
|           0x0002deb4      0010a0e3       mov r1, 0
|           0x0002deb8      000053e3       cmp r3, 0
|           0x0002debc      021084e7       str r1, [r4, r2]
|       ,=< 0x0002dec0      0200000a       beq 0x2ded0
|       |   0x0002dec4      080093e5       ldr r0, [r3, 8]
|       |   0x0002dec8      010050e1       cmp r0, r1
|      ,==< 0x0002decc      0800000a       beq 0x2def4
|      |`-> 0x0002ded0      b8119fe5       ldr r1, [0x0002e090]        ; [0x2e090:4]=0x85b0
|      |    0x0002ded4      016094e7       ldr r6, [r4, r1]
|      |    0x0002ded8      000056e3       cmp r6, 0
|      |    0x0002dedc      04108112       addne r1, r1, 4
|      |    0x0002dee0      0120a013       movne r2, 1
|      |    0x0002dee4      0120c417       strbne r2, [r4, r1]
|      |,=< 0x0002dee8      0e00000a       beq 0x2df28
|     .---> 0x0002deec      0000a0e3       mov r0, 0
|     :||   0x0002def0      7080bde8       pop {r4, r5, r6, pc}
|    .-`--> 0x0002def4      0400a0e1       mov r0, r4
|    :: |   0x0002def8      50f2ffeb       bl 0x2a840
|    :: |   0x0002defc      010070e3       cmn r0, 1
|    `====< 0x0002df00      fbffff1a       bne 0x2def4
|     : |   0x0002df04      b40494e5       ldr r0, [r4, 0x4b4]
|     : |   0x0002df08      53a6ffeb       bl rsym.Curl_rm_connc
|     : |   0x0002df0c      7c119fe5       ldr r1, [0x0002e090]        ; [0x2e090:4]=0x85b0
|     : |   0x0002df10      016094e7       ldr r6, [r4, r1]
|     : |   0x0002df14      000056e3       cmp r6, 0
|     : |   0x0002df18      04108112       addne r1, r1, 4
|     : |   0x0002df1c      0120a013       movne r2, 1
|     : |   0x0002df20      0120c417       strbne r2, [r4, r1]
|     `===< 0x0002df24      f0ffff1a       bne 0x2deec
|       `-> 0x0002df28      042094e5       ldr r2, [r4, 4]
|           0x0002df2c      010052e3       cmp r2, 1
|       ,=< 0x0002df30      4e00000a       beq 0x2e070
|       |   ; CODE XREF from sym.Curl_close @ 0x2e080(x)
|      .--> 0x0002df34      58e19fe5       ldr lr, [0x0002e094]        ; [0x2e094:4]=0x85c2
|      :|   0x0002df38      0ec0d4e7       ldrb ip, [r4, lr]
|      :|   0x0002df3c      00005ce3       cmp ip, 0
|     ,===< 0x0002df40      3900001a       bne 0x2e02c
|     |:|   0x0002df44      4c619fe5       ldr r6, [0x0002e098]        ; [0x2e098:4]=0x6c4
|     |:|   ; CODE XREF from sym.Curl_close @ 0x2e044(x)
|    .----> 0x0002df48      4ce19fe5       ldr lr, [0x0002e09c]        ; [0x2e09c:4]=0x85b8
|    :|:|   0x0002df4c      0e0094e7       ldr r0, [r4, lr]
|    :|:|   0x0002df50      2eaaffeb       bl rsym.Curl_safefree
|    :|:|   0x0002df54      44119fe5       ldr r1, [0x0002e0a0]        ; [0x2e0a0:4]=0x85dc
|    :|:|   0x0002df58      010094e7       ldr r0, [r4, r1]
|    :|:|   0x0002df5c      2baaffeb       bl rsym.Curl_safefree
|    :|:|   0x0002df60      0400a0e1       mov r0, r4
|    :|:|   0x0002df64      cea7ffeb       bl rsym.Curl_ssl_close_all
|    :|:|   0x0002df68      34319fe5       ldr r3, [0x0002e0a4]        ; [0x2e0a4:4]=0x84dc
|    :|:|   0x0002df6c      030094e7       ldr r0, [r4, r3]
|    :|:|   0x0002df70      26aaffeb       bl rsym.Curl_safefree
|    :|:|   0x0002df74      2cc19fe5       ldr ip, [0x0002e0a8]        ; [0x2e0a8:4]=0x84f4
|    :|:|   0x0002df78      0c0094e7       ldr r0, [r4, ip]
|    :|:|   0x0002df7c      23aaffeb       bl rsym.Curl_safefree
|    :|:|   0x0002df80      0400a0e1       mov r0, r4
|    :|:|   0x0002df84      5aa7ffeb       bl rsym.Curl_ssl_free_certinfo
|    :|:|   0x0002df88      a403d4e5       ldrb r0, [r4, 0x3a4]
|    :|:|   0x0002df8c      000050e3       cmp r0, 0
|   ,=====< 0x0002df90      3100001a       bne 0x2e05c
|   |:|:|   ; CODE XREF from sym.Curl_close @ 0x2e06c(x)
|  .------> 0x0002df94      9c03d4e5       ldrb r0, [r4, 0x39c]
|  :|:|:|   0x0002df98      000050e3       cmp r0, 0
| ,=======< 0x0002df9c      2900001a       bne 0x2e048
| |:|:|:|   ; CODE XREF from sym.Curl_close @ 0x2e058(x)
| --------> 0x0002dfa0      c40494e5       ldr r0, [r4, 0x4c4]
| |:|:|:|   0x0002dfa4      19aaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0002dfa8      0110a0e3       mov r1, 1
| |:|:|:|   0x0002dfac      0400a0e1       mov r0, r4
| |:|:|:|   0x0002dfb0      c2f8ffeb       bl 0x2c2c0
| |:|:|:|   0x0002dfb4      0400a0e1       mov r0, r4
| |:|:|:|   0x0002dfb8      01a8ffeb       bl rsym.Curl_digest_cleanup
| |:|:|:|   0x0002dfbc      e8309fe5       ldr r3, [0x0002e0ac]        ; [0x2e0ac:4]=0x862c
| |:|:|:|   0x0002dfc0      030094e7       ldr r0, [r4, r3]
| |:|:|:|   0x0002dfc4      11aaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0002dfc8      e0c09fe5       ldr ip, [0x0002e0b0]        ; [0x2e0b0:4]=0x8630
| |:|:|:|   0x0002dfcc      0c0094e7       ldr r0, [r4, ip]
| |:|:|:|   0x0002dfd0      0eaaffeb       bl rsym.Curl_safefree
| |:|:|:|   0x0002dfd4      102094e5       ldr r2, [r4, 0x10]
| |:|:|:|   0x0002dfd8      000052e3       cmp r2, 0
| ========< 0x0002dfdc      0a00000a       beq 0x2e00c
| |:|:|:|   0x0002dfe0      0110a0e3       mov r1, 1
| |:|:|:|   0x0002dfe4      0220a0e3       mov r2, 2
| |:|:|:|   0x0002dfe8      0400a0e1       mov r0, r4
| |:|:|:|   0x0002dfec      0ba9ffeb       bl rsym.Curl_share_lock
| |:|:|:|   0x0002dff0      10c094e5       ldr ip, [r4, 0x10]
| |:|:|:|   0x0002dff4      0400a0e1       mov r0, r4
| |:|:|:|   0x0002dff8      0110a0e3       mov r1, 1
| |:|:|:|   0x0002dffc      04309ce5       ldr r3, [ip, 4]
| |:|:|:|   0x0002e000      012043e2       sub r2, r3, 1
| |:|:|:|   0x0002e004      04208ce5       str r2, [ip, 4]
| |:|:|:|   0x0002e008      09aaffeb       bl rsym.Curl_share_unlock
| --------> 0x0002e00c      0400a0e1       mov r0, r4
| |:|:|:|   0x0002e010      0ea6ffeb       bl rsym.Curl_freeset
| |:|:|:|   0x0002e014      062095e7       ldr r2, [r5, r6]
| |:|:|:|   0x0002e018      0400a0e1       mov r0, r4
| |:|:|:|   0x0002e01c      001092e5       ldr r1, [r2]
| |:|:|:|   0x0002e020      31ff2fe1       blx r1
| |:|:|:|   0x0002e024      0000a0e3       mov r0, 0
| |:|:|:|   0x0002e028      7080bde8       pop {r4, r5, r6, pc}
| |:|:`---> 0x0002e02c      64609fe5       ldr r6, [0x0002e098]        ; [0x2e098:4]=0x6c4
| |:|: :|   0x0002e030      7c209fe5       ldr r2, [0x0002e0b4]        ; [0x2e0b4:4]=0x85c4
| |:|: :|   0x0002e034      061095e7       ldr r1, [r5, r6]
| |:|: :|   0x0002e038      020094e7       ldr r0, [r4, r2]
| |:|: :|   0x0002e03c      003091e5       ldr r3, [r1]
| |:|: :|   0x0002e040      33ff2fe1       blx r3
| |:|`====< 0x0002e044      bfffffea       b 0x2df48
| `-------> 0x0002e048      061095e7       ldr r1, [r5, r6]
|  :|  :|   0x0002e04c      980394e5       ldr r0, [r4, 0x398]
|  :|  :|   0x0002e050      003091e5       ldr r3, [r1]
|  :|  :|   0x0002e054      33ff2fe1       blx r3
| ========< 0x0002e058      d0ffffea       b 0x2dfa0
|  :`-----> 0x0002e05c      06c095e7       ldr ip, [r5, r6]
|  :   :|   0x0002e060      a00394e5       ldr r0, [r4, 0x3a0]
|  :   :|   0x0002e064      00209ce5       ldr r2, [ip]
|  :   :|   0x0002e068      32ff2fe1       blx r2
|  `======< 0x0002e06c      c8ffffea       b 0x2df94
|      :`-> 0x0002e070      000094e5       ldr r0, [r4]
|      :    0x0002e074      39a7ffeb       bl rsym.Curl_hash_destroy
|      :    0x0002e078      006084e5       str r6, [r4]
|      :    0x0002e07c      046084e5       str r6, [r4, 4]
\      `==< 0x0002e080      abffffea       b 0x2df34
EOF
RUN
