bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/18801] PIE binary with STT_GNU_IFUNC symbol and TEXTREL segfault


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/18801] PIE binary with STT_GNU_IFUNC symbol and TEXTREL segfaults on x86_64
Date: Tue, 09 Jun 2020 14:01:13 +0000

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

--- Comment #17 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 <hjl@sourceware.org>:

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

commit cebd6b8ac1c5a2a847a50e3efe932ff2d0867b3e
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Jun 9 06:56:55 2020 -0700

    IFUNC: Update IFUNC resolver check with DT_TEXTREL

    Add ifunc_resolvers to elf_link_hash_table and use it for both x86 and
    ppc64.  Before glibc commit b5c45e837, DT_TEXTREL is incompatible with
    IFUNC resolvers.  Set ifunc_resolvers if there are IFUNC resolvers and
    issue a warning for IFUNC resolvers with DT_TEXTREL.

    bfd/

            PR ld/18801
            * elf-bfd.h (elf_link_hash_table): Add ifunc_resolvers.
            (_bfd_elf_allocate_ifunc_dyn_relocs): Remove the
            bfd_boolean * argument.  Set ifunc_resolvers if there are IFUNC
            resolvers.
            * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Updated.
            Set ifunc_resolvers if there are FUNC resolvers.
            * elf64-ppc.c (ppc_link_hash_table): Remove local_ifunc_resolver.
            (build_global_entry_stubs_and_plt): Replace local_ifunc_resolver
            with elf.ifunc_resolvers.
            (write_plt_relocs_for_local_syms): Likewise.
            (ppc64_elf_relocate_section): Likewise.
            (ppc64_elf_finish_dynamic_sections): Likewise.
            * elfnn-aarch64.c (elfNN_aarch64_allocate_ifunc_dynrelocs):
            Updated.
            * elfxx-x86.c (elf_x86_allocate_dynrelocs): Likewise.
            (_bfd_x86_elf_size_dynamic_sections): Check elf.ifunc_resolvers
            instead of readonly_dynrelocs_against_ifunc.
            * elfxx-x86.h (elf_x86_link_hash_table): Remove
            readonly_dynrelocs_against_ifunc.

    ld/

            PR ld/18801
            * testsuite/ld-i386/i386.exp: Run ifunc-textrel-1a,
            ifunc-textrel-1b, ifunc-textrel-2a and ifunc-textrel-2b.
            * testsuite/ld-x86-64/x86-64.exp: Likewise.
            * testsuite/ld-i386/ifunc-textrel-1a.d: Likewise.
            * testsuite/ld-i386/ifunc-textrel-1b.d: Likewise.
            * testsuite/ld-i386/ifunc-textrel-2a.d: Likewise.
            * testsuite/ld-i386/ifunc-textrel-2b.d: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-1.s: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-1a.d: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-1b.d: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-2.s: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-2a.d: Likewise.
            * testsuite/ld-x86-64/ifunc-textrel-2b.d: Likewise.
            * testsuite/ld-i386/pr18801a.d: Expect warning for IFUNC
            resolvers.
            * testsuite/ld-i386/pr18801b.d: Likewise.
            * estsuite/ld-x86-64/pr18801a.d: Likewise.
            * estsuite/ld-x86-64/pr18801b.d: 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]