[lld] r361029 - [ELF] Don't align PT_TLS's p_memsz

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Fri May 17 05:48:53 PDT 2019


Author: maskray
Date: Fri May 17 05:48:53 2019
New Revision: 361029

URL: http://llvm.org/viewvc/llvm-project?rev=361029&view=rev
Log:
[ELF] Don't align PT_TLS's p_memsz

The code was added in r252352, probably to address some layout issues.
Actually PT_TLS's p_memsz doesn't need to be aligned on either variant.
ld.bfd doesn't do that.

In case of larger alignment (e.g. 64 for Android Bionic on AArch64, see
D62055), this may make the overhead smaller.

Reviewed By: ruiu

Differential Revision: https://reviews.llvm.org/D62059

Removed:
    lld/trunk/test/ELF/tls-align.s
Modified:
    lld/trunk/ELF/Writer.cpp

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=361029&r1=361028&r2=361029&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Fri May 17 05:48:53 2019
@@ -2202,11 +2202,6 @@ template <class ELFT> void Writer<ELFT>:
         // done on other operating systems.
         P->p_align = std::max<uint64_t>(P->p_align, Config->Wordsize * 8);
       }
-
-      // The TLS pointer goes after PT_TLS for variant 2 targets. At least glibc
-      // will align it, so round up the size to make sure the offsets are
-      // correct.
-      P->p_memsz = alignTo(P->p_memsz, P->p_align);
     }
   }
 }

Removed: lld/trunk/test/ELF/tls-align.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-align.s?rev=361028&view=auto
==============================================================================
--- lld/trunk/test/ELF/tls-align.s (original)
+++ lld/trunk/test/ELF/tls-align.s (removed)
@@ -1,21 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-// RUN: ld.lld %t -o %tout -shared
-// RUN: llvm-readobj -l %tout | FileCheck %s
-
-        .section        .tbss,"awT", at nobits
-        .align  8
-        .long   0
-
-// CHECK:      ProgramHeader {
-// CHECK:        Type: PT_TLS
-// CHECK-NEXT:   Offset:
-// CHECK-NEXT:   VirtualAddress:
-// CHECK-NEXT:   PhysicalAddress:
-// CHECK-NEXT:   FileSize: 0
-// CHECK-NEXT:   MemSize: 8
-// CHECK-NEXT:   Flags [
-// CHECK-NEXT:     PF_R (0x4)
-// CHECK-NEXT:   ]
-// CHECK-NEXT:   Alignment: 8
-// CHECK-NEXT: }




More information about the llvm-commits mailing list