[PATCH] D139909: [lld-macho] Fix __objc_stubs ordering

Keith Smiley via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 13 13:24:46 PST 2022


This revision was automatically updated to reflect the committed changes.
Closed by commit rG3a8c6a3039af: [lld-macho] Fix __objc_stubs ordering (authored by keith).

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.482615.patch
Type: text/x-patch
Size: 2718 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221213/a287b6f6/attachment.bin>


More information about the llvm-commits mailing list