git: rtld: Handle IFUNC symbols at non-PLT relocations
John Marino
marino at crater.dragonflybsd.org
Sun Nov 30 08:51:23 PST 2014
commit ff452243b78f779a7264d7443795005236f6950e
Author: John Marino <draco at marino.st>
Date: Sun Nov 30 16:48:25 2014 +0100
rtld: Handle IFUNC symbols at non-PLT relocations
An example of this is initializing a global variable with a pointer to
ifunc. This adds a symble type check and call resolver for STT_GNU_IFNC
symbol types whien processing non-PLT relocations, but only after
non-IFUNC relocations are done. The two-phase processing is required
since resolvers may reference other symbols which most be ready to use
when resolver calls are done.
This restructures reloc_non_plt() to call find_symdef() and handle IFUNC
in a single place.
Taken from: FreeBSD svn 270798 (29 Aug 2014)
FreeBSD svn 270802 (29 Aug 2014)
Summary of changes:
libexec/rtld-elf/i386/reloc.c | 264 ++++++++++++++----------------
libexec/rtld-elf/rtld.c | 24 ++-
libexec/rtld-elf/rtld.h | 10 +-
libexec/rtld-elf/x86_64/reloc.c | 351 +++++++++++++++++++---------------------
4 files changed, 307 insertions(+), 342 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/ff452243b78f779a7264d7443795005236f6950e
--
DragonFly BSD source repository
More information about the Commits
mailing list