I was reading about linkers, relocation etc...
There is one question which I didn't find a clear answer to it, for relocation of variables we use the GOT (Global Offset Table), But for functions we use PLT which uses GOT in return.
My question is: Why we need PLT at all, Why to add that extra layer, why GOT isn't enough for functions?