[PATCH] D139909: [lld-macho] Fix __objc_stubs ordering
Keith Smiley via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 13 10:11:16 PST 2022
keith updated this revision to Diff 482541.
keith marked an inline comment as done.
keith added a comment.
Make tests address independent
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139909/new/
https://reviews.llvm.org/D139909
Files:
lld/MachO/OutputSegment.cpp
lld/test/MachO/x86-64-objc-stubs.s
Index: lld/test/MachO/x86-64-objc-stubs.s
===================================================================
--- lld/test/MachO/x86-64-objc-stubs.s
+++ lld/test/MachO/x86-64-objc-stubs.s
@@ -2,17 +2,35 @@
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
# RUN: %lld -arch x86_64 -lSystem -o %t.out %t.o
-# RUN: llvm-otool -vs __TEXT __objc_stubs %t.out | FileCheck %s
+# RUN: llvm-objdump --macho --section-headers %t.out > %t.txt
+# RUN: llvm-otool -vs __DATA __objc_selrefs %t.out >> %t.txt
+# RUN: llvm-otool -vs __TEXT __objc_stubs %t.out >> %t.txt
+# RUN: FileCheck %s < %t.txt
+
+# CHECK: Sections:
+# CHECK: __got {{[0-9a-f]*}} [[#%x, GOTSTART:]] DATA
+# CHECK: __objc_selrefs {{[0-9a-f]*}} [[#%x, SELSTART:]] DATA
+
+# CHECK: Contents of (__DATA,__objc_selrefs) section
+
+# CHECK-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:foo
+# CHECK-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:bar
+# CHECK-NEXT: [[#%x, FOOSELREF:]] __TEXT:__objc_methname:foo
+# CHECK-NEXT: [[#%x, LENGTHSELREF:]] __TEXT:__objc_methname:length
# CHECK: Contents of (__TEXT,__objc_stubs) section
# CHECK-NEXT: _objc_msgSend$foo:
-# CHECK-NEXT: 00000001000004b8 movq 0x1b51(%rip), %rsi
-# CHECK-NEXT: 00000001000004bf jmpq *0xb3b(%rip)
+# CHECK-NEXT: [[#%x, PC1:]]
+# CHECK-SAME: movq 0x[[#%x, FOOSELREF - PC1 - 7]](%rip), %rsi
+# CHECK-NEXT: [[#%x, PC2:]]
+# CHECK-SAME: jmpq *0x[[#%x, GOTSTART - PC2 - 6]](%rip)
# CHECK-NEXT: _objc_msgSend$length:
-# CHECK-NEXT: 00000001000004c5 movq 0x1b4c(%rip), %rsi
-# CHECK-NEXT: 00000001000004cc jmpq *0xb2e(%rip)
+# CHECK-NEXT: [[#%x, PC3:]]
+# CHECK-SAME: movq 0x[[#%x, LENGTHSELREF - PC3 - 7]](%rip), %rsi
+# CHECK-NEXT: [[#%x, PC4:]]
+# CHECK-SAME: jmpq *0x[[#%x, GOTSTART - PC4 - 6]](%rip)
# CHECK-EMPTY:
Index: lld/MachO/OutputSegment.cpp
===================================================================
--- lld/MachO/OutputSegment.cpp
+++ lld/MachO/OutputSegment.cpp
@@ -90,10 +90,11 @@
// Sections are uniquely identified by their segment + section name.
if (segname == segment_names::text) {
return StringSwitch<int>(osec->name)
- .Case(section_names::header, -5)
- .Case(section_names::text, -4)
- .Case(section_names::stubs, -3)
- .Case(section_names::stubHelper, -2)
+ .Case(section_names::header, -6)
+ .Case(section_names::text, -5)
+ .Case(section_names::stubs, -4)
+ .Case(section_names::stubHelper, -3)
+ .Case(section_names::objcStubs, -2)
.Case(section_names::initOffsets, -1)
.Case(section_names::unwindInfo, std::numeric_limits<int>::max() - 1)
.Case(section_names::ehFrame, std::numeric_limits<int>::max())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139909.482541.patch
Type: text/x-patch
Size: 2718 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221213/e1aef1ca/attachment.bin>
More information about the llvm-commits
mailing list