[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, 18 Apr 2019 16:20:08 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=24302
--- Comment #7 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=eb23038d19295a783144ec266736d486e5671d96
commit eb23038d19295a783144ec266736d486e5671d96
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.
(cherry picked from commit ce12121b63145322b4961bbb2b94b939cb916ba7)
--
You are receiving this mail because:
You are on the CC list for the bug.