3 #include <mach/shared_region.h>
8 # define LOGPTRSIZE "3"
10 # define PTR " .long "
12 # define LOGPTRSIZE "2"
16 #define str2(x) str(x)
19 id nop(id self) { return self; }
23 ".globl _OBJC_CLASS_$_Super \n"
24 ".section __DATA,__objc_data \n"
26 "_OBJC_CLASS_$_Super: \n"
27 PTR "_OBJC_METACLASS_$_Super \n"
29 PTR "__objc_empty_cache \n"
32 // pad to OBJC_MAX_CLASS_SIZE
61 "_OBJC_METACLASS_$_Super: \n"
62 PTR "_OBJC_METACLASS_$_Super \n"
63 PTR "_OBJC_CLASS_$_Super \n"
64 PTR "__objc_empty_cache \n"
67 // pad to OBJC_MAX_CLASS_SIZE
104 PTR "L_super_name \n"
106 PTR "L_evil_methods \n"
108 PTR "L_good_methods \n"
111 PTR "L_super_ivars \n"
123 PTR "L_super_name \n"
125 PTR "L_evil_methods \n"
127 PTR "L_good_methods \n"
134 ".globl _OBJC_CLASS_$_Sub \n"
135 ".section __DATA,__objc_data \n"
137 "_OBJC_CLASS_$_Sub: \n"
138 PTR "_OBJC_METACLASS_$_Sub \n"
139 PTR "_OBJC_CLASS_$_Super \n"
140 PTR "__objc_empty_cache \n"
143 // pad to OBJC_MAX_CLASS_SIZE
172 "_OBJC_METACLASS_$_Sub: \n"
173 PTR "_OBJC_METACLASS_$_Super \n"
174 PTR "_OBJC_METACLASS_$_Super \n"
175 PTR "__objc_empty_cache \n"
177 PTR "L_sub_meta_ro \n"
178 // pad to OBJC_MAX_CLASS_SIZE
217 PTR "L_evil_methods \n"
219 PTR "L_good_methods \n"
236 PTR "L_evil_methods \n"
238 PTR "L_good_methods \n"
246 ".long 3*"PTRSIZE" \n"
250 PTR str2(SHARED_REGION_BASE+SHARED_REGION_SIZE-PAGE_MAX_SIZE) " \n"
253 ".long 3*"PTRSIZE" \n"
263 ".long 4*"PTRSIZE" \n"
265 PTR "L_super_ivar_offset \n"
266 PTR "L_super_ivar_name \n"
267 PTR "L_super_ivar_type \n"
268 ".long "LOGPTRSIZE" \n"
272 ".long 4*"PTRSIZE" \n"
274 PTR "L_sub_ivar_offset \n"
275 PTR "L_sub_ivar_name \n"
276 PTR "L_sub_ivar_type \n"
277 ".long "LOGPTRSIZE" \n"
280 "L_super_ivar_offset: \n"
282 "L_sub_ivar_offset: \n"
286 "L_super_name: .ascii \"Super\\0\" \n"
287 "L_sub_name: .ascii \"Sub\\0\" \n"
288 "L_load: .ascii \"load\\0\" \n"
289 "L_self: .ascii \"self\\0\" \n"
290 "L_super_ivar_name: .ascii \"super_ivar\\0\" \n"
291 "L_super_ivar_type: .ascii \"c\\0\" \n"
292 "L_sub_ivar_name: .ascii \"sub_ivar\\0\" \n"
293 "L_sub_ivar_type: .ascii \"@\\0\" \n"
296 ".section __DATA,__objc_classlist \n"
298 PTR "_OBJC_CLASS_$_Super \n"
301 PTR "_OBJC_CLASS_$_Sub \n"
304 ".section __DATA,__objc_nlclslist \n"
306 PTR "_OBJC_CLASS_$_Super \n"
309 PTR "_OBJC_CLASS_$_Sub \n"