I am learning to analyze binaries using radare2 and have been confused about what occurs within imported functions. In the binary below, titled Lab2B, I statically disassembled the binary and then disassembled one of the imported library functions, sym.imp.printf. As you can see below it merely lists one instruction: jmp dword [reloc.printf]
. When I seek to the location [reloc.printf]
and I print the disassembled functions contained at it, the command line prints "Cannot find function at 0x0804a00c". I have noticed the same behavior with all of the other imported functions. They often have a single instruction that points to an address that doesn't contain any instructions.
Why are there no instructions contained at the address that the instruction tells the compiler to jump to?