[PATCH] D105975: MachO: don't emit L... private symbols in do_not_dead_strip sections.
Tim Northover via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 14 05:57:51 PDT 2021
t.p.northover created this revision.
t.p.northover added a reviewer: steven_wu.
Herald added subscribers: pengfei, hiraditya, mcrosier.
t.p.northover requested review of this revision.
Herald added a project: LLVM.
The linker can sometimes drop the do_not_dead_strip if it can't associate the atom with a symbol (the other place to specify no dead-stripping in MachO files).
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D105975
Files:
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm/test/CodeGen/X86/osx-private-labels.ll
Index: llvm/test/CodeGen/X86/osx-private-labels.ll
===================================================================
--- llvm/test/CodeGen/X86/osx-private-labels.ll
+++ llvm/test/CodeGen/X86/osx-private-labels.ll
@@ -73,7 +73,7 @@
@private13 = private global i32 42, section "__DATA, __objc_classlist, regular, no_dead_strip"
; CHECK: .section __DATA,__objc_classlist,regular,no_dead_strip
; CHECK-NEXT: .p2align 2
-; CHECK-NEXT: L_private13:
+; CHECK-NEXT: _private13:
@private14 = private global [4 x i8] c"zed\00", section "__TEXT,__objc_classname,cstring_literals"
; CHECK: .section __TEXT,__objc_classname,cstring_literals
Index: llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
===================================================================
--- llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -1480,11 +1480,10 @@
if (!AsmInfo.isSectionAtomizableBySymbols(Section))
return true;
- // If it is not dead stripped, it is safe to use private labels.
- const MCSectionMachO &SMO = cast<MCSectionMachO>(Section);
- if (SMO.hasAttribute(MachO::S_ATTR_NO_DEAD_STRIP))
- return true;
-
+ // FIXME: we should be able to use private labels for sections that can't be
+ // dead-stripped (there's no issue with blocking atomization there), but `ld
+ // -r` sometimes drops the no_dead_strip attribute from sections so for safety
+ // we don't allow it.
return false;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105975.358574.patch
Type: text/x-patch
Size: 1462 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210714/b31559c9/attachment.bin>
More information about the llvm-commits
mailing list