bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/18289] Support copy relocation in PIE


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/18289] Support copy relocation in PIE
Date: Wed, 22 Apr 2015 12:34:13 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=18289

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by H.J. Lu <address@hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d5597ebccca6761fb641b7fc99b6e8b56fbac6e2

commit d5597ebccca6761fb641b7fc99b6e8b56fbac6e2
Author: H.J. Lu <address@hidden>
Date:   Wed Apr 22 05:24:54 2015 -0700

    i386: Allow copy relocs for building PIE

    This patch allows copy relocs for R_386_GOTOFF relocations in PIE.  For

    extern int glob_a;
    int foo ()
    {
      return glob_a;
    }

    compiler now can optimize it from

        call    __x86.get_pc_thunk.ax
        addl    $_GLOBAL_OFFSET_TABLE_, %eax
        movl    address@hidden(%eax), %eax
        movl    (%eax), %eax
        ret

    to

        call    __x86.get_pc_thunk.ax
        addl    $_GLOBAL_OFFSET_TABLE_, %eax
        movl    address@hidden(%eax), %eax
        ret

    bfd/

        PR ld/18289
        * elf32-i386.c (elf_i386_link_hash_entry): Add gotoff_ref.
        (elf_i386_link_hash_newfunc): Initialize gotoff_ref to 0.
        (elf_i386_create_dynamic_sections): Always allow copy relocs for
        building executables.
        (elf_i386_copy_indirect_symbol): Also copy gotoff_ref.
        (elf_i386_check_relocs): Set gotoff_ref for R_386_GOTOFF.
        (elf_i386_adjust_dynamic_symbol): Also allocate copy relocs for
        PIE and R_386_GOTOFF.
        (elf_i386_relocate_section): Allow R_386_GOTOFF in executable.

    ld/testsuite/

        PR ld/18289
        * ld-i386/copyreloc-lib.c: New file.
        * ld-i386/copyreloc-main.S: Likewise.
        * ld-i386/copyreloc-main.out: Likewise.
        * ld-i386/copyreloc-main1.rd: Likewise.
        * ld-i386/copyreloc-main2.rd: Likewise.
        * ld-i386/dummy.c: Likewise.
        * ld-i386/pr17689.out: Likewise.
        * ld-i386/pr17689.rd: Likewise.
        * ld-i386/pr17689a.c: Likewise.
        * ld-i386/pr17689b.S: Likewise.
        * ld-i386/pr17827.rd: Likewise.
        * ld-i386/pr17827ver.rd: Likewise.
        * ld-i386/i386.exp: Run copyreloc tests.

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]