I have a question about dynamic linking on Linux. Consider the following disassembly of an ARM binary.8300 <printf@plt-0x40>:    ....8320:   e28fc600    add ip, pc, #0, 128324:   e28cca08    add ip, ip, #8, 20  ; 0x80008328:   e5bcf344    ldr pc, [ip, #836]! ; 0x344  ....83fc <main>:  ....8424:   ebffffbd   bl  8320 <_init+0x2c>the main() function calls printf() at 8424: bl 8320. Where 8320 is an address in the .plt shown above. Now, the code in .plt makes call to dynamic linker to invoke printf() routine. My question is how the dynamic linker will be able to say that it is a call to printf()?
How the dynamic linker determines which routine to call on Linux?
elf;dynamic linking