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