[ELF] Don't align PT_TLS's p_memsz
authorFangrui Song <maskray@google.com>
Fri, 17 May 2019 12:48:53 +0000 (12:48 +0000)
committerFangrui Song <maskray@google.com>
Fri, 17 May 2019 12:48:53 +0000 (12:48 +0000)
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

llvm-svn: 361029

lld/ELF/Writer.cpp
lld/test/ELF/tls-align.s [deleted file]

index cfc131af279664c6664bfb4f6aefd5a8499cf92b..b18c1cfbc6ec8240267105fa7e1f72b09ebdc1e2 100644 (file)
@@ -2202,11 +2202,6 @@ template <class ELFT> void Writer<ELFT>::setPhdrs() {
         // 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);
     }
   }
 }
diff --git a/lld/test/ELF/tls-align.s b/lld/test/ELF/tls-align.s
deleted file mode 100644 (file)
index 1f7cfbb..0000000
+++ /dev/null
@@ -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",@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: }