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
320 ## @protocol MyProtocol01
321 ## - (void)myProtocol01Method;
322 ## @property (nonatomic) int MyProtocol01Prop;
325 ## __attribute__((objc_root_class))
326 ## @interface MyBaseClass<MyProtocol01>
327 ## - (void)baseInstanceMethod;
328 ## - (void)myProtocol01Method;
329 ## + (void)baseClassMethod;
332 ## @implementation MyBaseClass
333 ## @synthesize MyProtocol01Prop;
334 ## - (void)baseInstanceMethod {}
335 ## - (void)myProtocol01Method {}
336 ## + (void)baseClassMethod {}
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]"
349 .p2align 2 ; -- Begin function -[MyBaseClass myProtocol01Method]
350 "-[MyBaseClass myProtocol01Method]": ; @
"\01-[MyBaseClass myProtocol01Method]"
356 .p2align 2 ; -- Begin function +[MyBaseClass baseClassMethod]
357 "+[MyBaseClass baseClassMethod]": ; @
"\01+[MyBaseClass baseClassMethod]"
363 .p2align 2 ; -- Begin function -[MyBaseClass MyProtocol01Prop]
364 "-[MyBaseClass MyProtocol01Prop]": ; @
"\01-[MyBaseClass MyProtocol01Prop]"
368 adrp x8
, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
370 ldrsw x8
, [x8
, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF
]
373 .loh AdrpLdr Lloh0, Lloh1
376 .p2align 2 ; -- Begin function -[MyBaseClass setMyProtocol01Prop:]
377 "-[MyBaseClass setMyProtocol01Prop:]": ; @
"\01-[MyBaseClass setMyProtocol01Prop:]"
381 adrp x8
, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
383 ldrsw x8
, [x8
, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF
]
386 .loh AdrpLdr Lloh2, Lloh3
389 .private_extern _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop ; @"OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop"
390 .section __DATA,__objc_ivar
391 .globl _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
393 _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
:
395 .section __DATA,__objc_data
396 .globl _OBJC_CLASS_$_MyBaseClass ; @"OBJC_CLASS_$_MyBaseClass"
398 _OBJC_CLASS_$_MyBaseClass
:
399 .quad _OBJC_METACLASS_$_MyBaseClass
401 .quad __objc_empty_cache
403 .quad __OBJC_CLASS_RO_$_MyBaseClass
404 .globl _OBJC_METACLASS_$_MyBaseClass ; @"OBJC_METACLASS_$_MyBaseClass"
406 _OBJC_METACLASS_$_MyBaseClass
:
407 .quad _OBJC_METACLASS_$_MyBaseClass
408 .quad _OBJC_CLASS_$_MyBaseClass
409 .quad __objc_empty_cache
411 .quad __OBJC_METACLASS_RO_$_MyBaseClass
412 .section __TEXT,__objc_classname,cstring_literals
413 l_OBJC_CLASS_NAME_
: ; @OBJC_CLASS_NAME_
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_
421 .section __DATA,__objc_const
422 .p2align 3, 0x0 ; @"_OBJC_$_CLASS_METHODS_MyBaseClass"
423 __OBJC_$_CLASS_METHODS_MyBaseClass
:
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
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
446 .section __DATA,__objc_const
447 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01"
448 __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01
:
451 .quad l_OBJC_METH_VAR_NAME_.2
452 .quad l_OBJC_METH_VAR_TYPE_
454 .quad l_OBJC_METH_VAR_NAME_.3
455 .quad l_OBJC_METH_VAR_TYPE_.4
457 .quad l_OBJC_METH_VAR_NAME_.5
458 .quad l_OBJC_METH_VAR_TYPE_.6
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
465 .section __DATA,__objc_const
466 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol01"
467 __OBJC_$_PROP_LIST_MyProtocol01
:
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
482 __OBJC_PROTOCOL_$_MyProtocol01
:
484 .quad l_OBJC_CLASS_NAME_.1
486 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01
490 .quad __OBJC_$_PROP_LIST_MyProtocol01
493 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01
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
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
:
507 .quad __OBJC_PROTOCOL_$_MyProtocol01
509 .p2align 3, 0x0 ; @"_OBJC_METACLASS_RO_$_MyBaseClass"
510 __OBJC_METACLASS_RO_$_MyBaseClass
:
516 .quad l_OBJC_CLASS_NAME_
517 .quad __OBJC_$_CLASS_METHODS_MyBaseClass
518 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass
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
:
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
545 .section __DATA,__objc_const
546 .p2align 3, 0x0 ; @"_OBJC_$_INSTANCE_VARIABLES_MyBaseClass"
547 __OBJC_$_INSTANCE_VARIABLES_MyBaseClass
:
550 .quad _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
551 .quad l_OBJC_METH_VAR_NAME_.3
552 .quad l_OBJC_METH_VAR_TYPE_.9
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
:
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
:
572 .quad l_OBJC_CLASS_NAME_
573 .quad __OBJC_$_INSTANCE_METHODS_MyBaseClass
574 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass
575 .quad __OBJC_$_INSTANCE_VARIABLES_MyBaseClass
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
590 .subsections_via_symbols
595 ## @protocol MyProtocol01
596 ## - (void)myProtocol01Method;
599 ## @protocol MyProtocol02
600 ## - (void)myProtocol02Method;
601 ## @property(readonly) int MyProtocol02Prop;
604 ## @protocol MyProtocol03
605 ## - (void)myProtocol03Method;
606 ## @property(readonly) int MyProtocol03Prop;
610 ## __attribute__((objc_root_class))
611 ## @interface MyBaseClass<MyProtocol01>
612 ## - (void)baseInstanceMethod;
613 ## - (void)myProtocol01Method;
614 ## + (void)baseClassMethod;
619 ## @interface MyBaseClass(Category02)<MyProtocol02>
620 ## - (void)class02InstanceMethod;
621 ## - (void)myProtocol02Method;
622 ## + (void)class02ClassMethod;
623 ## + (int)MyProtocol02Prop;
626 ## @implementation MyBaseClass(Category02)
627 ## - (void)class02InstanceMethod {}
628 ## - (void)myProtocol02Method {}
629 ## + (void)class02ClassMethod {}
630 ## + (int)MyProtocol02Prop { return 0;}
631 ## @dynamic MyProtocol02Prop;
634 ## @interface MyBaseClass(Category03)<MyProtocol03>
635 ## - (void)class03InstanceMethod;
636 ## - (void)myProtocol03Method;
637 ## + (void)class03ClassMethod;
638 ## + (int)MyProtocol03Prop;
641 ## @implementation MyBaseClass(Category03)
642 ## - (void)class03InstanceMethod {}
643 ## - (void)myProtocol03Method {}
644 ## + (void)class03ClassMethod {}
645 ## + (int)MyProtocol03Prop { return 0;}
646 ## @dynamic MyProtocol03Prop;
649 ## // This category shouldn't be merged
650 ## @interface MyBaseClass(Category04)
654 ## @implementation MyBaseClass(Category04)
663 .section __TEXT,__text,regular,pure_instructions
664 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) class02InstanceMethod]
665 "-[MyBaseClass(Category02) class02InstanceMethod]": ; @
"\01-[MyBaseClass(Category02) class02InstanceMethod]"
671 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) myProtocol02Method]
672 "-[MyBaseClass(Category02) myProtocol02Method]": ; @
"\01-[MyBaseClass(Category02) myProtocol02Method]"
678 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) class02ClassMethod]
679 "+[MyBaseClass(Category02) class02ClassMethod]": ; @
"\01+[MyBaseClass(Category02) class02ClassMethod]"
685 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) MyProtocol02Prop]
686 "+[MyBaseClass(Category02) MyProtocol02Prop]": ; @
"\01+[MyBaseClass(Category02) MyProtocol02Prop]"
689 b _OUTLINED_FUNCTION_0
692 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) class03InstanceMethod]
693 "-[MyBaseClass(Category03) class03InstanceMethod]": ; @
"\01-[MyBaseClass(Category03) class03InstanceMethod]"
699 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) myProtocol03Method]
700 "-[MyBaseClass(Category03) myProtocol03Method]": ; @
"\01-[MyBaseClass(Category03) myProtocol03Method]"
706 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) class03ClassMethod]
707 "+[MyBaseClass(Category03) class03ClassMethod]": ; @
"\01+[MyBaseClass(Category03) class03ClassMethod]"
713 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) MyProtocol03Prop]
714 "+[MyBaseClass(Category03) MyProtocol03Prop]": ; @
"\01+[MyBaseClass(Category03) MyProtocol03Prop]"
717 b _OUTLINED_FUNCTION_0
721 "+[MyBaseClass(Category04) load]":
726 .globl _main ; -- Begin function main
731 b _OUTLINED_FUNCTION_0
734 .p2align 2 ; -- Begin function OUTLINED_FUNCTION_0
735 _OUTLINED_FUNCTION_0
: ; @OUTLINED_FUNCTION_0 Tail Call
742 .section __TEXT,__objc_classname,cstring_literals
743 l_OBJC_CLASS_NAME_
: ; @OBJC_CLASS_NAME_
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_
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
:
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
773 .section __DATA,__objc_const
774 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02"
775 __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02
:
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
:
792 .quad l_OBJC_METH_VAR_NAME_.1
793 .quad l_OBJC_METH_VAR_TYPE_
795 .quad l_OBJC_METH_VAR_NAME_.3
796 .quad l_OBJC_METH_VAR_TYPE_.4
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
803 .section __DATA,__objc_const
804 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol02"
805 __OBJC_$_PROP_LIST_MyProtocol02
:
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
819 __OBJC_PROTOCOL_$_MyProtocol02
:
821 .quad l_OBJC_CLASS_NAME_.5
823 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02
827 .quad __OBJC_$_PROP_LIST_MyProtocol02
830 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02
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
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
:
844 .quad __OBJC_PROTOCOL_$_MyProtocol02
846 .section __TEXT,__objc_methname,cstring_literals
847 l_OBJC_PROP_NAME_ATTR_.7
: ; @OBJC_PROP_NAME_ATTR_.7
849 .section __DATA,__objc_const
850 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category02"
851 __OBJC_$_PROP_LIST_MyBaseClass_$_Category02
:
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
867 .section __TEXT,__objc_classname,cstring_literals
868 l_OBJC_CLASS_NAME_.8
: ; @OBJC_CLASS_NAME_.8
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
:
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
:
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
:
910 .quad l_OBJC_METH_VAR_NAME_.10
911 .quad l_OBJC_METH_VAR_TYPE_
913 .quad l_OBJC_METH_VAR_NAME_.12
914 .quad l_OBJC_METH_VAR_TYPE_.4
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
:
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
935 __OBJC_PROTOCOL_$_MyProtocol03
:
937 .quad l_OBJC_CLASS_NAME_.13
939 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03
943 .quad __OBJC_$_PROP_LIST_MyProtocol03
946 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03
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
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
:
960 .quad __OBJC_PROTOCOL_$_MyProtocol03
962 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category03"
963 __OBJC_$_PROP_LIST_MyBaseClass_$_Category03
:
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
979 .section __TEXT,__objc_classname,cstring_literals
980 l_OBJC_CLASS_NAME_.15
:
982 .section __TEXT,__objc_methname,cstring_literals
983 l_OBJC_METH_VAR_NAME_.16
:
985 .section __DATA,__objc_const
987 __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04
:
990 .quad l_OBJC_METH_VAR_NAME_.16
991 .quad l_OBJC_METH_VAR_TYPE_
992 .quad "+[MyBaseClass(Category04) load]"
994 __OBJC_$_CATEGORY_MyBaseClass_$_Category04
:
995 .quad l_OBJC_CLASS_NAME_.15
996 .quad _OBJC_CLASS_$_MyBaseClass
998 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04
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
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
1023 .subsections_via_symbols