[PATCH] D104609: [lld/mac] Test zerofill sections after __thread_bss
Nico Weber via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 20 17:45:27 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGe6cb55d5ceb8: [lld/mac] Test zerofill sections after __thread_bss (authored by thakis).
Herald added a project: LLVM.
Changed prior to commit:
https://reviews.llvm.org/D104609?vs=353248&id=353253#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D104609/new/
https://reviews.llvm.org/D104609
Files:
lld/MachO/OutputSegment.cpp
lld/test/MachO/tlv-dylib.s
Index: lld/test/MachO/tlv-dylib.s
===================================================================
--- lld/test/MachO/tlv-dylib.s
+++ lld/test/MachO/tlv-dylib.s
@@ -69,11 +69,29 @@
# FLAGS-NEXT: segname __DATA
# FLAGS-NEXT: addr
# FLAGS-NEXT: size 0x0000000000000008
-# FLAGS-NEXT: offset
+# FLAGS-NEXT: offset 0
# FLAGS-NEXT: align 2^3 (8)
# FLAGS-NEXT: reloff 0
# FLAGS-NEXT: nreloc 0
# FLAGS-NEXT: type S_THREAD_LOCAL_ZEROFILL
+# FLAGS: sectname __bss
+# FLAGS-NEXT: segname __DATA
+# FLAGS-NEXT: addr
+# FLAGS-NEXT: size 0x0000000000002000
+# FLAGS-NEXT: offset 0
+# FLAGS-NEXT: align 2^0 (1)
+# FLAGS-NEXT: reloff 0
+# FLAGS-NEXT: nreloc 0
+# FLAGS-NEXT: type S_ZEROFILL
+# FLAGS: sectname __common
+# FLAGS-NEXT: segname __DATA
+# FLAGS-NEXT: addr
+# FLAGS-NEXT: size 0x0000000000004000
+# FLAGS-NEXT: offset 0
+# FLAGS-NEXT: align 2^14 (16384)
+# FLAGS-NEXT: reloff 0
+# FLAGS-NEXT: nreloc 0
+# FLAGS-NEXT: type S_ZEROFILL
#--- libtlv.s
.section __DATA,__thread_vars,thread_local_variables
@@ -95,6 +113,12 @@
## Add some TLVs to test too, so that we can test the ordering
## of __thread_ptrs, __thread_data, and __thread_bss.
+## Also add a .bss and a .comm for good measure too. Since they
+## are both zerofill, they end up after __thread_bss.
+.comm _com, 0x4000
+.bss
+.zero 0x2000
+
.section __DATA,__thread_data,thread_local_regular
_tfoo$tlv$init:
.quad 123
Index: lld/MachO/OutputSegment.cpp
===================================================================
--- lld/MachO/OutputSegment.cpp
+++ lld/MachO/OutputSegment.cpp
@@ -130,8 +130,10 @@
.Case(section_names::codeSignature, std::numeric_limits<int>::max())
.Default(osec->inputOrder);
}
- // ZeroFill sections must always be the at the end of their segments,
- // otherwise subsequent sections may get overwritten with zeroes at runtime.
+ // ZeroFill sections must always be the at the end of their segments:
+ // dyld checks if a segment's file size is smaller than its in-memory
+ // size to detect if a segment has zerofill sections, and if so it maps
+ // the missing tail as zerofill.
if (sectionType(osec->flags) == S_ZEROFILL)
return std::numeric_limits<int>::max();
return osec->inputOrder;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D104609.353253.patch
Type: text/x-patch
Size: 2339 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210621/052d1d95/attachment.bin>
More information about the llvm-commits
mailing list