bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/24601] aarch64: local-exec TPREL relocations to weak undefined s


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/24601] aarch64: local-exec TPREL relocations to weak undefined symbols -> assertion fail
Date: Wed, 28 Aug 2019 08:46:41 +0000

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

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The binutils-2_32-branch branch has been updated by Tamar Christina
<address@hidden>:

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

commit 6795dba28d531a17a0800d532d555653415702bb
Author: Tamar Christina <address@hidden>
Date:   Thu Aug 22 11:35:35 2019 +0100

    AArch64: Fix LD crash on weak and undefined TLS symbols. (PR/24602).

    This patch fixes a few linker crashes due to TLS code reaching an assert
when it
    shouldn't.

    The first scenario is with weak TLS symbols that remain weak during
linking.  In
    this case the mid-end would not have seen a TLS symbol and so wouldn't have
    allocated the TLS section.  We currently assert here and the linker crashes
with
    a not very useful message.

    This patch changes this to return the value 0 for the TLS symbol in
question
    emulating what lld and gold and other BFD targets do.  However because weak
TLS
    is implementation defined and we don't define any behavior for it I also
emit a
    warning to the user to inform them of such.

    Secondly when a strong TLS reference is undefined. The linker crashes even
after
    it correctly reported that there is an undefined reference.  This changes
it so
    that it gracefully exits and reports a useful error.

    bfd/ChangeLog:

        PR ld/24601
        * elfnn-aarch64.c (aarch64_relocate): Handle weak TLS and undefined
TLS.
        Also Pass input_bfd to _bfd_aarch64_elf_resolve_relocation.
        * elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use it.
        * elfxx-aarch64.h (_bfd_aarch64_elf_resolve_relocation): Emit warning
        for weak TLS.

    ld/ChangeLog:

        PR ld/24601
        * testsuite/ld-aarch64/aarch64-elf.exp (undef-tls, weak-tls): New.
        * testsuite/ld-aarch64/undef-tls.d: New test.
        * testsuite/ld-aarch64/undef-tls.s: New test.
        * testsuite/ld-aarch64/weak-tls.d: New test.
        * testsuite/ld-aarch64/weak-tls.s: New test.

    (cherry picked from commit 652afeef247770b22c44ca292d1f4c65be40a696)

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