1 // RUN: %clang -c -o %t %s
2 // RUN: %llvm_jitlink -preload libobjc.A.dylib %t
4 // REQUIRES: jit-compatible-osx-swift-runtime
6 // Test that Objective-C class and instance methods work.
8 .section __TEXT,__text,regular,pure_instructions
9 .build_version macos, 12, 0 sdk_version 12, 0
10 .p2align 2 ; -- Begin function +[ZeroGen classZero]
11 "+[ZeroGen classZero]": ; @"\01+[ZeroGen classZero]"
15 .cfi_def_cfa_offset 16
23 .p2align 2 ; -- Begin function -[ZeroGen objZero]
24 "-[ZeroGen objZero]": ; @"\01-[ZeroGen objZero]"
28 .cfi_def_cfa_offset 16
36 .globl _main ; -- Begin function main
42 stp x29, x30, [sp, #32] ; 16-byte Folded Spill
43 add x29, sp, #32 ; =32
48 adrp x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGE
49 str x8, [sp, #8] ; 8-byte Folded Spill
50 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
52 ldr x8, [sp, #8] ; 8-byte Folded Reload
54 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
55 adrp x8, _OBJC_SELECTOR_REFERENCES_@PAGE
56 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_@PAGEOFF]
65 adrp x8, _OBJC_SELECTOR_REFERENCES_.2@PAGE
66 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_.2@PAGEOFF]
77 ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
82 .section __TEXT,__objc_classname,cstring_literals
83 l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_
86 .section __TEXT,__objc_methname,cstring_literals
87 l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_
90 .section __TEXT,__objc_methtype,cstring_literals
91 l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_
94 .section __DATA,__objc_const
95 .p2align 3 ; @"_OBJC_$_CLASS_METHODS_ZeroGen"
96 __OBJC_$_CLASS_METHODS_ZeroGen:
99 .quad l_OBJC_METH_VAR_NAME_
100 .quad l_OBJC_METH_VAR_TYPE_
101 .quad "+[ZeroGen classZero]"
103 .p2align 3 ; @"_OBJC_METACLASS_RO_$_ZeroGen"
104 __OBJC_METACLASS_RO_$_ZeroGen:
110 .quad l_OBJC_CLASS_NAME_
111 .quad __OBJC_$_CLASS_METHODS_ZeroGen
117 .section __DATA,__objc_data
118 .globl _OBJC_METACLASS_$_ZeroGen ; @"OBJC_METACLASS_$_ZeroGen"
120 _OBJC_METACLASS_$_ZeroGen:
121 .quad _OBJC_METACLASS_$_NSObject
122 .quad _OBJC_METACLASS_$_NSObject
123 .quad __objc_empty_cache
125 .quad __OBJC_METACLASS_RO_$_ZeroGen
127 .section __TEXT,__objc_methname,cstring_literals
128 l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1
131 .section __DATA,__objc_const
132 .p2align 3 ; @"_OBJC_$_INSTANCE_METHODS_ZeroGen"
133 __OBJC_$_INSTANCE_METHODS_ZeroGen:
136 .quad l_OBJC_METH_VAR_NAME_.1
137 .quad l_OBJC_METH_VAR_TYPE_
138 .quad "-[ZeroGen objZero]"
140 .p2align 3 ; @"_OBJC_CLASS_RO_$_ZeroGen"
141 __OBJC_CLASS_RO_$_ZeroGen:
147 .quad l_OBJC_CLASS_NAME_
148 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen
154 .section __DATA,__objc_data
155 .globl _OBJC_CLASS_$_ZeroGen ; @"OBJC_CLASS_$_ZeroGen"
157 _OBJC_CLASS_$_ZeroGen:
158 .quad _OBJC_METACLASS_$_ZeroGen
159 .quad _OBJC_CLASS_$_NSObject
160 .quad __objc_empty_cache
162 .quad __OBJC_CLASS_RO_$_ZeroGen
164 .section __DATA,__objc_classrefs,regular,no_dead_strip
165 .p2align 3 ; @"OBJC_CLASSLIST_REFERENCES_$_"
166 _OBJC_CLASSLIST_REFERENCES_$_:
167 .quad _OBJC_CLASS_$_ZeroGen
169 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
170 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_
171 _OBJC_SELECTOR_REFERENCES_:
172 .quad l_OBJC_METH_VAR_NAME_
174 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_.2
175 _OBJC_SELECTOR_REFERENCES_.2:
176 .quad l_OBJC_METH_VAR_NAME_.1
178 .section __DATA,__objc_classlist,regular,no_dead_strip
179 .p2align 3 ; @"OBJC_LABEL_CLASS_$"
180 l_OBJC_LABEL_CLASS_$:
181 .quad _OBJC_CLASS_$_ZeroGen
183 .section __DATA,__objc_imageinfo,regular,no_dead_strip
188 .subsections_via_symbols