bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/22842] Handling of R_X86_64_PC32 in a PIE against a function in


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/22842] Handling of R_X86_64_PC32 in a PIE against a function in a shared library could be better
Date: Wed, 14 Feb 2018 11:51:57 +0000

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

--- Comment #12 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=451875b4f976a527395e9303224c7881b65e12ed

commit 451875b4f976a527395e9303224c7881b65e12ed
Author: H.J. Lu <address@hidden>
Date:   Wed Feb 14 03:50:40 2018 -0800

    x86-64: Use PLT address for PC-relative reloc

    Since PLT in PDE and PC-relative PLT in PIE can be used as function
    address, there is no need for dynamic PC-relative relocation against
    a dynamic function definition in PIE.  Linker should resolve PC-relative
    reference to its PLT address.

    NB: i386 has non-PIC PLT and PIC PLT.  Only non-PIC PLT in PDE can
    be used as function address.  PIC PLT in PIE can't be used as
    function address.

    bfd/

        PR ld/22842
        * elf32-i386.c (elf_i386_check_relocs): Pass FALSE for non
        PC-relative PLT to NEED_DYNAMIC_RELOCATION_P.
        * elf64-x86-64.c (elf_x86_64_check_relocs): Create PLT for
        R_X86_64_PC32 reloc against dynamic function in data section.
        Pass TRUE for PC-relative PLT to NEED_DYNAMIC_RELOCATION_P.
        (elf_x86_64_relocate_section): Use PLT for R_X86_64_PC32 reloc
        against dynamic function in data section.
        * elfxx-x86.c (elf_x86_allocate_dynrelocs): Use PLT in PIE as
        function address only if pcrel_plt is true.
        (_bfd_x86_elf_link_hash_table_create): Set pcrel_plt.
        * elfxx-x86.h (NEED_DYNAMIC_RELOCATION_P): Add PCREL_PLT for
        PC-relative PLT.  If PLT is PC-relative, don't generate dynamic
        PC-relative relocation against a function definition in data
        secton in PIE.  Remove the obsolete comments.
        (elf_x86_link_hash_table): Add pcrel_plt.

    ld/

        PR ld/22842
        * testsuite/ld-i386/i386.exp: Run PR ld/22842 tests.
        * testsuite/ld-x86-64/x86-64.exp: Likewise.
        * testsuite/ld-i386/pr22842a.c: New file.
        * testsuite/ld-i386/pr22842b.S: Likewise.
        * testsuite/ld-x86-64/pr22842a.c: Likewise.
        * testsuite/ld-x86-64/pr22842a.rd: Likewise.
        * testsuite/ld-x86-64/pr22842b.S: Likewise.
        * testsuite/ld-x86-64/pr22842b.rd: Likewise.

-- 
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]