(in Windows) PE file format contains Import table with Module\Dll Name
which tells PE loader where to search for symbol e.g. KERNEL32.dll -> CreateFileW
In the ELF file format there is Symbol table
with info
field which tells if the symbol is Global\Local\Weak\etc.
My question is how does the Unix loader know what is the module, shared object where to search for this symbol e.g. ???? -> snprintf
I noticed objdump can dump this info objdump -T /bin/ls
.
GLIBC_2.2.5 snprintf
Could someone with more knowledge on ELF file format shed some light on Unix dynamic-linking?