DragonFly commits List (threaded) for 2012-01
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
git: rtld: Add STT_GNU_IFUNC and R_MACHINE_IRELATIVE_GNU support
commit 0e63a289be0e5b68be98ed583e6cf069f47ef7fa
Author: John Marino <draco@marino.st>
Date: Sun Jan 22 00:00:15 2012 +0100
rtld: Add STT_GNU_IFUNC and R_MACHINE_IRELATIVE_GNU support
Add support for STT_GNU_IFUNC and R_MACHINE_IRELATIVE GNU extensions to
rtld. This adds runtime bits neccessary for the use of the dispatch
functions from the dynamically-linked executables and shared libraries.
To allow use of external references from the dispatch function, resolution
of the R_MACHINE_IRESOLVE relocations in PLT is postponed until GOT entries
for PLT are prepared, and normal resolution of the GOT entries is finished.
Similar to how it is done by GNU, IRELATIVE relocations are resolved in
advance, instead of normal lazy handling for PLT.
Taken-from:
FreeBSD SVN 228435 (12 DEC 2011)
FreeBSD SVN 228503 (14 DEC 2011)
FreeBSD SVN 229508 (04 JAN 2012)
Summary of changes:
libexec/rtld-elf/i386/reloc.c | 110 +++++++++++++++++++++++++++-----------
libexec/rtld-elf/rtld.c | 105 ++++++++++++++++++++++++++++++++++---
libexec/rtld-elf/rtld.h | 5 ++
libexec/rtld-elf/x86_64/reloc.c | 75 ++++++++++++++++++++++++++
sys/cpu/i386/include/elf.h | 4 +-
sys/cpu/x86_64/include/elf.h | 3 +-
sys/sys/elf_common.h | 3 +-
7 files changed, 261 insertions(+), 44 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0e63a289be0e5b68be98ed583e6cf069f47ef7fa
--
DragonFly BSD source repository
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]