6 # define LOGPTRSIZE "3"
10 # define LOGPTRSIZE "2"
13 #if __has_feature(ptrauth_calls)
14 # define SIGNED_METHOD_LIST_IMP "@AUTH(ia,0,addr) "
16 # define SIGNED_METHOD_LIST_IMP
20 #define str2(x) str(x)
22 // Swift metadata initializers. Define these in the test.
23 EXTERN_C Class initSuper(Class cls, void *arg);
24 EXTERN_C Class initSub(Class cls, void *arg);
26 @interface SwiftSuper : NSObject @end
27 @interface SwiftSub : SwiftSuper @end
30 // not id to avoid ARC operations because the class doesn't implement RR methods
31 void* nop(void* self) { return self; }
35 ".globl _OBJC_CLASS_$_SwiftSuper \n"
36 ".section __DATA,__objc_data \n"
38 "_OBJC_CLASS_$_SwiftSuper: \n"
39 PTR "_OBJC_METACLASS_$_SwiftSuper \n"
40 PTR "_OBJC_CLASS_$_NSObject \n"
41 PTR "__objc_empty_cache \n"
44 // pad to OBJC_MAX_CLASS_SIZE
73 "_OBJC_METACLASS_$_SwiftSuper: \n"
74 PTR "_OBJC_METACLASS_$_NSObject \n"
75 PTR "_OBJC_METACLASS_$_NSObject \n"
76 PTR "__objc_empty_cache \n"
79 // pad to OBJC_MAX_CLASS_SIZE
116 PTR "L_super_name \n"
117 PTR "L_good_methods \n"
119 PTR "L_super_ivars \n"
122 PTR "_initSuper" SIGNED_METHOD_LIST_IMP "\n"
132 PTR "L_super_name \n"
133 PTR "L_good_methods \n"
139 ".globl _OBJC_CLASS_$_SwiftSub \n"
140 ".section __DATA,__objc_data \n"
142 "_OBJC_CLASS_$_SwiftSub: \n"
143 PTR "_OBJC_METACLASS_$_SwiftSub \n"
144 PTR "_OBJC_CLASS_$_SwiftSuper \n"
145 PTR "__objc_empty_cache \n"
147 PTR "L_sub_ro + 2 \n"
148 // pad to OBJC_MAX_CLASS_SIZE
177 "_OBJC_METACLASS_$_SwiftSub: \n"
178 PTR "_OBJC_METACLASS_$_NSObject \n"
179 PTR "_OBJC_METACLASS_$_SwiftSuper \n"
180 PTR "__objc_empty_cache \n"
182 PTR "L_sub_meta_ro \n"
183 // pad to OBJC_MAX_CLASS_SIZE
221 PTR "L_good_methods \n"
226 PTR "_initSub" SIGNED_METHOD_LIST_IMP "\n"
237 PTR "L_good_methods \n"
244 ".long 3*"PTRSIZE" \n"
248 PTR "_nop" SIGNED_METHOD_LIST_IMP "\n"
251 ".long 4*"PTRSIZE" \n"
253 PTR "L_super_ivar_offset \n"
254 PTR "L_super_ivar_name \n"
255 PTR "L_super_ivar_type \n"
256 ".long "LOGPTRSIZE" \n"
260 ".long 4*"PTRSIZE" \n"
262 PTR "L_sub_ivar_offset \n"
263 PTR "L_sub_ivar_name \n"
264 PTR "L_sub_ivar_type \n"
265 ".long "LOGPTRSIZE" \n"
268 "L_super_ivar_offset: \n"
270 "L_sub_ivar_offset: \n"
274 "L_super_name: .ascii \"SwiftSuper\\0\" \n"
275 "L_sub_name: .ascii \"SwiftSub\\0\" \n"
276 "L_load: .ascii \"load\\0\" \n"
277 "L_self: .ascii \"self\\0\" \n"
278 "L_super_ivar_name: .ascii \"super_ivar\\0\" \n"
279 "L_super_ivar_type: .ascii \"c\\0\" \n"
280 "L_sub_ivar_name: .ascii \"sub_ivar\\0\" \n"
281 "L_sub_ivar_type: .ascii \"@\\0\" \n"
284 ".section __DATA,__objc_classlist \n"
285 PTR "_OBJC_CLASS_$_SwiftSuper \n"
286 PTR "_OBJC_CLASS_$_SwiftSub \n"