6a37882ec7
Large programs need multiple GOTs. The lazy binding stub in the PLT can be reached from any of these GOTs, but the dynamic linker only has enough information to fix up the first GOT entry. Thus, calls through the other GOTs went through the time-consuming lazy binding process on every call. This fix rewrites the PLT entries themselves to bypass the lazy binding for those GOT entries that the dynamic linker can't fixup. Fix from FreeBSD. Note that now that we patch up the PLT, we need to put back the "imb" that was removed from the binder exit path. |
||
---|---|---|
.. | ||
alpha | ||
arm | ||
hppa | ||
i386 | ||
m68k | ||
mips | ||
powerpc | ||
sh3 | ||
sparc | ||
sparc64 | ||
vax | ||
x86_64 |