DragonFly BSD
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


From: John Marino <marino@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 23 Jan 2012 08:15:11 -0800 (PST)

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]