bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/24302] When DF_BIND_NOW the dt_tlsdesc_got should not be used


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/24302] When DF_BIND_NOW the dt_tlsdesc_got should not be used
Date: Thu, 11 Apr 2019 10:38:38 +0000

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

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

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

commit ce12121b63145322b4961bbb2b94b939cb916ba7
Author: Tamar Christina <address@hidden>
Date:   Thu Apr 11 11:27:28 2019 +0100

    AArch64: When DF_BIND_NOW don't use TLSDESC GOT value.

    When using DF_BIND_NOW on AArch64 we don't reserve the GOT slot for a
TLSDESC,
    but we still emitted DT_TLSDESC_GOT and DT_TLSDESC_PLT.  This caused random
    memory corruption as the "special" value of (bfd_vma)-1 would be set for
    dt_tlsdesc_got.

    Since we don't have a value of dt_tlsdesc_got I also don't emit
DT_TLSDESC_PLT
    now becuase it would point to an incomplete PLT. To be able to write the
PLT
    entry DT_TLSDESC_GOT is needed and since we don't have one we can't write
the
    PLT entry either.

    It is my understanding that GLIBC doesn't need these two entries when not
lazy
    loading.  Conversely AArch32 does not reserve neither the GOT not the PLT
slot
    when doing DF_BIND_NOW.

    AArch32 does not need these checks because these values are initialized to
0
    and so the if (...) checks don't pass, but on AArch64 these are initialized
    to (bfd_vma)-1 and thus we need some extra checks.

    bfd/ChangeLog:

        PR ld/24302
        * elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections): Don't emit
        DT_TLSDESC_GOT and DT_TLSDESC_PLT when DF_BIND_NOW.
        (elfNN_aarch64_finish_dynamic_sections): Don't write PLT if
DF_BIND_NOW.

    ld/ChangeLog:

        PR ld/24302
        * testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
        * testsuite/ld-aarch64/tls-relax-gdesc-le-now.d: New test.

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