Date: Thu, 24 Jun 1999 19:54:00 -0700 (PDT) From: John Polstra <jdp@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/libexec/rtld-elf rtld.c src/libexec/rtld-elf/alpha reloc.c rtld_machdep.h src/libexec/rtld-elf/i386 reloc.c rtld_machdep.h Message-ID: <199906250254.TAA94521@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
jdp 1999/06/24 19:54:00 PDT Modified files: libexec/rtld-elf rtld.c libexec/rtld-elf/alpha reloc.c rtld_machdep.h libexec/rtld-elf/i386 reloc.c rtld_machdep.h Log: Fix a serious performance bug for large programs on the Alpha, discovered by Hidetoshi Shimokawa. 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. Tested by Hidetoshi Shimokawa and Steve Price. Reviewed by: Doug Rabson <dfr@freebsd.org> Revision Changes Path 1.24 +7 -7 src/libexec/rtld-elf/rtld.c 1.5 +161 -43 src/libexec/rtld-elf/alpha/reloc.c 1.2 +3 -1 src/libexec/rtld-elf/alpha/rtld_machdep.h 1.3 +23 -27 src/libexec/rtld-elf/i386/reloc.c 1.2 +9 -1 src/libexec/rtld-elf/i386/rtld_machdep.h To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199906250254.TAA94521>