Dynamic Loading Mechanics: Understanding the Global Offset Table and Procedure Linkage Table
What Happens When Your Program Calls a Function?
You’ve just shipped a binary that calls
printf(). At runtime,printflives in libc.so, loaded at some random address thanks to ASLR. Your code compiles to fixed offsets. How does your call actually reach the right function? Welcome to the GOT and PLT – the dynamic linker’s runtime symbol resolution machine…

