1 // RUN: %clang -c -o %t %s
2 // RUN: %llvm_jitlink -preload libobjc.A.dylib %t
4 // Test that Objective-C class and instance methods work.
6 .section __TEXT,__text,regular,pure_instructions
7 .build_version macos, 12, 0 sdk_version 12, 0
8 .p2align 2 ; -- Begin function +[ZeroGen classZero]
9 "+[ZeroGen classZero]": ; @"\01+[ZeroGen classZero]"
13 .cfi_def_cfa_offset 16
21 .p2align 2 ; -- Begin function -[ZeroGen objZero]
22 "-[ZeroGen objZero]": ; @"\01-[ZeroGen objZero]"
26 .cfi_def_cfa_offset 16
34 .globl _main ; -- Begin function main
40 stp x29, x30, [sp, #32] ; 16-byte Folded Spill
41 add x29, sp, #32 ; =32
46 adrp x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGE
47 str x8, [sp, #8] ; 8-byte Folded Spill
48 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
50 ldr x8, [sp, #8] ; 8-byte Folded Reload
52 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
53 adrp x8, _OBJC_SELECTOR_REFERENCES_@PAGE
54 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_@PAGEOFF]
63 adrp x8, _OBJC_SELECTOR_REFERENCES_.2@PAGE
64 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_.2@PAGEOFF]
75 ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
80 .section __TEXT,__objc_classname,cstring_literals
81 l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_
84 .section __TEXT,__objc_methname,cstring_literals
85 l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_
88 .section __TEXT,__objc_methtype,cstring_literals
89 l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_
92 .section __DATA,__objc_const
93 .p2align 3 ; @"_OBJC_$_CLASS_METHODS_ZeroGen"
94 __OBJC_$_CLASS_METHODS_ZeroGen:
97 .quad l_OBJC_METH_VAR_NAME_
98 .quad l_OBJC_METH_VAR_TYPE_
99 .quad "+[ZeroGen classZero]"
101 .p2align 3 ; @"_OBJC_METACLASS_RO_$_ZeroGen"
102 __OBJC_METACLASS_RO_$_ZeroGen:
108 .quad l_OBJC_CLASS_NAME_
109 .quad __OBJC_$_CLASS_METHODS_ZeroGen
115 .section __DATA,__objc_data
116 .globl _OBJC_METACLASS_$_ZeroGen ; @"OBJC_METACLASS_$_ZeroGen"
118 _OBJC_METACLASS_$_ZeroGen:
119 .quad _OBJC_METACLASS_$_NSObject
120 .quad _OBJC_METACLASS_$_NSObject
121 .quad __objc_empty_cache
123 .quad __OBJC_METACLASS_RO_$_ZeroGen
125 .section __TEXT,__objc_methname,cstring_literals
126 l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1
129 .section __DATA,__objc_const
130 .p2align 3 ; @"_OBJC_$_INSTANCE_METHODS_ZeroGen"
131 __OBJC_$_INSTANCE_METHODS_ZeroGen:
134 .quad l_OBJC_METH_VAR_NAME_.1
135 .quad l_OBJC_METH_VAR_TYPE_
136 .quad "-[ZeroGen objZero]"
138 .p2align 3 ; @"_OBJC_CLASS_RO_$_ZeroGen"
139 __OBJC_CLASS_RO_$_ZeroGen:
145 .quad l_OBJC_CLASS_NAME_
146 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen
152 .section __DATA,__objc_data
153 .globl _OBJC_CLASS_$_ZeroGen ; @"OBJC_CLASS_$_ZeroGen"
155 _OBJC_CLASS_$_ZeroGen:
156 .quad _OBJC_METACLASS_$_ZeroGen
157 .quad _OBJC_CLASS_$_NSObject
158 .quad __objc_empty_cache
160 .quad __OBJC_CLASS_RO_$_ZeroGen
162 .section __DATA,__objc_classrefs,regular,no_dead_strip
163 .p2align 3 ; @"OBJC_CLASSLIST_REFERENCES_$_"
164 _OBJC_CLASSLIST_REFERENCES_$_:
165 .quad _OBJC_CLASS_$_ZeroGen
167 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
168 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_
169 _OBJC_SELECTOR_REFERENCES_:
170 .quad l_OBJC_METH_VAR_NAME_
172 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_.2
173 _OBJC_SELECTOR_REFERENCES_.2:
174 .quad l_OBJC_METH_VAR_NAME_.1
176 .section __DATA,__objc_classlist,regular,no_dead_strip
177 .p2align 3 ; @"OBJC_LABEL_CLASS_$"
178 l_OBJC_LABEL_CLASS_$:
179 .quad _OBJC_CLASS_$_ZeroGen
181 .section __DATA,__objc_imageinfo,regular,no_dead_strip
186 .subsections_via_symbols