[libc] Switch to using the generic `<gpuintrin.h>` implementations (#121810)
[llvm-project.git] / lld / test / MachO / objc-category-merging-complete-test.s
blob3befd683e3a15efddb3dece7f212bb3891aeb745
1 # REQUIRES: aarch64
2 # RUN: rm -rf %t; split-file %s %t && cd %t
4 ############ Test merging multiple categories into a single category ############
5 ## Create a dylib to link against(a64_file1.dylib) and merge categories in the main binary (file2_merge_a64.exe)
6 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o a64_file1.o a64_file1.s
7 # RUN: %lld -arch arm64 a64_file1.o -o a64_file1.dylib -dylib
9 # RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o a64_file2.o a64_file2.s
10 # RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_no_merge.exe a64_file1.dylib a64_file2.o
11 # RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_no_merge_v2.exe a64_file1.dylib a64_file2.o -no_objc_category_merging
12 # RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_no_merge_v3.exe a64_file1.dylib a64_file2.o -objc_category_merging -no_objc_category_merging
13 # RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_merge.exe -objc_category_merging a64_file1.dylib a64_file2.o
15 # RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS
16 # RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge_v2.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS
17 # RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge_v3.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS
18 # RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge.exe | FileCheck %s --check-prefixes=MERGE_CATS
20 ############ Test merging multiple categories into the base class ############
21 # RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_merge_into_class.exe -objc_category_merging a64_file1.o a64_file2.o
22 # RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge_into_class.exe | FileCheck %s --check-prefixes=MERGE_CATS_CLS
25 MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)
26 MERGE_CATS-NEXT: name {{.*}} Category02|Category03
27 MERGE_CATS: instanceMethods
28 MERGE_CATS-NEXT: entsize 24
29 MERGE_CATS-NEXT: count 4
30 MERGE_CATS-NEXT: name {{.*}} class02InstanceMethod
31 MERGE_CATS-NEXT: types {{.*}} v16@0:8
32 MERGE_CATS-NEXT: imp -[MyBaseClass(Category02) class02InstanceMethod]
33 MERGE_CATS-NEXT: name {{.*}} myProtocol02Method
34 MERGE_CATS-NEXT: types {{.*}} v16@0:8
35 MERGE_CATS-NEXT: imp -[MyBaseClass(Category02) myProtocol02Method]
36 MERGE_CATS-NEXT: name {{.*}} class03InstanceMethod
37 MERGE_CATS-NEXT: types {{.*}} v16@0:8
38 MERGE_CATS-NEXT: imp -[MyBaseClass(Category03) class03InstanceMethod]
39 MERGE_CATS-NEXT: name {{.*}} myProtocol03Method
40 MERGE_CATS-NEXT: types {{.*}} v16@0:8
41 MERGE_CATS-NEXT: imp -[MyBaseClass(Category03) myProtocol03Method]
42 MERGE_CATS-NEXT: classMethods {{.*}}
43 MERGE_CATS-NEXT: entsize 24
44 MERGE_CATS-NEXT: count 4
45 MERGE_CATS-NEXT: name {{.*}} class02ClassMethod
46 MERGE_CATS-NEXT: types {{.*}} v16@0:8
47 MERGE_CATS-NEXT: imp +[MyBaseClass(Category02) class02ClassMethod]
48 MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop
49 MERGE_CATS-NEXT: types {{.*}} i16@0:8
50 MERGE_CATS-NEXT: imp +[MyBaseClass(Category02) MyProtocol02Prop]
51 MERGE_CATS-NEXT: name {{.*}} class03ClassMethod
52 MERGE_CATS-NEXT: types {{.*}} v16@0:8
53 MERGE_CATS-NEXT: imp +[MyBaseClass(Category03) class03ClassMethod]
54 MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop
55 MERGE_CATS-NEXT: types {{.*}} i16@0:8
56 MERGE_CATS-NEXT: imp +[MyBaseClass(Category03) MyProtocol03Prop]
57 MERGE_CATS-NEXT: protocols
58 MERGE_CATS-NEXT: count 2
59 MERGE_CATS-NEXT: list[0] {{.*}} (struct protocol_t *)
60 MERGE_CATS-NEXT: isa 0x0
61 MERGE_CATS-NEXT: name {{.*}} MyProtocol02
62 MERGE_CATS-NEXT: protocols 0x0
63 MERGE_CATS-NEXT: instanceMethods
64 MERGE_CATS-NEXT: entsize 24
65 MERGE_CATS-NEXT: count 2
66 MERGE_CATS-NEXT: name {{.*}} myProtocol02Method
67 MERGE_CATS-NEXT: types {{.*}} v16@0:8
68 MERGE_CATS-NEXT: imp 0x0
69 MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop
70 MERGE_CATS-NEXT: types {{.*}} i16@0:8
71 MERGE_CATS-NEXT: imp 0x0
72 MERGE_CATS-NEXT: classMethods
73 MERGE_CATS-NEXT: optionalInstanceMethods 0x0
74 MERGE_CATS-NEXT: optionalClassMethods 0x0
75 MERGE_CATS-NEXT: instanceProperties {{.*}}
76 MERGE_CATS-NEXT: list[1] {{.*}}
77 MERGE_CATS-NEXT: isa 0x0
78 MERGE_CATS-NEXT: name {{.*}} MyProtocol03
79 MERGE_CATS-NEXT: protocols 0x0
80 MERGE_CATS-NEXT: instanceMethods
81 MERGE_CATS-NEXT: entsize 24
82 MERGE_CATS-NEXT: count 2
83 MERGE_CATS-NEXT: name {{.*}} myProtocol03Method
84 MERGE_CATS-NEXT: types {{.*}} v16@0:8
85 MERGE_CATS-NEXT: imp 0x0
86 MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop
87 MERGE_CATS-NEXT: types {{.*}} i16@0:8
88 MERGE_CATS-NEXT: imp 0x0
89 MERGE_CATS-NEXT: classMethods 0x0
90 MERGE_CATS-NEXT: optionalInstanceMethods 0x0
91 MERGE_CATS-NEXT: optionalClassMethods 0x0
92 MERGE_CATS-NEXT: instanceProperties {{.*}}
93 MERGE_CATS-NEXT: instanceProperties
94 MERGE_CATS-NEXT: entsize 16
95 MERGE_CATS-NEXT: count 2
96 MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop
97 MERGE_CATS-NEXT: attributes {{.*}} Ti,R,D
98 MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop
99 MERGE_CATS-NEXT: attributes {{.*}} Ti,R,D
100 MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass_$_Category04
103 NO_MERGE_CATS-NOT: __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)
104 NO_MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass_$_Category02
105 NO_MERGE_CATS: instanceMethods
106 NO_MERGE_CATS-NEXT: 24
107 NO_MERGE_CATS-NEXT: 2
108 NO_MERGE_CATS: classMethods
109 NO_MERGE_CATS-NEXT: 24
110 NO_MERGE_CATS-NEXT: 2
113 MERGE_CATS_CLS: _OBJC_CLASS_$_MyBaseClass
114 MERGE_CATS_CLS-NEXT: isa {{.*}} _OBJC_METACLASS_$_MyBaseClass
115 MERGE_CATS_CLS-NEXT: superclass 0x0
116 MERGE_CATS_CLS-NEXT: cache {{.*}} __objc_empty_cache
117 MERGE_CATS_CLS-NEXT: vtable 0x0
118 MERGE_CATS_CLS-NEXT: data {{.*}} (struct class_ro_t *)
119 MERGE_CATS_CLS-NEXT: flags 0x2 RO_ROOT
120 MERGE_CATS_CLS-NEXT: instanceStart 0
121 MERGE_CATS_CLS-NEXT: instanceSize 4
122 MERGE_CATS_CLS-NEXT: reserved 0x0
123 MERGE_CATS_CLS-NEXT: ivarLayout 0x0
124 MERGE_CATS_CLS-NEXT: name {{.*}} MyBaseClass
125 MERGE_CATS_CLS-NEXT: baseMethods {{.*}} (struct method_list_t *)
126 MERGE_CATS_CLS-NEXT: entsize 24
127 MERGE_CATS_CLS-NEXT: count 8
128 MERGE_CATS_CLS-NEXT: name {{.*}} class02InstanceMethod
129 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
130 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category02) class02InstanceMethod]
131 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method
132 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
133 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category02) myProtocol02Method]
134 MERGE_CATS_CLS-NEXT: name {{.*}} class03InstanceMethod
135 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
136 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category03) class03InstanceMethod]
137 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method
138 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
139 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category03) myProtocol03Method]
140 MERGE_CATS_CLS-NEXT: name {{.*}} baseInstanceMethod
141 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
142 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass baseInstanceMethod]
143 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method
144 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
145 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass myProtocol01Method]
146 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop
147 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
148 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass MyProtocol01Prop]
149 MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:
150 MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16
151 MERGE_CATS_CLS-NEXT: imp -[MyBaseClass setMyProtocol01Prop:]
152 MERGE_CATS_CLS-NEXT: baseProtocols {{.*}}
153 MERGE_CATS_CLS-NEXT: count 3
154 MERGE_CATS_CLS-NEXT: list[0] {{.*}} (struct protocol_t *)
155 MERGE_CATS_CLS-NEXT: isa 0x0
156 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02
157 MERGE_CATS_CLS-NEXT: protocols 0x0
158 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
159 MERGE_CATS_CLS-NEXT: entsize 24
160 MERGE_CATS_CLS-NEXT: count 2
161 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method
162 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
163 MERGE_CATS_CLS-NEXT: imp 0x0
164 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop
165 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
166 MERGE_CATS_CLS-NEXT: imp 0x0
167 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
168 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
169 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
170 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
171 MERGE_CATS_CLS-NEXT: list[1] {{.*}} (struct protocol_t *)
172 MERGE_CATS_CLS-NEXT: isa 0x0
173 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03
174 MERGE_CATS_CLS-NEXT: protocols 0x0
175 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
176 MERGE_CATS_CLS-NEXT: entsize 24
177 MERGE_CATS_CLS-NEXT: count 2
178 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method
179 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
180 MERGE_CATS_CLS-NEXT: imp 0x0
181 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop
182 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
183 MERGE_CATS_CLS-NEXT: imp 0x0
184 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
185 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
186 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
187 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
188 MERGE_CATS_CLS-NEXT: list[2] {{.*}} (struct protocol_t *)
189 MERGE_CATS_CLS-NEXT: isa 0x0
190 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01
191 MERGE_CATS_CLS-NEXT: protocols 0x0
192 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
193 MERGE_CATS_CLS-NEXT: entsize 24
194 MERGE_CATS_CLS-NEXT: count 3
195 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method
196 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
197 MERGE_CATS_CLS-NEXT: imp 0x0
198 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop
199 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
200 MERGE_CATS_CLS-NEXT: imp 0x0
201 MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:
202 MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16
203 MERGE_CATS_CLS-NEXT: imp 0x0
204 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
205 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
206 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
207 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
208 MERGE_CATS_CLS-NEXT: ivars {{.*}}
209 MERGE_CATS_CLS-NEXT: entsize 32
210 MERGE_CATS_CLS-NEXT: count 1
211 MERGE_CATS_CLS-NEXT: offset {{.*}} 0
212 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop
213 MERGE_CATS_CLS-NEXT: type {{.*}} i
214 MERGE_CATS_CLS-NEXT: alignment 2
215 MERGE_CATS_CLS-NEXT: size 4
216 MERGE_CATS_CLS-NEXT: weakIvarLayout 0x0
217 MERGE_CATS_CLS-NEXT: baseProperties {{.*}}
218 MERGE_CATS_CLS-NEXT: entsize 16
219 MERGE_CATS_CLS-NEXT: count 3
220 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop
221 MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,R,D
222 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop
223 MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,R,D
224 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop
225 MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,N,VMyProtocol01Prop
226 MERGE_CATS_CLS-NEXT: Meta Class
227 MERGE_CATS_CLS-NEXT: isa {{.*}} _OBJC_METACLASS_$_MyBaseClass
228 MERGE_CATS_CLS-NEXT: superclass {{.*}} _OBJC_CLASS_$_MyBaseClass
229 MERGE_CATS_CLS-NEXT: cache {{.*}} __objc_empty_cache
230 MERGE_CATS_CLS-NEXT: vtable 0x0
231 MERGE_CATS_CLS-NEXT: data {{.*}} (struct class_ro_t *)
232 MERGE_CATS_CLS-NEXT: flags 0x3 RO_META RO_ROOT
233 MERGE_CATS_CLS-NEXT: instanceStart 40
234 MERGE_CATS_CLS-NEXT: instanceSize 40
235 MERGE_CATS_CLS-NEXT: reserved 0x0
236 MERGE_CATS_CLS-NEXT: ivarLayout 0x0
237 MERGE_CATS_CLS-NEXT: name {{.*}} MyBaseClass
238 MERGE_CATS_CLS-NEXT: baseMethods {{.*}} (struct method_list_t *)
239 MERGE_CATS_CLS-NEXT: entsize 24
240 MERGE_CATS_CLS-NEXT: count 5
241 MERGE_CATS_CLS-NEXT: name {{.*}} class02ClassMethod
242 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
243 MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category02) class02ClassMethod]
244 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop
245 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
246 MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category02) MyProtocol02Prop]
247 MERGE_CATS_CLS-NEXT: name {{.*}} class03ClassMethod
248 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
249 MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category03) class03ClassMethod]
250 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop
251 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
252 MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category03) MyProtocol03Prop]
253 MERGE_CATS_CLS-NEXT: name {{.*}} baseClassMethod
254 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
255 MERGE_CATS_CLS-NEXT: imp +[MyBaseClass baseClassMethod]
256 MERGE_CATS_CLS-NEXT: baseProtocols {{.*}}
257 MERGE_CATS_CLS-NEXT: count 3
258 MERGE_CATS_CLS-NEXT: list[0] {{.*}} (struct protocol_t *)
259 MERGE_CATS_CLS-NEXT: isa 0x0
260 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02
261 MERGE_CATS_CLS-NEXT: protocols 0x0
262 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
263 MERGE_CATS_CLS-NEXT: entsize 24
264 MERGE_CATS_CLS-NEXT: count 2
265 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method
266 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
267 MERGE_CATS_CLS-NEXT: imp 0x0
268 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop
269 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
270 MERGE_CATS_CLS-NEXT: imp 0x0
271 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
272 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
273 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
274 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
275 MERGE_CATS_CLS-NEXT: list[1] {{.*}} (struct protocol_t *)
276 MERGE_CATS_CLS-NEXT: isa 0x0
277 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03
278 MERGE_CATS_CLS-NEXT: protocols 0x0
279 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
280 MERGE_CATS_CLS-NEXT: entsize 24
281 MERGE_CATS_CLS-NEXT: count 2
282 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method
283 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
284 MERGE_CATS_CLS-NEXT: imp 0x0
285 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop
286 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
287 MERGE_CATS_CLS-NEXT: imp 0x0
288 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
289 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
290 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
291 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
292 MERGE_CATS_CLS-NEXT: list[2] {{.*}} (struct protocol_t *)
293 MERGE_CATS_CLS-NEXT: isa 0x0
294 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01
295 MERGE_CATS_CLS-NEXT: protocols 0x0
296 MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)
297 MERGE_CATS_CLS-NEXT: entsize 24
298 MERGE_CATS_CLS-NEXT: count 3
299 MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method
300 MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8
301 MERGE_CATS_CLS-NEXT: imp 0x0
302 MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop
303 MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8
304 MERGE_CATS_CLS-NEXT: imp 0x0
305 MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:
306 MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16
307 MERGE_CATS_CLS-NEXT: imp 0x0
308 MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)
309 MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0
310 MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0
311 MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}
312 MERGE_CATS_CLS-NEXT: ivars 0x0
313 MERGE_CATS_CLS-NEXT: weakIvarLayout 0x0
314 MERGE_CATS_CLS-NEXT: baseProperties 0x0
315 MERGE_CATS_CLS: __OBJC_$_CATEGORY_MyBaseClass_$_Category04
318 #--- a64_file1.s
320 ## @protocol MyProtocol01
321 ## - (void)myProtocol01Method;
322 ## @property (nonatomic) int MyProtocol01Prop;
323 ## @end
325 ## __attribute__((objc_root_class))
326 ## @interface MyBaseClass<MyProtocol01>
327 ## - (void)baseInstanceMethod;
328 ## - (void)myProtocol01Method;
329 ## + (void)baseClassMethod;
330 ## @end
332 ## @implementation MyBaseClass
333 ## @synthesize MyProtocol01Prop;
334 ## - (void)baseInstanceMethod {}
335 ## - (void)myProtocol01Method {}
336 ## + (void)baseClassMethod {}
337 ## @end
339 ## void *_objc_empty_cache;
341 .section __TEXT,__text,regular,pure_instructions
342 .p2align 2 ; -- Begin function -[MyBaseClass baseInstanceMethod]
343 "-[MyBaseClass baseInstanceMethod]": ; @"\01-[MyBaseClass baseInstanceMethod]"
344 .cfi_startproc
345 ; %bb.0: ; %entry
347 .cfi_endproc
348 ; -- End function
349 .p2align 2 ; -- Begin function -[MyBaseClass myProtocol01Method]
350 "-[MyBaseClass myProtocol01Method]": ; @"\01-[MyBaseClass myProtocol01Method]"
351 .cfi_startproc
352 ; %bb.0: ; %entry
354 .cfi_endproc
355 ; -- End function
356 .p2align 2 ; -- Begin function +[MyBaseClass baseClassMethod]
357 "+[MyBaseClass baseClassMethod]": ; @"\01+[MyBaseClass baseClassMethod]"
358 .cfi_startproc
359 ; %bb.0: ; %entry
361 .cfi_endproc
362 ; -- End function
363 .p2align 2 ; -- Begin function -[MyBaseClass MyProtocol01Prop]
364 "-[MyBaseClass MyProtocol01Prop]": ; @"\01-[MyBaseClass MyProtocol01Prop]"
365 .cfi_startproc
366 ; %bb.0: ; %entry
367 Lloh0:
368 adrp x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
369 Lloh1:
370 ldrsw x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]
371 ldr w0, [x0, x8]
373 .loh AdrpLdr Lloh0, Lloh1
374 .cfi_endproc
375 ; -- End function
376 .p2align 2 ; -- Begin function -[MyBaseClass setMyProtocol01Prop:]
377 "-[MyBaseClass setMyProtocol01Prop:]": ; @"\01-[MyBaseClass setMyProtocol01Prop:]"
378 .cfi_startproc
379 ; %bb.0: ; %entry
380 Lloh2:
381 adrp x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
382 Lloh3:
383 ldrsw x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]
384 str w2, [x0, x8]
386 .loh AdrpLdr Lloh2, Lloh3
387 .cfi_endproc
388 ; -- End function
389 .private_extern _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop ; @"OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop"
390 .section __DATA,__objc_ivar
391 .globl _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
392 .p2align 2, 0x0
393 _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop:
394 .long 0 ; 0x0
395 .section __DATA,__objc_data
396 .globl _OBJC_CLASS_$_MyBaseClass ; @"OBJC_CLASS_$_MyBaseClass"
397 .p2align 3, 0x0
398 _OBJC_CLASS_$_MyBaseClass:
399 .quad _OBJC_METACLASS_$_MyBaseClass
400 .quad 0
401 .quad __objc_empty_cache
402 .quad 0
403 .quad __OBJC_CLASS_RO_$_MyBaseClass
404 .globl _OBJC_METACLASS_$_MyBaseClass ; @"OBJC_METACLASS_$_MyBaseClass"
405 .p2align 3, 0x0
406 _OBJC_METACLASS_$_MyBaseClass:
407 .quad _OBJC_METACLASS_$_MyBaseClass
408 .quad _OBJC_CLASS_$_MyBaseClass
409 .quad __objc_empty_cache
410 .quad 0
411 .quad __OBJC_METACLASS_RO_$_MyBaseClass
412 .section __TEXT,__objc_classname,cstring_literals
413 l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_
414 .asciz "MyBaseClass"
415 .section __TEXT,__objc_methname,cstring_literals
416 l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_
417 .asciz "baseClassMethod"
418 .section __TEXT,__objc_methtype,cstring_literals
419 l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_
420 .asciz "v16@0:8"
421 .section __DATA,__objc_const
422 .p2align 3, 0x0 ; @"_OBJC_$_CLASS_METHODS_MyBaseClass"
423 __OBJC_$_CLASS_METHODS_MyBaseClass:
424 .long 24 ; 0x18
425 .long 1 ; 0x1
426 .quad l_OBJC_METH_VAR_NAME_
427 .quad l_OBJC_METH_VAR_TYPE_
428 .quad "+[MyBaseClass baseClassMethod]"
429 .section __TEXT,__objc_classname,cstring_literals
430 l_OBJC_CLASS_NAME_.1: ; @OBJC_CLASS_NAME_.1
431 .asciz "MyProtocol01"
432 .section __TEXT,__objc_methname,cstring_literals
433 l_OBJC_METH_VAR_NAME_.2: ; @OBJC_METH_VAR_NAME_.2
434 .asciz "myProtocol01Method"
435 l_OBJC_METH_VAR_NAME_.3: ; @OBJC_METH_VAR_NAME_.3
436 .asciz "MyProtocol01Prop"
437 .section __TEXT,__objc_methtype,cstring_literals
438 l_OBJC_METH_VAR_TYPE_.4: ; @OBJC_METH_VAR_TYPE_.4
439 .asciz "i16@0:8"
440 .section __TEXT,__objc_methname,cstring_literals
441 l_OBJC_METH_VAR_NAME_.5: ; @OBJC_METH_VAR_NAME_.5
442 .asciz "setMyProtocol01Prop:"
443 .section __TEXT,__objc_methtype,cstring_literals
444 l_OBJC_METH_VAR_TYPE_.6: ; @OBJC_METH_VAR_TYPE_.6
445 .asciz "v20@0:8i16"
446 .section __DATA,__objc_const
447 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01"
448 __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01:
449 .long 24 ; 0x18
450 .long 3 ; 0x3
451 .quad l_OBJC_METH_VAR_NAME_.2
452 .quad l_OBJC_METH_VAR_TYPE_
453 .quad 0
454 .quad l_OBJC_METH_VAR_NAME_.3
455 .quad l_OBJC_METH_VAR_TYPE_.4
456 .quad 0
457 .quad l_OBJC_METH_VAR_NAME_.5
458 .quad l_OBJC_METH_VAR_TYPE_.6
459 .quad 0
460 .section __TEXT,__objc_methname,cstring_literals
461 l_OBJC_PROP_NAME_ATTR_: ; @OBJC_PROP_NAME_ATTR_
462 .asciz "MyProtocol01Prop"
463 l_OBJC_PROP_NAME_ATTR_.7: ; @OBJC_PROP_NAME_ATTR_.7
464 .asciz "Ti,N"
465 .section __DATA,__objc_const
466 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol01"
467 __OBJC_$_PROP_LIST_MyProtocol01:
468 .long 16 ; 0x10
469 .long 1 ; 0x1
470 .quad l_OBJC_PROP_NAME_ATTR_
471 .quad l_OBJC_PROP_NAME_ATTR_.7
472 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01"
473 __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01:
474 .quad l_OBJC_METH_VAR_TYPE_
475 .quad l_OBJC_METH_VAR_TYPE_.4
476 .quad l_OBJC_METH_VAR_TYPE_.6
477 .private_extern __OBJC_PROTOCOL_$_MyProtocol01 ; @"_OBJC_PROTOCOL_$_MyProtocol01"
478 .section __DATA,__data
479 .globl __OBJC_PROTOCOL_$_MyProtocol01
480 .weak_definition __OBJC_PROTOCOL_$_MyProtocol01
481 .p2align 3, 0x0
482 __OBJC_PROTOCOL_$_MyProtocol01:
483 .quad 0
484 .quad l_OBJC_CLASS_NAME_.1
485 .quad 0
486 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01
487 .quad 0
488 .quad 0
489 .quad 0
490 .quad __OBJC_$_PROP_LIST_MyProtocol01
491 .long 96 ; 0x60
492 .long 0 ; 0x0
493 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01
494 .quad 0
495 .quad 0
496 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol01 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol01"
497 .section __DATA,__objc_protolist,coalesced,no_dead_strip
498 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol01
499 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol01
500 .p2align 3, 0x0
501 __OBJC_LABEL_PROTOCOL_$_MyProtocol01:
502 .quad __OBJC_PROTOCOL_$_MyProtocol01
503 .section __DATA,__objc_const
504 .p2align 3, 0x0 ; @"_OBJC_CLASS_PROTOCOLS_$_MyBaseClass"
505 __OBJC_CLASS_PROTOCOLS_$_MyBaseClass:
506 .quad 1 ; 0x1
507 .quad __OBJC_PROTOCOL_$_MyProtocol01
508 .quad 0
509 .p2align 3, 0x0 ; @"_OBJC_METACLASS_RO_$_MyBaseClass"
510 __OBJC_METACLASS_RO_$_MyBaseClass:
511 .long 3 ; 0x3
512 .long 40 ; 0x28
513 .long 40 ; 0x28
514 .space 4
515 .quad 0
516 .quad l_OBJC_CLASS_NAME_
517 .quad __OBJC_$_CLASS_METHODS_MyBaseClass
518 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass
519 .quad 0
520 .quad 0
521 .quad 0
522 .section __TEXT,__objc_methname,cstring_literals
523 l_OBJC_METH_VAR_NAME_.8: ; @OBJC_METH_VAR_NAME_.8
524 .asciz "baseInstanceMethod"
525 .section __DATA,__objc_const
526 .p2align 3, 0x0 ; @"_OBJC_$_INSTANCE_METHODS_MyBaseClass"
527 __OBJC_$_INSTANCE_METHODS_MyBaseClass:
528 .long 24 ; 0x18
529 .long 4 ; 0x4
530 .quad l_OBJC_METH_VAR_NAME_.8
531 .quad l_OBJC_METH_VAR_TYPE_
532 .quad "-[MyBaseClass baseInstanceMethod]"
533 .quad l_OBJC_METH_VAR_NAME_.2
534 .quad l_OBJC_METH_VAR_TYPE_
535 .quad "-[MyBaseClass myProtocol01Method]"
536 .quad l_OBJC_METH_VAR_NAME_.3
537 .quad l_OBJC_METH_VAR_TYPE_.4
538 .quad "-[MyBaseClass MyProtocol01Prop]"
539 .quad l_OBJC_METH_VAR_NAME_.5
540 .quad l_OBJC_METH_VAR_TYPE_.6
541 .quad "-[MyBaseClass setMyProtocol01Prop:]"
542 .section __TEXT,__objc_methtype,cstring_literals
543 l_OBJC_METH_VAR_TYPE_.9: ; @OBJC_METH_VAR_TYPE_.9
544 .asciz "i"
545 .section __DATA,__objc_const
546 .p2align 3, 0x0 ; @"_OBJC_$_INSTANCE_VARIABLES_MyBaseClass"
547 __OBJC_$_INSTANCE_VARIABLES_MyBaseClass:
548 .long 32 ; 0x20
549 .long 1 ; 0x1
550 .quad _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
551 .quad l_OBJC_METH_VAR_NAME_.3
552 .quad l_OBJC_METH_VAR_TYPE_.9
553 .long 2 ; 0x2
554 .long 4 ; 0x4
555 .section __TEXT,__objc_methname,cstring_literals
556 l_OBJC_PROP_NAME_ATTR_.10: ; @OBJC_PROP_NAME_ATTR_.10
557 .asciz "Ti,N,VMyProtocol01Prop"
558 .section __DATA,__objc_const
559 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass"
560 __OBJC_$_PROP_LIST_MyBaseClass:
561 .long 16 ; 0x10
562 .long 1 ; 0x1
563 .quad l_OBJC_PROP_NAME_ATTR_
564 .quad l_OBJC_PROP_NAME_ATTR_.10
565 .p2align 3, 0x0 ; @"_OBJC_CLASS_RO_$_MyBaseClass"
566 __OBJC_CLASS_RO_$_MyBaseClass:
567 .long 2 ; 0x2
568 .long 0 ; 0x0
569 .long 4 ; 0x4
570 .space 4
571 .quad 0
572 .quad l_OBJC_CLASS_NAME_
573 .quad __OBJC_$_INSTANCE_METHODS_MyBaseClass
574 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass
575 .quad __OBJC_$_INSTANCE_VARIABLES_MyBaseClass
576 .quad 0
577 .quad __OBJC_$_PROP_LIST_MyBaseClass
578 .globl __objc_empty_cache ; @_objc_empty_cache
579 .zerofill __DATA,__common,__objc_empty_cache,8,3
580 .section __DATA,__objc_classlist,regular,no_dead_strip
581 .p2align 3, 0x0 ; @"OBJC_LABEL_CLASS_$"
582 l_OBJC_LABEL_CLASS_$:
583 .quad _OBJC_CLASS_$_MyBaseClass
584 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol01
585 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol01
586 .section __DATA,__objc_imageinfo,regular,no_dead_strip
587 L_OBJC_IMAGE_INFO:
588 .long 0
589 .long 96
590 .subsections_via_symbols
593 #--- a64_file2.s
595 ## @protocol MyProtocol01
596 ## - (void)myProtocol01Method;
597 ## @end
599 ## @protocol MyProtocol02
600 ## - (void)myProtocol02Method;
601 ## @property(readonly) int MyProtocol02Prop;
602 ## @end
604 ## @protocol MyProtocol03
605 ## - (void)myProtocol03Method;
606 ## @property(readonly) int MyProtocol03Prop;
607 ## @end
610 ## __attribute__((objc_root_class))
611 ## @interface MyBaseClass<MyProtocol01>
612 ## - (void)baseInstanceMethod;
613 ## - (void)myProtocol01Method;
614 ## + (void)baseClassMethod;
615 ## @end
619 ## @interface MyBaseClass(Category02)<MyProtocol02>
620 ## - (void)class02InstanceMethod;
621 ## - (void)myProtocol02Method;
622 ## + (void)class02ClassMethod;
623 ## + (int)MyProtocol02Prop;
624 ## @end
626 ## @implementation MyBaseClass(Category02)
627 ## - (void)class02InstanceMethod {}
628 ## - (void)myProtocol02Method {}
629 ## + (void)class02ClassMethod {}
630 ## + (int)MyProtocol02Prop { return 0;}
631 ## @dynamic MyProtocol02Prop;
632 ## @end
634 ## @interface MyBaseClass(Category03)<MyProtocol03>
635 ## - (void)class03InstanceMethod;
636 ## - (void)myProtocol03Method;
637 ## + (void)class03ClassMethod;
638 ## + (int)MyProtocol03Prop;
639 ## @end
641 ## @implementation MyBaseClass(Category03)
642 ## - (void)class03InstanceMethod {}
643 ## - (void)myProtocol03Method {}
644 ## + (void)class03ClassMethod {}
645 ## + (int)MyProtocol03Prop { return 0;}
646 ## @dynamic MyProtocol03Prop;
647 ## @end
649 ## // This category shouldn't be merged
650 ## @interface MyBaseClass(Category04)
651 ## + (void)load;
652 ## @end
654 ## @implementation MyBaseClass(Category04)
655 ## + (void)load {}
656 ## @end
658 ## int main() {
659 ## return 0;
660 ## }
663 .section __TEXT,__text,regular,pure_instructions
664 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) class02InstanceMethod]
665 "-[MyBaseClass(Category02) class02InstanceMethod]": ; @"\01-[MyBaseClass(Category02) class02InstanceMethod]"
666 .cfi_startproc
667 ; %bb.0: ; %entry
669 .cfi_endproc
670 ; -- End function
671 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) myProtocol02Method]
672 "-[MyBaseClass(Category02) myProtocol02Method]": ; @"\01-[MyBaseClass(Category02) myProtocol02Method]"
673 .cfi_startproc
674 ; %bb.0: ; %entry
676 .cfi_endproc
677 ; -- End function
678 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) class02ClassMethod]
679 "+[MyBaseClass(Category02) class02ClassMethod]": ; @"\01+[MyBaseClass(Category02) class02ClassMethod]"
680 .cfi_startproc
681 ; %bb.0: ; %entry
683 .cfi_endproc
684 ; -- End function
685 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) MyProtocol02Prop]
686 "+[MyBaseClass(Category02) MyProtocol02Prop]": ; @"\01+[MyBaseClass(Category02) MyProtocol02Prop]"
687 .cfi_startproc
688 ; %bb.0: ; %entry
689 b _OUTLINED_FUNCTION_0
690 .cfi_endproc
691 ; -- End function
692 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) class03InstanceMethod]
693 "-[MyBaseClass(Category03) class03InstanceMethod]": ; @"\01-[MyBaseClass(Category03) class03InstanceMethod]"
694 .cfi_startproc
695 ; %bb.0: ; %entry
697 .cfi_endproc
698 ; -- End function
699 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) myProtocol03Method]
700 "-[MyBaseClass(Category03) myProtocol03Method]": ; @"\01-[MyBaseClass(Category03) myProtocol03Method]"
701 .cfi_startproc
702 ; %bb.0: ; %entry
704 .cfi_endproc
705 ; -- End function
706 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) class03ClassMethod]
707 "+[MyBaseClass(Category03) class03ClassMethod]": ; @"\01+[MyBaseClass(Category03) class03ClassMethod]"
708 .cfi_startproc
709 ; %bb.0: ; %entry
711 .cfi_endproc
712 ; -- End function
713 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) MyProtocol03Prop]
714 "+[MyBaseClass(Category03) MyProtocol03Prop]": ; @"\01+[MyBaseClass(Category03) MyProtocol03Prop]"
715 .cfi_startproc
716 ; %bb.0: ; %entry
717 b _OUTLINED_FUNCTION_0
718 .cfi_endproc
719 ; -- End function
720 .p2align 2
721 "+[MyBaseClass(Category04) load]":
722 .cfi_startproc
723 ; %bb.0:
725 .cfi_endproc
726 .globl _main ; -- Begin function main
727 .p2align 2
728 _main: ; @main
729 .cfi_startproc
730 ; %bb.0: ; %entry
731 b _OUTLINED_FUNCTION_0
732 .cfi_endproc
733 ; -- End function
734 .p2align 2 ; -- Begin function OUTLINED_FUNCTION_0
735 _OUTLINED_FUNCTION_0: ; @OUTLINED_FUNCTION_0 Tail Call
736 .cfi_startproc
737 ; %bb.0:
738 mov w0, #0
740 .cfi_endproc
741 ; -- End function
742 .section __TEXT,__objc_classname,cstring_literals
743 l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_
744 .asciz "Category02"
745 .section __TEXT,__objc_methname,cstring_literals
746 l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_
747 .asciz "class02InstanceMethod"
748 .section __TEXT,__objc_methtype,cstring_literals
749 l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_
750 .asciz "v16@0:8"
751 .section __TEXT,__objc_methname,cstring_literals
752 l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1
753 .asciz "myProtocol02Method"
754 .section __DATA,__objc_const
755 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02"
756 __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02:
757 .long 24 ; 0x18
758 .long 2 ; 0x2
759 .quad l_OBJC_METH_VAR_NAME_
760 .quad l_OBJC_METH_VAR_TYPE_
761 .quad "-[MyBaseClass(Category02) class02InstanceMethod]"
762 .quad l_OBJC_METH_VAR_NAME_.1
763 .quad l_OBJC_METH_VAR_TYPE_
764 .quad "-[MyBaseClass(Category02) myProtocol02Method]"
765 .section __TEXT,__objc_methname,cstring_literals
766 l_OBJC_METH_VAR_NAME_.2: ; @OBJC_METH_VAR_NAME_.2
767 .asciz "class02ClassMethod"
768 l_OBJC_METH_VAR_NAME_.3: ; @OBJC_METH_VAR_NAME_.3
769 .asciz "MyProtocol02Prop"
770 .section __TEXT,__objc_methtype,cstring_literals
771 l_OBJC_METH_VAR_TYPE_.4: ; @OBJC_METH_VAR_TYPE_.4
772 .asciz "i16@0:8"
773 .section __DATA,__objc_const
774 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02"
775 __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02:
776 .long 24 ; 0x18
777 .long 2 ; 0x2
778 .quad l_OBJC_METH_VAR_NAME_.2
779 .quad l_OBJC_METH_VAR_TYPE_
780 .quad "+[MyBaseClass(Category02) class02ClassMethod]"
781 .quad l_OBJC_METH_VAR_NAME_.3
782 .quad l_OBJC_METH_VAR_TYPE_.4
783 .quad "+[MyBaseClass(Category02) MyProtocol02Prop]"
784 .section __TEXT,__objc_classname,cstring_literals
785 l_OBJC_CLASS_NAME_.5: ; @OBJC_CLASS_NAME_.5
786 .asciz "MyProtocol02"
787 .section __DATA,__objc_const
788 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02"
789 __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02:
790 .long 24 ; 0x18
791 .long 2 ; 0x2
792 .quad l_OBJC_METH_VAR_NAME_.1
793 .quad l_OBJC_METH_VAR_TYPE_
794 .quad 0
795 .quad l_OBJC_METH_VAR_NAME_.3
796 .quad l_OBJC_METH_VAR_TYPE_.4
797 .quad 0
798 .section __TEXT,__objc_methname,cstring_literals
799 l_OBJC_PROP_NAME_ATTR_: ; @OBJC_PROP_NAME_ATTR_
800 .asciz "MyProtocol02Prop"
801 l_OBJC_PROP_NAME_ATTR_.6: ; @OBJC_PROP_NAME_ATTR_.6
802 .asciz "Ti,R"
803 .section __DATA,__objc_const
804 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol02"
805 __OBJC_$_PROP_LIST_MyProtocol02:
806 .long 16 ; 0x10
807 .long 1 ; 0x1
808 .quad l_OBJC_PROP_NAME_ATTR_
809 .quad l_OBJC_PROP_NAME_ATTR_.6
810 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02"
811 __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02:
812 .quad l_OBJC_METH_VAR_TYPE_
813 .quad l_OBJC_METH_VAR_TYPE_.4
814 .private_extern __OBJC_PROTOCOL_$_MyProtocol02 ; @"_OBJC_PROTOCOL_$_MyProtocol02"
815 .section __DATA,__data
816 .globl __OBJC_PROTOCOL_$_MyProtocol02
817 .weak_definition __OBJC_PROTOCOL_$_MyProtocol02
818 .p2align 3, 0x0
819 __OBJC_PROTOCOL_$_MyProtocol02:
820 .quad 0
821 .quad l_OBJC_CLASS_NAME_.5
822 .quad 0
823 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02
824 .quad 0
825 .quad 0
826 .quad 0
827 .quad __OBJC_$_PROP_LIST_MyProtocol02
828 .long 96 ; 0x60
829 .long 0 ; 0x0
830 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02
831 .quad 0
832 .quad 0
833 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol02 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol02"
834 .section __DATA,__objc_protolist,coalesced,no_dead_strip
835 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol02
836 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol02
837 .p2align 3, 0x0
838 __OBJC_LABEL_PROTOCOL_$_MyProtocol02:
839 .quad __OBJC_PROTOCOL_$_MyProtocol02
840 .section __DATA,__objc_const
841 .p2align 3, 0x0 ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02"
842 __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02:
843 .quad 1 ; 0x1
844 .quad __OBJC_PROTOCOL_$_MyProtocol02
845 .quad 0
846 .section __TEXT,__objc_methname,cstring_literals
847 l_OBJC_PROP_NAME_ATTR_.7: ; @OBJC_PROP_NAME_ATTR_.7
848 .asciz "Ti,R,D"
849 .section __DATA,__objc_const
850 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category02"
851 __OBJC_$_PROP_LIST_MyBaseClass_$_Category02:
852 .long 16 ; 0x10
853 .long 1 ; 0x1
854 .quad l_OBJC_PROP_NAME_ATTR_
855 .quad l_OBJC_PROP_NAME_ATTR_.7
856 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category02"
857 __OBJC_$_CATEGORY_MyBaseClass_$_Category02:
858 .quad l_OBJC_CLASS_NAME_
859 .quad _OBJC_CLASS_$_MyBaseClass
860 .quad __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02
861 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02
862 .quad __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02
863 .quad __OBJC_$_PROP_LIST_MyBaseClass_$_Category02
864 .quad 0
865 .long 64 ; 0x40
866 .space 4
867 .section __TEXT,__objc_classname,cstring_literals
868 l_OBJC_CLASS_NAME_.8: ; @OBJC_CLASS_NAME_.8
869 .asciz "Category03"
870 .section __TEXT,__objc_methname,cstring_literals
871 l_OBJC_METH_VAR_NAME_.9: ; @OBJC_METH_VAR_NAME_.9
872 .asciz "class03InstanceMethod"
873 l_OBJC_METH_VAR_NAME_.10: ; @OBJC_METH_VAR_NAME_.10
874 .asciz "myProtocol03Method"
875 .section __DATA,__objc_const
876 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03"
877 __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03:
878 .long 24 ; 0x18
879 .long 2 ; 0x2
880 .quad l_OBJC_METH_VAR_NAME_.9
881 .quad l_OBJC_METH_VAR_TYPE_
882 .quad "-[MyBaseClass(Category03) class03InstanceMethod]"
883 .quad l_OBJC_METH_VAR_NAME_.10
884 .quad l_OBJC_METH_VAR_TYPE_
885 .quad "-[MyBaseClass(Category03) myProtocol03Method]"
886 .section __TEXT,__objc_methname,cstring_literals
887 l_OBJC_METH_VAR_NAME_.11: ; @OBJC_METH_VAR_NAME_.11
888 .asciz "class03ClassMethod"
889 l_OBJC_METH_VAR_NAME_.12: ; @OBJC_METH_VAR_NAME_.12
890 .asciz "MyProtocol03Prop"
891 .section __DATA,__objc_const
892 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03"
893 __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03:
894 .long 24 ; 0x18
895 .long 2 ; 0x2
896 .quad l_OBJC_METH_VAR_NAME_.11
897 .quad l_OBJC_METH_VAR_TYPE_
898 .quad "+[MyBaseClass(Category03) class03ClassMethod]"
899 .quad l_OBJC_METH_VAR_NAME_.12
900 .quad l_OBJC_METH_VAR_TYPE_.4
901 .quad "+[MyBaseClass(Category03) MyProtocol03Prop]"
902 .section __TEXT,__objc_classname,cstring_literals
903 l_OBJC_CLASS_NAME_.13: ; @OBJC_CLASS_NAME_.13
904 .asciz "MyProtocol03"
905 .section __DATA,__objc_const
906 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03"
907 __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03:
908 .long 24 ; 0x18
909 .long 2 ; 0x2
910 .quad l_OBJC_METH_VAR_NAME_.10
911 .quad l_OBJC_METH_VAR_TYPE_
912 .quad 0
913 .quad l_OBJC_METH_VAR_NAME_.12
914 .quad l_OBJC_METH_VAR_TYPE_.4
915 .quad 0
916 .section __TEXT,__objc_methname,cstring_literals
917 l_OBJC_PROP_NAME_ATTR_.14: ; @OBJC_PROP_NAME_ATTR_.14
918 .asciz "MyProtocol03Prop"
919 .section __DATA,__objc_const
920 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol03"
921 __OBJC_$_PROP_LIST_MyProtocol03:
922 .long 16 ; 0x10
923 .long 1 ; 0x1
924 .quad l_OBJC_PROP_NAME_ATTR_.14
925 .quad l_OBJC_PROP_NAME_ATTR_.6
926 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03"
927 __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03:
928 .quad l_OBJC_METH_VAR_TYPE_
929 .quad l_OBJC_METH_VAR_TYPE_.4
930 .private_extern __OBJC_PROTOCOL_$_MyProtocol03 ; @"_OBJC_PROTOCOL_$_MyProtocol03"
931 .section __DATA,__data
932 .globl __OBJC_PROTOCOL_$_MyProtocol03
933 .weak_definition __OBJC_PROTOCOL_$_MyProtocol03
934 .p2align 3, 0x0
935 __OBJC_PROTOCOL_$_MyProtocol03:
936 .quad 0
937 .quad l_OBJC_CLASS_NAME_.13
938 .quad 0
939 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03
940 .quad 0
941 .quad 0
942 .quad 0
943 .quad __OBJC_$_PROP_LIST_MyProtocol03
944 .long 96 ; 0x60
945 .long 0 ; 0x0
946 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03
947 .quad 0
948 .quad 0
949 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol03 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol03"
950 .section __DATA,__objc_protolist,coalesced,no_dead_strip
951 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol03
952 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol03
953 .p2align 3, 0x0
954 __OBJC_LABEL_PROTOCOL_$_MyProtocol03:
955 .quad __OBJC_PROTOCOL_$_MyProtocol03
956 .section __DATA,__objc_const
957 .p2align 3, 0x0 ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03"
958 __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03:
959 .quad 1 ; 0x1
960 .quad __OBJC_PROTOCOL_$_MyProtocol03
961 .quad 0
962 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category03"
963 __OBJC_$_PROP_LIST_MyBaseClass_$_Category03:
964 .long 16 ; 0x10
965 .long 1 ; 0x1
966 .quad l_OBJC_PROP_NAME_ATTR_.14
967 .quad l_OBJC_PROP_NAME_ATTR_.7
968 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category03"
969 __OBJC_$_CATEGORY_MyBaseClass_$_Category03:
970 .quad l_OBJC_CLASS_NAME_.8
971 .quad _OBJC_CLASS_$_MyBaseClass
972 .quad __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03
973 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03
974 .quad __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03
975 .quad __OBJC_$_PROP_LIST_MyBaseClass_$_Category03
976 .quad 0
977 .long 64 ; 0x40
978 .space 4
979 .section __TEXT,__objc_classname,cstring_literals
980 l_OBJC_CLASS_NAME_.15:
981 .asciz "Category04"
982 .section __TEXT,__objc_methname,cstring_literals
983 l_OBJC_METH_VAR_NAME_.16:
984 .asciz "load"
985 .section __DATA,__objc_const
986 .p2align 3, 0x0
987 __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04:
988 .long 24
989 .long 1
990 .quad l_OBJC_METH_VAR_NAME_.16
991 .quad l_OBJC_METH_VAR_TYPE_
992 .quad "+[MyBaseClass(Category04) load]"
993 .p2align 3, 0x0
994 __OBJC_$_CATEGORY_MyBaseClass_$_Category04:
995 .quad l_OBJC_CLASS_NAME_.15
996 .quad _OBJC_CLASS_$_MyBaseClass
997 .quad 0
998 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04
999 .quad 0
1000 .quad 0
1001 .quad 0
1002 .long 64
1003 .space 4
1004 .section __DATA,__objc_catlist,regular,no_dead_strip
1005 .p2align 3, 0x0 ; @"OBJC_LABEL_CATEGORY_$"
1006 l_OBJC_LABEL_CATEGORY_$:
1007 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category02
1008 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category03
1009 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category04
1010 .section __DATA,__objc_nlcatlist,regular,no_dead_strip
1011 .p2align 3, 0x0
1012 l_OBJC_LABEL_NONLAZY_CATEGORY_$:
1013 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category04
1015 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol02
1016 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol03
1017 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol02
1018 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol03
1019 .section __DATA,__objc_imageinfo,regular,no_dead_strip
1020 L_OBJC_IMAGE_INFO:
1021 .long 0
1022 .long 96
1023 .subsections_via_symbols