[PATCH] D62059: [ELF] Don't align PT_TLS's p_memsz

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 17 04:17:28 PDT 2019


MaskRay created this revision.
MaskRay added reviewers: peter.smith, ruiu, rprichard.
Herald added subscribers: llvm-commits, kristof.beyls, arichardson, javed.absar, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.

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

In case of larger alignment (e.g. 64 for Android Bionic on AArch64, see
D62055 <https://reviews.llvm.org/D62055>), this may make the overhead much smaller.


Repository:
  rLLD LLVM Linker

https://reviews.llvm.org/D62059

Files:
  ELF/Writer.cpp
  test/ELF/tls-align.s


Index: test/ELF/tls-align.s
===================================================================
--- test/ELF/tls-align.s
+++ /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", 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: }
Index: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ ELF/Writer.cpp
@@ -2202,11 +2202,6 @@
         // 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);
     }
   }
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62059.200017.patch
Type: text/x-patch
Size: 1278 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190517/f036ddd6/attachment.bin>


More information about the llvm-commits mailing list