]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/commit
MFC r228435:
authorkib <kib@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 4 Jan 2012 16:43:29 +0000 (16:43 +0000)
committerkib <kib@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 4 Jan 2012 16:43:29 +0000 (16:43 +0000)
commit7329b7366e5b3863796d52b4dac2264f1eb09a1e
treeb2448b7fdd9daa2380f97d7d2b37b2a0c1b7ffec
parent628e40605472a225e619d5c7cbc1b96bf953b960
MFC r228435:
Add support for STT_GNU_IFUNC and R_MACHINE_IRELATIVE GNU extensions to
rtld on 386 and amd64.

MFC r228503:
Postpone the resolution for irelative/ifunc right before initializers
are called, and drop bind lock around calls to dispatcher.  Use
initlist to iterate over the objects instead of the ->next, due to
drop of the bind lock in iteration.

For i386/reloc.c:reloc_iresolve(), fix calculation of the dispatch
function address for dso, by taking into account possible non-zero
relocbase.

MFC r228635 (by nwhitehorn):
Fix RTLD on PowerPC after r228435. Changing the order of init_pltgot()
caused the icache to be invalidated at the wrong time, resulting in
an icache full of nonsense in the PLT section.

git-svn-id: svn://svn.freebsd.org/base/stable/9@229503 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
libexec/rtld-elf/amd64/reloc.c
libexec/rtld-elf/arm/reloc.c
libexec/rtld-elf/i386/reloc.c
libexec/rtld-elf/ia64/reloc.c
libexec/rtld-elf/mips/reloc.c
libexec/rtld-elf/powerpc/reloc.c
libexec/rtld-elf/powerpc64/reloc.c
libexec/rtld-elf/rtld.c
libexec/rtld-elf/rtld.h
libexec/rtld-elf/sparc64/reloc.c