summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/debug.c
diff options
context:
space:
mode:
authorjdp <jdp@FreeBSD.org>1999-06-25 02:53:59 +0000
committerjdp <jdp@FreeBSD.org>1999-06-25 02:53:59 +0000
commit2be78ea16b1b57cbbbb05a25df4da4e456886b1e (patch)
tree83d8009aa5e1c5ab9099cc0f005d362f28775078 /libexec/rtld-elf/debug.c
parent5ebdb91f86b4fa1cd4c6463fe611646aaccb77e3 (diff)
downloadFreeBSD-src-2be78ea16b1b57cbbbb05a25df4da4e456886b1e.zip
FreeBSD-src-2be78ea16b1b57cbbbb05a25df4da4e456886b1e.tar.gz
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>
Diffstat (limited to 'libexec/rtld-elf/debug.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud