NetBSD/libexec/ld.elf_so/arch
thorpej 6a37882ec7 Fix a serious performance problem for large programs on the Alpha.
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.
2002-09-08 02:48:28 +00:00
..
alpha Fix a serious performance problem for large programs on the Alpha. 2002-09-08 02:48:28 +00:00
arm Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
hppa Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
i386 Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
m68k Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
mips Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
powerpc Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
sh3 Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
sparc Expand the comment about the R_TYPE(RELATIVE) special-case, as it's not quite 2002-09-06 15:51:23 +00:00
sparc64 Expand the comment about the R_TYPE(RELATIVE) special-case, as it's not quite 2002-09-06 15:51:23 +00:00
vax Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
x86_64 Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00