Carl-Daniel Hailfinger wrote:
We're missing one crucial piece which is necessary to get PIC to work: The linker. PIC code must be linked _after_ its location is known.
That sounds absurd as it would totally defeat the purpose of PIC.
It's position independent code exactly _because_ you can't know the position at link time.
Which is why the compiler would always block a register for house keeping, when compiling -fPIC (at least it used to be that way). This hurts more on x86 than on other platforms because x86 is basically a stack machine with an unclean design (pun intended), but we wouldn't care.
Stefan