DragonFly BSD
DragonFly commits List (threaded) for 2011-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: kernel ELF: Reimplement Elf Branding, .note.ABI-tag


From: John Marino <marino@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 11 May 2011 00:28:28 -0700 (PDT)

commit 315b8b8b77c1101b25fef36483a8d0474a1befb2
Author: John Marino <draco@marino.st>
Date:   Tue May 10 21:17:07 2011 +0200

    kernel ELF: Reimplement Elf Branding, .note.ABI-tag
    
    Static executables built with the GNU gold linker are not recognized as
    valid ELF binaries, although the same binaries built by ld linker did
    work.
    
    It was suspected that gold was keying off the .note.ABI-tag.  Primitive
    support for this tag had been added years ago from NetBSD, and later
    Corecode disabled it except for ELF program headers.
    
    I removed all the .note.ABI-tag support that had been added after
    DragonFly forked from FreeBSD and ported over FreeBSD's branding logic
    and .note.ABI-tag support.  In particular, the branding logic a lot
    cleaner now, and will easily support 32-bit binaries on x86_64 should
    this feature arise in DragonFly in the future.
    
    With these changes, gold can now build static executables that are
    recognized and execute.  The Linuxolator had to be modified to work
    with the new branding scheme as well (i386 only).

Summary of changes:
 sys/cpu/i386/misc/elf_machdep.c         |   44 ++-
 sys/cpu/x86_64/misc/elf_machdep.c       |   43 ++
 sys/emulation/linux/i386/linux_sysvec.c |  207 ++++-----
 sys/kern/imgact_elf.c                   |  714 ++++++++++++++-----------------
 sys/kern/init_main.c                    |   11 +-
 sys/kern/kern_exec.c                    |    2 +
 sys/kern/kern_mib.c                     |    2 -
 sys/sys/imgact_elf.h                    |  105 ++---
 sys/sys/proc.h                          |    2 +-
 sys/sys/systm.h                         |    1 +
 10 files changed, 564 insertions(+), 567 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/315b8b8b77c1101b25fef36483a8d0474a1befb2


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]