1// RUN: %clang -c -o %t %s
2// RUN: %llvm_jitlink -preload libobjc.A.dylib %t
3//
4// REQUIRES: jit-compatible-osx-swift-runtime
5//
6// Test that Objective-C class and instance methods work.
7
8 .section __TEXT,__text,regular,pure_instructions
9 .build_version macos, 11, 0 sdk_version 11, 5
10 .p2align 4, 0x90
11"-[ZeroGen objZero]":
12 pushq %rbp
13 movq %rsp, %rbp
14 xorl %eax, %eax
15 popq %rbp
16 retq
17
18 .p2align 4, 0x90
19"+[ZeroGen classZero]":
20 pushq %rbp
21 movq %rsp, %rbp
22 xorl %eax, %eax
23 popq %rbp
24 retq
25
26 .globl _main
27 .p2align 4, 0x90
28_main:
29 pushq %rbp
30 movq %rsp, %rbp
31 movq _OBJC_CLASSLIST_REFERENCES_$_(%rip), %rdi
32 callq _objc_alloc_init
33 movq _OBJC_SELECTOR_REFERENCES_(%rip), %rsi
34 movq %rax, %rdi
35 callq *_objc_msgSend@GOTPCREL(%rip)
36 testl %eax, %eax
37 jne LBB2_3
38
39 movq _OBJC_CLASSLIST_REFERENCES_$_(%rip), %rdi
40 movq _OBJC_SELECTOR_REFERENCES_.2(%rip), %rsi
41 callq *_objc_msgSend@GOTPCREL(%rip)
42 testl %eax, %eax
43 je LBB2_2
44LBB2_3:
45 movl $1, %eax
46 popq %rbp
47 retq
48LBB2_2:
49 xorl %eax, %eax
50 popq %rbp
51 retq
52
53 .section __TEXT,__objc_classname,cstring_literals
54L_OBJC_CLASS_NAME_:
55 .asciz "ZeroGen"
56
57 .section __TEXT,__objc_methname,cstring_literals
58L_OBJC_METH_VAR_NAME_:
59 .asciz "classZero"
60
61 .section __TEXT,__objc_methtype,cstring_literals
62L_OBJC_METH_VAR_TYPE_:
63 .asciz "i16@0:8"
64
65 .section __DATA,__objc_const
66 .p2align 3
67__OBJC_$_CLASS_METHODS_ZeroGen:
68 .long 24
69 .long 1
70 .quad L_OBJC_METH_VAR_NAME_
71 .quad L_OBJC_METH_VAR_TYPE_
72 .quad "+[ZeroGen classZero]"
73
74 .p2align 3
75__OBJC_METACLASS_RO_$_ZeroGen:
76 .long 1
77 .long 40
78 .long 40
79 .space 4
80 .quad 0
81 .quad L_OBJC_CLASS_NAME_
82 .quad __OBJC_$_CLASS_METHODS_ZeroGen
83 .quad 0
84 .quad 0
85 .quad 0
86 .quad 0
87
88 .section __DATA,__objc_data
89 .globl _OBJC_METACLASS_$_ZeroGen
90 .p2align 3
91_OBJC_METACLASS_$_ZeroGen:
92 .quad _OBJC_METACLASS_$_NSObject
93 .quad _OBJC_METACLASS_$_NSObject
94 .quad __objc_empty_cache
95 .quad 0
96 .quad __OBJC_METACLASS_RO_$_ZeroGen
97
98 .section __TEXT,__objc_methname,cstring_literals
99L_OBJC_METH_VAR_NAME_.1:
100 .asciz "objZero"
101
102 .section __DATA,__objc_const
103 .p2align 3
104__OBJC_$_INSTANCE_METHODS_ZeroGen:
105 .long 24
106 .long 1
107 .quad L_OBJC_METH_VAR_NAME_.1
108 .quad L_OBJC_METH_VAR_TYPE_
109 .quad "-[ZeroGen objZero]"
110
111 .p2align 3
112__OBJC_CLASS_RO_$_ZeroGen:
113 .long 0
114 .long 8
115 .long 8
116 .space 4
117 .quad 0
118 .quad L_OBJC_CLASS_NAME_
119 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen
120 .quad 0
121 .quad 0
122 .quad 0
123 .quad 0
124
125 .section __DATA,__objc_data
126 .globl _OBJC_CLASS_$_ZeroGen
127 .p2align 3
128_OBJC_CLASS_$_ZeroGen:
129 .quad _OBJC_METACLASS_$_ZeroGen
130 .quad _OBJC_CLASS_$_NSObject
131 .quad __objc_empty_cache
132 .quad 0
133 .quad __OBJC_CLASS_RO_$_ZeroGen
134
135 .section __DATA,__objc_classrefs,regular,no_dead_strip
136 .p2align 3
137_OBJC_CLASSLIST_REFERENCES_$_:
138 .quad _OBJC_CLASS_$_ZeroGen
139
140 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
141 .p2align 3
142_OBJC_SELECTOR_REFERENCES_:
143 .quad L_OBJC_METH_VAR_NAME_.1
144
145 .p2align 3
146_OBJC_SELECTOR_REFERENCES_.2:
147 .quad L_OBJC_METH_VAR_NAME_
148
149 .section __DATA,__objc_classlist,regular,no_dead_strip
150 .p2align 3
151L_OBJC_LABEL_CLASS_$:
152 .quad _OBJC_CLASS_$_ZeroGen
153
154 .section __DATA,__objc_imageinfo,regular,no_dead_strip
155L_OBJC_IMAGE_INFO:
156 .long 0
157 .long 64
158
159.subsections_via_symbols
160

source code of compiler-rt/test/orc/TestCases/Darwin/x86-64/trivial-objc-methods.S