74 lines · plain
1# REQUIRES: x862 3# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o4# RUN: %lld -arch x86_64 -lSystem -o %t.out %t.o5# RUN: llvm-objdump --macho --section-headers %t.out > %t.txt6# RUN: llvm-otool -vs __DATA __objc_selrefs %t.out >> %t.txt7# RUN: llvm-otool -vs __TEXT __objc_stubs %t.out >> %t.txt8# RUN: FileCheck %s < %t.txt9# RUN: %no-fatal-warnings-lld -arch x86_64 -lSystem -o %t.out %t.o -objc_stubs_small 2>&1 | FileCheck %s --check-prefix=WARNING10 11# WARNING: warning: -objc_stubs_small is not yet implemented, defaulting to -objc_stubs_fast12 13# RUN: %lld -arch x86_64 -lSystem -o %t-icfsafe.out --icf=safe %t.o14# RUN: llvm-otool -vs __DATA __objc_selrefs %t-icfsafe.out | FileCheck %s --check-prefix=ICF15# RUN: %lld -arch x86_64 -lSystem -o %t-icfall.out --icf=all %t.o16# RUN: llvm-otool -vs __DATA __objc_selrefs %t-icfall.out | FileCheck %s --check-prefix=ICF17 18# CHECK: Sections:19# CHECK: __got {{[0-9a-f]*}} [[#%x, GOTSTART:]] DATA20# CHECK: __objc_selrefs {{[0-9a-f]*}} [[#%x, SELSTART:]] DATA21 22# CHECK: Contents of (__DATA,__objc_selrefs) section23 24# CHECK-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:foo25# CHECK-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:bar26# CHECK-NEXT: [[#%x, FOOSELREF:]] __TEXT:__objc_methname:foo27# CHECK-NEXT: [[#%x, LENGTHSELREF:]] __TEXT:__objc_methname:length28 29# ICF: Contents of (__DATA,__objc_selrefs) section30 31# ICF-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:foo32# ICF-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:bar33# ICF-NEXT: {{[0-9a-f]*}} __TEXT:__objc_methname:length34# ICF-EMPTY:35 36# CHECK: Contents of (__TEXT,__objc_stubs) section37 38# CHECK-NEXT: _objc_msgSend$foo:39# CHECK-NEXT: [[#%x, PC1:]]40# CHECK-SAME: movq 0x[[#%x, FOOSELREF - PC1 - 7]](%rip), %rsi41# CHECK-NEXT: [[#%x, PC2:]]42# CHECK-SAME: jmpq *0x[[#%x, GOTSTART - PC2 - 6]](%rip)43 44# CHECK-NEXT: _objc_msgSend$length:45# CHECK-NEXT: [[#%x, PC3:]]46# CHECK-SAME: movq 0x[[#%x, LENGTHSELREF - PC3 - 7]](%rip), %rsi47# CHECK-NEXT: [[#%x, PC4:]]48# CHECK-SAME: jmpq *0x[[#%x, GOTSTART - PC4 - 6]](%rip)49 50# CHECK-EMPTY:51 52.section __TEXT,__objc_methname,cstring_literals53lselref1:54 .asciz "foo"55lselref2:56 .asciz "bar"57 58.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip59.p2align 360.quad lselref161.quad lselref262 63.text64.globl _objc_msgSend65_objc_msgSend:66 ret67 68.globl _main69_main:70 callq _objc_msgSend$length71 callq _objc_msgSend$foo72 callq _objc_msgSend$foo73 ret74