llvm-project

Форк
0
/
objc-category-merging-complete-test.s 
1019 строк · 43.8 Кб
1
# REQUIRES: aarch64
2
# RUN: rm -rf %t; split-file %s %t && cd %t
3

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
8

9
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o a64_file2.o a64_file2.s
10
# RUN: %lld -arch arm64 -o a64_file2_no_merge.exe a64_file1.dylib a64_file2.o
11
# RUN: %lld -arch arm64 -o a64_file2_merge.exe -objc_category_merging a64_file1.dylib a64_file2.o
12

13
# RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS
14
# RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge.exe | FileCheck %s --check-prefixes=MERGE_CATS
15

16
############ Test merging multiple categories into the base class ############
17
# RUN: %lld -arch arm64 -o a64_file2_merge_into_class.exe -objc_category_merging a64_file1.o a64_file2.o
18
# RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge_into_class.exe | FileCheck %s --check-prefixes=MERGE_CATS_CLS
19

20

21
MERGE_CATS:     __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)
22
MERGE_CATS-NEXT:              name {{.*}} Category02|Category03
23
MERGE_CATS:           instanceMethods
24
MERGE_CATS-NEXT:           entsize 24
25
MERGE_CATS-NEXT:             count 4
26
MERGE_CATS-NEXT:              name {{.*}} class02InstanceMethod
27
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
28
MERGE_CATS-NEXT:               imp -[MyBaseClass(Category02) class02InstanceMethod]
29
MERGE_CATS-NEXT:              name {{.*}} myProtocol02Method
30
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
31
MERGE_CATS-NEXT:               imp -[MyBaseClass(Category02) myProtocol02Method]
32
MERGE_CATS-NEXT:              name {{.*}} class03InstanceMethod
33
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
34
MERGE_CATS-NEXT:               imp -[MyBaseClass(Category03) class03InstanceMethod]
35
MERGE_CATS-NEXT:              name {{.*}} myProtocol03Method
36
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
37
MERGE_CATS-NEXT:               imp -[MyBaseClass(Category03) myProtocol03Method]
38
MERGE_CATS-NEXT:      classMethods {{.*}}
39
MERGE_CATS-NEXT:           entsize 24
40
MERGE_CATS-NEXT:             count 4
41
MERGE_CATS-NEXT:              name {{.*}} class02ClassMethod
42
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
43
MERGE_CATS-NEXT:               imp +[MyBaseClass(Category02) class02ClassMethod]
44
MERGE_CATS-NEXT:              name {{.*}} MyProtocol02Prop
45
MERGE_CATS-NEXT:             types {{.*}} i16@0:8
46
MERGE_CATS-NEXT:               imp +[MyBaseClass(Category02) MyProtocol02Prop]
47
MERGE_CATS-NEXT:              name {{.*}} class03ClassMethod
48
MERGE_CATS-NEXT:             types {{.*}} v16@0:8
49
MERGE_CATS-NEXT:               imp +[MyBaseClass(Category03) class03ClassMethod]
50
MERGE_CATS-NEXT:              name {{.*}} MyProtocol03Prop
51
MERGE_CATS-NEXT:             types {{.*}} i16@0:8
52
MERGE_CATS-NEXT:               imp +[MyBaseClass(Category03) MyProtocol03Prop]
53
MERGE_CATS-NEXT:         protocols
54
MERGE_CATS-NEXT:                      count 2
55
MERGE_CATS-NEXT:              list[0] {{.*}} (struct protocol_t *)
56
MERGE_CATS-NEXT:                  isa 0x0
57
MERGE_CATS-NEXT:                 name {{.*}} MyProtocol02
58
MERGE_CATS-NEXT:            protocols 0x0
59
MERGE_CATS-NEXT:          instanceMethods
60
MERGE_CATS-NEXT:               entsize 24
61
MERGE_CATS-NEXT:                 count 2
62
MERGE_CATS-NEXT:                  name {{.*}} myProtocol02Method
63
MERGE_CATS-NEXT:                 types {{.*}} v16@0:8
64
MERGE_CATS-NEXT:                   imp 0x0
65
MERGE_CATS-NEXT:                  name {{.*}} MyProtocol02Prop
66
MERGE_CATS-NEXT:                 types {{.*}} i16@0:8
67
MERGE_CATS-NEXT:                   imp 0x0
68
MERGE_CATS-NEXT:             classMethods
69
MERGE_CATS-NEXT:      optionalInstanceMethods 0x0
70
MERGE_CATS-NEXT:         optionalClassMethods 0x0
71
MERGE_CATS-NEXT:           instanceProperties {{.*}}
72
MERGE_CATS-NEXT:              list[1] {{.*}}
73
MERGE_CATS-NEXT:                  isa 0x0
74
MERGE_CATS-NEXT:                 name {{.*}} MyProtocol03
75
MERGE_CATS-NEXT:            protocols 0x0
76
MERGE_CATS-NEXT:          instanceMethods
77
MERGE_CATS-NEXT:               entsize 24
78
MERGE_CATS-NEXT:                 count 2
79
MERGE_CATS-NEXT:                  name {{.*}} myProtocol03Method
80
MERGE_CATS-NEXT:                 types {{.*}} v16@0:8
81
MERGE_CATS-NEXT:                   imp 0x0
82
MERGE_CATS-NEXT:                  name {{.*}} MyProtocol03Prop
83
MERGE_CATS-NEXT:                 types {{.*}} i16@0:8
84
MERGE_CATS-NEXT:                   imp 0x0
85
MERGE_CATS-NEXT:             classMethods 0x0
86
MERGE_CATS-NEXT:      optionalInstanceMethods 0x0
87
MERGE_CATS-NEXT:         optionalClassMethods 0x0
88
MERGE_CATS-NEXT:           instanceProperties {{.*}}
89
MERGE_CATS-NEXT:      instanceProperties
90
MERGE_CATS-NEXT:                    entsize 16
91
MERGE_CATS-NEXT:                      count 2
92
MERGE_CATS-NEXT:                 name {{.*}} MyProtocol02Prop
93
MERGE_CATS-NEXT:            attributes {{.*}} Ti,R,D
94
MERGE_CATS-NEXT:                 name {{.*}} MyProtocol03Prop
95
MERGE_CATS-NEXT:            attributes {{.*}} Ti,R,D
96
MERGE_CATS:        __OBJC_$_CATEGORY_MyBaseClass_$_Category04
97

98

99
NO_MERGE_CATS-NOT: __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)
100
NO_MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass_$_Category02
101
NO_MERGE_CATS: instanceMethods
102
NO_MERGE_CATS-NEXT: 24
103
NO_MERGE_CATS-NEXT: 2
104
NO_MERGE_CATS: classMethods
105
NO_MERGE_CATS-NEXT: 24
106
NO_MERGE_CATS-NEXT: 2
107

108

109
MERGE_CATS_CLS:        _OBJC_CLASS_$_MyBaseClass
110
MERGE_CATS_CLS-NEXT:            isa {{.*}} _OBJC_METACLASS_$_MyBaseClass
111
MERGE_CATS_CLS-NEXT:     superclass 0x0
112
MERGE_CATS_CLS-NEXT:          cache {{.*}} __objc_empty_cache
113
MERGE_CATS_CLS-NEXT:         vtable 0x0
114
MERGE_CATS_CLS-NEXT:           data {{.*}} (struct class_ro_t *)
115
MERGE_CATS_CLS-NEXT:                     flags 0x2 RO_ROOT
116
MERGE_CATS_CLS-NEXT:             instanceStart 0
117
MERGE_CATS_CLS-NEXT:              instanceSize 4
118
MERGE_CATS_CLS-NEXT:                  reserved 0x0
119
MERGE_CATS_CLS-NEXT:                ivarLayout 0x0
120
MERGE_CATS_CLS-NEXT:                      name {{.*}} MyBaseClass
121
MERGE_CATS_CLS-NEXT:               baseMethods {{.*}} (struct method_list_t *)
122
MERGE_CATS_CLS-NEXT:            entsize 24
123
MERGE_CATS_CLS-NEXT:              count 8
124
MERGE_CATS_CLS-NEXT:               name {{.*}} class02InstanceMethod
125
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
126
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass(Category02) class02InstanceMethod]
127
MERGE_CATS_CLS-NEXT:               name {{.*}} myProtocol02Method
128
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
129
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass(Category02) myProtocol02Method]
130
MERGE_CATS_CLS-NEXT:               name {{.*}} class03InstanceMethod
131
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
132
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass(Category03) class03InstanceMethod]
133
MERGE_CATS_CLS-NEXT:               name {{.*}} myProtocol03Method
134
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
135
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass(Category03) myProtocol03Method]
136
MERGE_CATS_CLS-NEXT:               name {{.*}} baseInstanceMethod
137
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
138
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass baseInstanceMethod]
139
MERGE_CATS_CLS-NEXT:               name {{.*}} myProtocol01Method
140
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
141
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass myProtocol01Method]
142
MERGE_CATS_CLS-NEXT:               name {{.*}} MyProtocol01Prop
143
MERGE_CATS_CLS-NEXT:              types {{.*}} i16@0:8
144
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass MyProtocol01Prop]
145
MERGE_CATS_CLS-NEXT:               name {{.*}} setMyProtocol01Prop:
146
MERGE_CATS_CLS-NEXT:              types {{.*}} v20@0:8i16
147
MERGE_CATS_CLS-NEXT:                imp -[MyBaseClass setMyProtocol01Prop:]
148
MERGE_CATS_CLS-NEXT:             baseProtocols {{.*}}
149
MERGE_CATS_CLS-NEXT:                       count 3
150
MERGE_CATS_CLS-NEXT:               list[0] {{.*}} (struct protocol_t *)
151
MERGE_CATS_CLS-NEXT:                   isa 0x0
152
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol02
153
MERGE_CATS_CLS-NEXT:             protocols 0x0
154
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
155
MERGE_CATS_CLS-NEXT:                entsize 24
156
MERGE_CATS_CLS-NEXT:                  count 2
157
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol02Method
158
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
159
MERGE_CATS_CLS-NEXT:                    imp 0x0
160
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol02Prop
161
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
162
MERGE_CATS_CLS-NEXT:                    imp 0x0
163
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
164
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
165
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
166
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
167
MERGE_CATS_CLS-NEXT:               list[1] {{.*}} (struct protocol_t *)
168
MERGE_CATS_CLS-NEXT:                   isa 0x0
169
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol03
170
MERGE_CATS_CLS-NEXT:             protocols 0x0
171
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
172
MERGE_CATS_CLS-NEXT:                entsize 24
173
MERGE_CATS_CLS-NEXT:                  count 2
174
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol03Method
175
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
176
MERGE_CATS_CLS-NEXT:                    imp 0x0
177
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol03Prop
178
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
179
MERGE_CATS_CLS-NEXT:                    imp 0x0
180
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
181
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
182
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
183
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
184
MERGE_CATS_CLS-NEXT:               list[2] {{.*}} (struct protocol_t *)
185
MERGE_CATS_CLS-NEXT:                   isa 0x0
186
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol01
187
MERGE_CATS_CLS-NEXT:             protocols 0x0
188
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
189
MERGE_CATS_CLS-NEXT:                entsize 24
190
MERGE_CATS_CLS-NEXT:                  count 3
191
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol01Method
192
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
193
MERGE_CATS_CLS-NEXT:                    imp 0x0
194
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol01Prop
195
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
196
MERGE_CATS_CLS-NEXT:                    imp 0x0
197
MERGE_CATS_CLS-NEXT:                   name {{.*}} setMyProtocol01Prop:
198
MERGE_CATS_CLS-NEXT:                  types {{.*}} v20@0:8i16
199
MERGE_CATS_CLS-NEXT:                    imp 0x0
200
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
201
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
202
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
203
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
204
MERGE_CATS_CLS-NEXT:                     ivars {{.*}}
205
MERGE_CATS_CLS-NEXT:                     entsize 32
206
MERGE_CATS_CLS-NEXT:                       count 1
207
MERGE_CATS_CLS-NEXT:                offset {{.*}} 0
208
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol01Prop
209
MERGE_CATS_CLS-NEXT:                  type {{.*}} i
210
MERGE_CATS_CLS-NEXT:             alignment 2
211
MERGE_CATS_CLS-NEXT:                  size 4
212
MERGE_CATS_CLS-NEXT:            weakIvarLayout 0x0
213
MERGE_CATS_CLS-NEXT:            baseProperties {{.*}}
214
MERGE_CATS_CLS-NEXT:                     entsize 16
215
MERGE_CATS_CLS-NEXT:                       count 3
216
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol02Prop
217
MERGE_CATS_CLS-NEXT:             attributes {{.*}} Ti,R,D
218
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol03Prop
219
MERGE_CATS_CLS-NEXT:             attributes {{.*}} Ti,R,D
220
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol01Prop
221
MERGE_CATS_CLS-NEXT:             attributes {{.*}} Ti,N,VMyProtocol01Prop
222
MERGE_CATS_CLS-NEXT: Meta Class
223
MERGE_CATS_CLS-NEXT:            isa {{.*}} _OBJC_METACLASS_$_MyBaseClass
224
MERGE_CATS_CLS-NEXT:     superclass {{.*}} _OBJC_CLASS_$_MyBaseClass
225
MERGE_CATS_CLS-NEXT:          cache {{.*}} __objc_empty_cache
226
MERGE_CATS_CLS-NEXT:         vtable 0x0
227
MERGE_CATS_CLS-NEXT:           data {{.*}} (struct class_ro_t *)
228
MERGE_CATS_CLS-NEXT:                     flags 0x3 RO_META RO_ROOT
229
MERGE_CATS_CLS-NEXT:             instanceStart 40
230
MERGE_CATS_CLS-NEXT:              instanceSize 40
231
MERGE_CATS_CLS-NEXT:                  reserved 0x0
232
MERGE_CATS_CLS-NEXT:                ivarLayout 0x0
233
MERGE_CATS_CLS-NEXT:                      name {{.*}} MyBaseClass
234
MERGE_CATS_CLS-NEXT:               baseMethods {{.*}} (struct method_list_t *)
235
MERGE_CATS_CLS-NEXT:            entsize 24
236
MERGE_CATS_CLS-NEXT:              count 5
237
MERGE_CATS_CLS-NEXT:               name {{.*}} class02ClassMethod
238
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
239
MERGE_CATS_CLS-NEXT:                imp +[MyBaseClass(Category02) class02ClassMethod]
240
MERGE_CATS_CLS-NEXT:               name {{.*}} MyProtocol02Prop
241
MERGE_CATS_CLS-NEXT:              types {{.*}} i16@0:8
242
MERGE_CATS_CLS-NEXT:                imp +[MyBaseClass(Category02) MyProtocol02Prop]
243
MERGE_CATS_CLS-NEXT:               name {{.*}} class03ClassMethod
244
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
245
MERGE_CATS_CLS-NEXT:                imp +[MyBaseClass(Category03) class03ClassMethod]
246
MERGE_CATS_CLS-NEXT:               name {{.*}} MyProtocol03Prop
247
MERGE_CATS_CLS-NEXT:              types {{.*}} i16@0:8
248
MERGE_CATS_CLS-NEXT:                imp +[MyBaseClass(Category03) MyProtocol03Prop]
249
MERGE_CATS_CLS-NEXT:               name {{.*}} baseClassMethod
250
MERGE_CATS_CLS-NEXT:              types {{.*}} v16@0:8
251
MERGE_CATS_CLS-NEXT:                imp +[MyBaseClass baseClassMethod]
252
MERGE_CATS_CLS-NEXT:             baseProtocols {{.*}}
253
MERGE_CATS_CLS-NEXT:                       count 3
254
MERGE_CATS_CLS-NEXT:               list[0] {{.*}} (struct protocol_t *)
255
MERGE_CATS_CLS-NEXT:                   isa 0x0
256
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol02
257
MERGE_CATS_CLS-NEXT:             protocols 0x0
258
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
259
MERGE_CATS_CLS-NEXT:                entsize 24
260
MERGE_CATS_CLS-NEXT:                  count 2
261
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol02Method
262
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
263
MERGE_CATS_CLS-NEXT:                    imp 0x0
264
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol02Prop
265
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
266
MERGE_CATS_CLS-NEXT:                    imp 0x0
267
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
268
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
269
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
270
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
271
MERGE_CATS_CLS-NEXT:               list[1] {{.*}} (struct protocol_t *)
272
MERGE_CATS_CLS-NEXT:                   isa 0x0
273
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol03
274
MERGE_CATS_CLS-NEXT:             protocols 0x0
275
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
276
MERGE_CATS_CLS-NEXT:                entsize 24
277
MERGE_CATS_CLS-NEXT:                  count 2
278
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol03Method
279
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
280
MERGE_CATS_CLS-NEXT:                    imp 0x0
281
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol03Prop
282
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
283
MERGE_CATS_CLS-NEXT:                    imp 0x0
284
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
285
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
286
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
287
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
288
MERGE_CATS_CLS-NEXT:               list[2] {{.*}} (struct protocol_t *)
289
MERGE_CATS_CLS-NEXT:                   isa 0x0
290
MERGE_CATS_CLS-NEXT:                  name {{.*}} MyProtocol01
291
MERGE_CATS_CLS-NEXT:             protocols 0x0
292
MERGE_CATS_CLS-NEXT:           instanceMethods {{.*}} (struct method_list_t *)
293
MERGE_CATS_CLS-NEXT:                entsize 24
294
MERGE_CATS_CLS-NEXT:                  count 3
295
MERGE_CATS_CLS-NEXT:                   name {{.*}} myProtocol01Method
296
MERGE_CATS_CLS-NEXT:                  types {{.*}} v16@0:8
297
MERGE_CATS_CLS-NEXT:                    imp 0x0
298
MERGE_CATS_CLS-NEXT:                   name {{.*}} MyProtocol01Prop
299
MERGE_CATS_CLS-NEXT:                  types {{.*}} i16@0:8
300
MERGE_CATS_CLS-NEXT:                    imp 0x0
301
MERGE_CATS_CLS-NEXT:                   name {{.*}} setMyProtocol01Prop:
302
MERGE_CATS_CLS-NEXT:                  types {{.*}} v20@0:8i16
303
MERGE_CATS_CLS-NEXT:                    imp 0x0
304
MERGE_CATS_CLS-NEXT:              classMethods 0x0 (struct method_list_t *)
305
MERGE_CATS_CLS-NEXT:       optionalInstanceMethods 0x0
306
MERGE_CATS_CLS-NEXT:          optionalClassMethods 0x0
307
MERGE_CATS_CLS-NEXT:            instanceProperties {{.*}}
308
MERGE_CATS_CLS-NEXT:                     ivars 0x0
309
MERGE_CATS_CLS-NEXT:            weakIvarLayout 0x0
310
MERGE_CATS_CLS-NEXT:            baseProperties 0x0
311
MERGE_CATS_CLS:        __OBJC_$_CATEGORY_MyBaseClass_$_Category04
312

313

314
#--- a64_file1.s
315

316
## @protocol MyProtocol01
317
## - (void)myProtocol01Method;
318
## @property (nonatomic) int MyProtocol01Prop;
319
## @end
320
##
321
## __attribute__((objc_root_class))
322
## @interface MyBaseClass<MyProtocol01>
323
## - (void)baseInstanceMethod;
324
## - (void)myProtocol01Method;
325
## + (void)baseClassMethod;
326
## @end
327
##
328
## @implementation MyBaseClass
329
## @synthesize MyProtocol01Prop;
330
## - (void)baseInstanceMethod {}
331
## - (void)myProtocol01Method {}
332
## + (void)baseClassMethod {}
333
## @end
334
##
335
## void *_objc_empty_cache;
336

337
	.section	__TEXT,__text,regular,pure_instructions
338
	.p2align	2                               ; -- Begin function -[MyBaseClass baseInstanceMethod]
339
"-[MyBaseClass baseInstanceMethod]":    ; @"\01-[MyBaseClass baseInstanceMethod]"
340
	.cfi_startproc
341
; %bb.0:                                ; %entry
342
	ret
343
	.cfi_endproc
344
                                        ; -- End function
345
	.p2align	2                               ; -- Begin function -[MyBaseClass myProtocol01Method]
346
"-[MyBaseClass myProtocol01Method]":    ; @"\01-[MyBaseClass myProtocol01Method]"
347
	.cfi_startproc
348
; %bb.0:                                ; %entry
349
	ret
350
	.cfi_endproc
351
                                        ; -- End function
352
	.p2align	2                               ; -- Begin function +[MyBaseClass baseClassMethod]
353
"+[MyBaseClass baseClassMethod]":       ; @"\01+[MyBaseClass baseClassMethod]"
354
	.cfi_startproc
355
; %bb.0:                                ; %entry
356
	ret
357
	.cfi_endproc
358
                                        ; -- End function
359
	.p2align	2                               ; -- Begin function -[MyBaseClass MyProtocol01Prop]
360
"-[MyBaseClass MyProtocol01Prop]":      ; @"\01-[MyBaseClass MyProtocol01Prop]"
361
	.cfi_startproc
362
; %bb.0:                                ; %entry
363
Lloh0:
364
	adrp	x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
365
Lloh1:
366
	ldrsw	x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]
367
	ldr	w0, [x0, x8]
368
	ret
369
	.loh AdrpLdr	Lloh0, Lloh1
370
	.cfi_endproc
371
                                        ; -- End function
372
	.p2align	2                               ; -- Begin function -[MyBaseClass setMyProtocol01Prop:]
373
"-[MyBaseClass setMyProtocol01Prop:]":  ; @"\01-[MyBaseClass setMyProtocol01Prop:]"
374
	.cfi_startproc
375
; %bb.0:                                ; %entry
376
Lloh2:
377
	adrp	x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE
378
Lloh3:
379
	ldrsw	x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]
380
	str	w2, [x0, x8]
381
	ret
382
	.loh AdrpLdr	Lloh2, Lloh3
383
	.cfi_endproc
384
                                        ; -- End function
385
	.private_extern	_OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop ; @"OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop"
386
	.section	__DATA,__objc_ivar
387
	.globl	_OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
388
	.p2align	2, 0x0
389
_OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop:
390
	.long	0                               ; 0x0
391
	.section	__DATA,__objc_data
392
	.globl	_OBJC_CLASS_$_MyBaseClass       ; @"OBJC_CLASS_$_MyBaseClass"
393
	.p2align	3, 0x0
394
_OBJC_CLASS_$_MyBaseClass:
395
	.quad	_OBJC_METACLASS_$_MyBaseClass
396
	.quad	0
397
	.quad	__objc_empty_cache
398
	.quad	0
399
	.quad	__OBJC_CLASS_RO_$_MyBaseClass
400
	.globl	_OBJC_METACLASS_$_MyBaseClass   ; @"OBJC_METACLASS_$_MyBaseClass"
401
	.p2align	3, 0x0
402
_OBJC_METACLASS_$_MyBaseClass:
403
	.quad	_OBJC_METACLASS_$_MyBaseClass
404
	.quad	_OBJC_CLASS_$_MyBaseClass
405
	.quad	__objc_empty_cache
406
	.quad	0
407
	.quad	__OBJC_METACLASS_RO_$_MyBaseClass
408
	.section	__TEXT,__objc_classname,cstring_literals
409
l_OBJC_CLASS_NAME_:                     ; @OBJC_CLASS_NAME_
410
	.asciz	"MyBaseClass"
411
	.section	__TEXT,__objc_methname,cstring_literals
412
l_OBJC_METH_VAR_NAME_:                  ; @OBJC_METH_VAR_NAME_
413
	.asciz	"baseClassMethod"
414
	.section	__TEXT,__objc_methtype,cstring_literals
415
l_OBJC_METH_VAR_TYPE_:                  ; @OBJC_METH_VAR_TYPE_
416
	.asciz	"v16@0:8"
417
	.section	__DATA,__objc_const
418
	.p2align	3, 0x0                          ; @"_OBJC_$_CLASS_METHODS_MyBaseClass"
419
__OBJC_$_CLASS_METHODS_MyBaseClass:
420
	.long	24                              ; 0x18
421
	.long	1                               ; 0x1
422
	.quad	l_OBJC_METH_VAR_NAME_
423
	.quad	l_OBJC_METH_VAR_TYPE_
424
	.quad	"+[MyBaseClass baseClassMethod]"
425
	.section	__TEXT,__objc_classname,cstring_literals
426
l_OBJC_CLASS_NAME_.1:                   ; @OBJC_CLASS_NAME_.1
427
	.asciz	"MyProtocol01"
428
	.section	__TEXT,__objc_methname,cstring_literals
429
l_OBJC_METH_VAR_NAME_.2:                ; @OBJC_METH_VAR_NAME_.2
430
	.asciz	"myProtocol01Method"
431
l_OBJC_METH_VAR_NAME_.3:                ; @OBJC_METH_VAR_NAME_.3
432
	.asciz	"MyProtocol01Prop"
433
	.section	__TEXT,__objc_methtype,cstring_literals
434
l_OBJC_METH_VAR_TYPE_.4:                ; @OBJC_METH_VAR_TYPE_.4
435
	.asciz	"i16@0:8"
436
	.section	__TEXT,__objc_methname,cstring_literals
437
l_OBJC_METH_VAR_NAME_.5:                ; @OBJC_METH_VAR_NAME_.5
438
	.asciz	"setMyProtocol01Prop:"
439
	.section	__TEXT,__objc_methtype,cstring_literals
440
l_OBJC_METH_VAR_TYPE_.6:                ; @OBJC_METH_VAR_TYPE_.6
441
	.asciz	"v20@0:8i16"
442
	.section	__DATA,__objc_const
443
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01"
444
__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01:
445
	.long	24                              ; 0x18
446
	.long	3                               ; 0x3
447
	.quad	l_OBJC_METH_VAR_NAME_.2
448
	.quad	l_OBJC_METH_VAR_TYPE_
449
	.quad	0
450
	.quad	l_OBJC_METH_VAR_NAME_.3
451
	.quad	l_OBJC_METH_VAR_TYPE_.4
452
	.quad	0
453
	.quad	l_OBJC_METH_VAR_NAME_.5
454
	.quad	l_OBJC_METH_VAR_TYPE_.6
455
	.quad	0
456
	.section	__TEXT,__objc_methname,cstring_literals
457
l_OBJC_PROP_NAME_ATTR_:                 ; @OBJC_PROP_NAME_ATTR_
458
	.asciz	"MyProtocol01Prop"
459
l_OBJC_PROP_NAME_ATTR_.7:               ; @OBJC_PROP_NAME_ATTR_.7
460
	.asciz	"Ti,N"
461
	.section	__DATA,__objc_const
462
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyProtocol01"
463
__OBJC_$_PROP_LIST_MyProtocol01:
464
	.long	16                              ; 0x10
465
	.long	1                               ; 0x1
466
	.quad	l_OBJC_PROP_NAME_ATTR_
467
	.quad	l_OBJC_PROP_NAME_ATTR_.7
468
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01"
469
__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01:
470
	.quad	l_OBJC_METH_VAR_TYPE_
471
	.quad	l_OBJC_METH_VAR_TYPE_.4
472
	.quad	l_OBJC_METH_VAR_TYPE_.6
473
	.private_extern	__OBJC_PROTOCOL_$_MyProtocol01 ; @"_OBJC_PROTOCOL_$_MyProtocol01"
474
	.section	__DATA,__data
475
	.globl	__OBJC_PROTOCOL_$_MyProtocol01
476
	.weak_definition	__OBJC_PROTOCOL_$_MyProtocol01
477
	.p2align	3, 0x0
478
__OBJC_PROTOCOL_$_MyProtocol01:
479
	.quad	0
480
	.quad	l_OBJC_CLASS_NAME_.1
481
	.quad	0
482
	.quad	__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01
483
	.quad	0
484
	.quad	0
485
	.quad	0
486
	.quad	__OBJC_$_PROP_LIST_MyProtocol01
487
	.long	96                              ; 0x60
488
	.long	0                               ; 0x0
489
	.quad	__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01
490
	.quad	0
491
	.quad	0
492
	.private_extern	__OBJC_LABEL_PROTOCOL_$_MyProtocol01 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol01"
493
	.section	__DATA,__objc_protolist,coalesced,no_dead_strip
494
	.globl	__OBJC_LABEL_PROTOCOL_$_MyProtocol01
495
	.weak_definition	__OBJC_LABEL_PROTOCOL_$_MyProtocol01
496
	.p2align	3, 0x0
497
__OBJC_LABEL_PROTOCOL_$_MyProtocol01:
498
	.quad	__OBJC_PROTOCOL_$_MyProtocol01
499
	.section	__DATA,__objc_const
500
	.p2align	3, 0x0                          ; @"_OBJC_CLASS_PROTOCOLS_$_MyBaseClass"
501
__OBJC_CLASS_PROTOCOLS_$_MyBaseClass:
502
	.quad	1                               ; 0x1
503
	.quad	__OBJC_PROTOCOL_$_MyProtocol01
504
	.quad	0
505
	.p2align	3, 0x0                          ; @"_OBJC_METACLASS_RO_$_MyBaseClass"
506
__OBJC_METACLASS_RO_$_MyBaseClass:
507
	.long	3                               ; 0x3
508
	.long	40                              ; 0x28
509
	.long	40                              ; 0x28
510
	.space	4
511
	.quad	0
512
	.quad	l_OBJC_CLASS_NAME_
513
	.quad	__OBJC_$_CLASS_METHODS_MyBaseClass
514
	.quad	__OBJC_CLASS_PROTOCOLS_$_MyBaseClass
515
	.quad	0
516
	.quad	0
517
	.quad	0
518
	.section	__TEXT,__objc_methname,cstring_literals
519
l_OBJC_METH_VAR_NAME_.8:                ; @OBJC_METH_VAR_NAME_.8
520
	.asciz	"baseInstanceMethod"
521
	.section	__DATA,__objc_const
522
	.p2align	3, 0x0                          ; @"_OBJC_$_INSTANCE_METHODS_MyBaseClass"
523
__OBJC_$_INSTANCE_METHODS_MyBaseClass:
524
	.long	24                              ; 0x18
525
	.long	4                               ; 0x4
526
	.quad	l_OBJC_METH_VAR_NAME_.8
527
	.quad	l_OBJC_METH_VAR_TYPE_
528
	.quad	"-[MyBaseClass baseInstanceMethod]"
529
	.quad	l_OBJC_METH_VAR_NAME_.2
530
	.quad	l_OBJC_METH_VAR_TYPE_
531
	.quad	"-[MyBaseClass myProtocol01Method]"
532
	.quad	l_OBJC_METH_VAR_NAME_.3
533
	.quad	l_OBJC_METH_VAR_TYPE_.4
534
	.quad	"-[MyBaseClass MyProtocol01Prop]"
535
	.quad	l_OBJC_METH_VAR_NAME_.5
536
	.quad	l_OBJC_METH_VAR_TYPE_.6
537
	.quad	"-[MyBaseClass setMyProtocol01Prop:]"
538
	.section	__TEXT,__objc_methtype,cstring_literals
539
l_OBJC_METH_VAR_TYPE_.9:                ; @OBJC_METH_VAR_TYPE_.9
540
	.asciz	"i"
541
	.section	__DATA,__objc_const
542
	.p2align	3, 0x0                          ; @"_OBJC_$_INSTANCE_VARIABLES_MyBaseClass"
543
__OBJC_$_INSTANCE_VARIABLES_MyBaseClass:
544
	.long	32                              ; 0x20
545
	.long	1                               ; 0x1
546
	.quad	_OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop
547
	.quad	l_OBJC_METH_VAR_NAME_.3
548
	.quad	l_OBJC_METH_VAR_TYPE_.9
549
	.long	2                               ; 0x2
550
	.long	4                               ; 0x4
551
	.section	__TEXT,__objc_methname,cstring_literals
552
l_OBJC_PROP_NAME_ATTR_.10:              ; @OBJC_PROP_NAME_ATTR_.10
553
	.asciz	"Ti,N,VMyProtocol01Prop"
554
	.section	__DATA,__objc_const
555
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyBaseClass"
556
__OBJC_$_PROP_LIST_MyBaseClass:
557
	.long	16                              ; 0x10
558
	.long	1                               ; 0x1
559
	.quad	l_OBJC_PROP_NAME_ATTR_
560
	.quad	l_OBJC_PROP_NAME_ATTR_.10
561
	.p2align	3, 0x0                          ; @"_OBJC_CLASS_RO_$_MyBaseClass"
562
__OBJC_CLASS_RO_$_MyBaseClass:
563
	.long	2                               ; 0x2
564
	.long	0                               ; 0x0
565
	.long	4                               ; 0x4
566
	.space	4
567
	.quad	0
568
	.quad	l_OBJC_CLASS_NAME_
569
	.quad	__OBJC_$_INSTANCE_METHODS_MyBaseClass
570
	.quad	__OBJC_CLASS_PROTOCOLS_$_MyBaseClass
571
	.quad	__OBJC_$_INSTANCE_VARIABLES_MyBaseClass
572
	.quad	0
573
	.quad	__OBJC_$_PROP_LIST_MyBaseClass
574
	.globl	__objc_empty_cache              ; @_objc_empty_cache
575
.zerofill __DATA,__common,__objc_empty_cache,8,3
576
	.section	__DATA,__objc_classlist,regular,no_dead_strip
577
	.p2align	3, 0x0                          ; @"OBJC_LABEL_CLASS_$"
578
l_OBJC_LABEL_CLASS_$:
579
	.quad	_OBJC_CLASS_$_MyBaseClass
580
	.no_dead_strip	__OBJC_LABEL_PROTOCOL_$_MyProtocol01
581
	.no_dead_strip	__OBJC_PROTOCOL_$_MyProtocol01
582
	.section	__DATA,__objc_imageinfo,regular,no_dead_strip
583
L_OBJC_IMAGE_INFO:
584
	.long	0
585
	.long	96
586
.subsections_via_symbols
587

588

589
#--- a64_file2.s
590

591
## @protocol MyProtocol01
592
## - (void)myProtocol01Method;
593
## @end
594
##
595
## @protocol MyProtocol02
596
## - (void)myProtocol02Method;
597
## @property(readonly) int MyProtocol02Prop;
598
## @end
599
##
600
## @protocol MyProtocol03
601
## - (void)myProtocol03Method;
602
## @property(readonly) int MyProtocol03Prop;
603
## @end
604
##
605
##
606
## __attribute__((objc_root_class))
607
## @interface MyBaseClass<MyProtocol01>
608
## - (void)baseInstanceMethod;
609
## - (void)myProtocol01Method;
610
## + (void)baseClassMethod;
611
## @end
612
##
613
##
614
##
615
## @interface MyBaseClass(Category02)<MyProtocol02>
616
## - (void)class02InstanceMethod;
617
## - (void)myProtocol02Method;
618
## + (void)class02ClassMethod;
619
## + (int)MyProtocol02Prop;
620
## @end
621
##
622
## @implementation MyBaseClass(Category02)
623
## - (void)class02InstanceMethod {}
624
## - (void)myProtocol02Method {}
625
## + (void)class02ClassMethod {}
626
## + (int)MyProtocol02Prop { return 0;}
627
## @dynamic MyProtocol02Prop;
628
## @end
629
##
630
## @interface MyBaseClass(Category03)<MyProtocol03>
631
## - (void)class03InstanceMethod;
632
## - (void)myProtocol03Method;
633
## + (void)class03ClassMethod;
634
## + (int)MyProtocol03Prop;
635
## @end
636
##
637
## @implementation MyBaseClass(Category03)
638
## - (void)class03InstanceMethod {}
639
## - (void)myProtocol03Method {}
640
## + (void)class03ClassMethod {}
641
## + (int)MyProtocol03Prop { return 0;}
642
## @dynamic MyProtocol03Prop;
643
## @end
644
##
645
## // This category shouldn't be merged
646
## @interface MyBaseClass(Category04)
647
## + (void)load;
648
## @end
649
##
650
## @implementation MyBaseClass(Category04)
651
## + (void)load {}
652
## @end
653
##
654
## int main() {
655
##     return 0;
656
## }
657

658

659
	.section	__TEXT,__text,regular,pure_instructions
660
	.p2align	2                               ; -- Begin function -[MyBaseClass(Category02) class02InstanceMethod]
661
"-[MyBaseClass(Category02) class02InstanceMethod]": ; @"\01-[MyBaseClass(Category02) class02InstanceMethod]"
662
	.cfi_startproc
663
; %bb.0:                                ; %entry
664
	ret
665
	.cfi_endproc
666
                                        ; -- End function
667
	.p2align	2                               ; -- Begin function -[MyBaseClass(Category02) myProtocol02Method]
668
"-[MyBaseClass(Category02) myProtocol02Method]": ; @"\01-[MyBaseClass(Category02) myProtocol02Method]"
669
	.cfi_startproc
670
; %bb.0:                                ; %entry
671
	ret
672
	.cfi_endproc
673
                                        ; -- End function
674
	.p2align	2                               ; -- Begin function +[MyBaseClass(Category02) class02ClassMethod]
675
"+[MyBaseClass(Category02) class02ClassMethod]": ; @"\01+[MyBaseClass(Category02) class02ClassMethod]"
676
	.cfi_startproc
677
; %bb.0:                                ; %entry
678
	ret
679
	.cfi_endproc
680
                                        ; -- End function
681
	.p2align	2                               ; -- Begin function +[MyBaseClass(Category02) MyProtocol02Prop]
682
"+[MyBaseClass(Category02) MyProtocol02Prop]": ; @"\01+[MyBaseClass(Category02) MyProtocol02Prop]"
683
	.cfi_startproc
684
; %bb.0:                                ; %entry
685
	b	_OUTLINED_FUNCTION_0
686
	.cfi_endproc
687
                                        ; -- End function
688
	.p2align	2                               ; -- Begin function -[MyBaseClass(Category03) class03InstanceMethod]
689
"-[MyBaseClass(Category03) class03InstanceMethod]": ; @"\01-[MyBaseClass(Category03) class03InstanceMethod]"
690
	.cfi_startproc
691
; %bb.0:                                ; %entry
692
	ret
693
	.cfi_endproc
694
                                        ; -- End function
695
	.p2align	2                               ; -- Begin function -[MyBaseClass(Category03) myProtocol03Method]
696
"-[MyBaseClass(Category03) myProtocol03Method]": ; @"\01-[MyBaseClass(Category03) myProtocol03Method]"
697
	.cfi_startproc
698
; %bb.0:                                ; %entry
699
	ret
700
	.cfi_endproc
701
                                        ; -- End function
702
	.p2align	2                               ; -- Begin function +[MyBaseClass(Category03) class03ClassMethod]
703
"+[MyBaseClass(Category03) class03ClassMethod]": ; @"\01+[MyBaseClass(Category03) class03ClassMethod]"
704
	.cfi_startproc
705
; %bb.0:                                ; %entry
706
	ret
707
	.cfi_endproc
708
                                        ; -- End function
709
	.p2align	2                               ; -- Begin function +[MyBaseClass(Category03) MyProtocol03Prop]
710
"+[MyBaseClass(Category03) MyProtocol03Prop]": ; @"\01+[MyBaseClass(Category03) MyProtocol03Prop]"
711
	.cfi_startproc
712
; %bb.0:                                ; %entry
713
	b	_OUTLINED_FUNCTION_0
714
	.cfi_endproc
715
                                        ; -- End function
716
	.p2align	2
717
"+[MyBaseClass(Category04) load]":
718
	.cfi_startproc
719
; %bb.0:
720
	ret
721
	.cfi_endproc
722
	.globl	_main                           ; -- Begin function main
723
	.p2align	2
724
_main:                                  ; @main
725
	.cfi_startproc
726
; %bb.0:                                ; %entry
727
	b	_OUTLINED_FUNCTION_0
728
	.cfi_endproc
729
                                        ; -- End function
730
	.p2align	2                               ; -- Begin function OUTLINED_FUNCTION_0
731
_OUTLINED_FUNCTION_0:                   ; @OUTLINED_FUNCTION_0 Tail Call
732
	.cfi_startproc
733
; %bb.0:
734
	mov	w0, #0
735
	ret
736
	.cfi_endproc
737
                                        ; -- End function
738
	.section	__TEXT,__objc_classname,cstring_literals
739
l_OBJC_CLASS_NAME_:                     ; @OBJC_CLASS_NAME_
740
	.asciz	"Category02"
741
	.section	__TEXT,__objc_methname,cstring_literals
742
l_OBJC_METH_VAR_NAME_:                  ; @OBJC_METH_VAR_NAME_
743
	.asciz	"class02InstanceMethod"
744
	.section	__TEXT,__objc_methtype,cstring_literals
745
l_OBJC_METH_VAR_TYPE_:                  ; @OBJC_METH_VAR_TYPE_
746
	.asciz	"v16@0:8"
747
	.section	__TEXT,__objc_methname,cstring_literals
748
l_OBJC_METH_VAR_NAME_.1:                ; @OBJC_METH_VAR_NAME_.1
749
	.asciz	"myProtocol02Method"
750
	.section	__DATA,__objc_const
751
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02"
752
__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02:
753
	.long	24                              ; 0x18
754
	.long	2                               ; 0x2
755
	.quad	l_OBJC_METH_VAR_NAME_
756
	.quad	l_OBJC_METH_VAR_TYPE_
757
	.quad	"-[MyBaseClass(Category02) class02InstanceMethod]"
758
	.quad	l_OBJC_METH_VAR_NAME_.1
759
	.quad	l_OBJC_METH_VAR_TYPE_
760
	.quad	"-[MyBaseClass(Category02) myProtocol02Method]"
761
	.section	__TEXT,__objc_methname,cstring_literals
762
l_OBJC_METH_VAR_NAME_.2:                ; @OBJC_METH_VAR_NAME_.2
763
	.asciz	"class02ClassMethod"
764
l_OBJC_METH_VAR_NAME_.3:                ; @OBJC_METH_VAR_NAME_.3
765
	.asciz	"MyProtocol02Prop"
766
	.section	__TEXT,__objc_methtype,cstring_literals
767
l_OBJC_METH_VAR_TYPE_.4:                ; @OBJC_METH_VAR_TYPE_.4
768
	.asciz	"i16@0:8"
769
	.section	__DATA,__objc_const
770
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02"
771
__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02:
772
	.long	24                              ; 0x18
773
	.long	2                               ; 0x2
774
	.quad	l_OBJC_METH_VAR_NAME_.2
775
	.quad	l_OBJC_METH_VAR_TYPE_
776
	.quad	"+[MyBaseClass(Category02) class02ClassMethod]"
777
	.quad	l_OBJC_METH_VAR_NAME_.3
778
	.quad	l_OBJC_METH_VAR_TYPE_.4
779
	.quad	"+[MyBaseClass(Category02) MyProtocol02Prop]"
780
	.section	__TEXT,__objc_classname,cstring_literals
781
l_OBJC_CLASS_NAME_.5:                   ; @OBJC_CLASS_NAME_.5
782
	.asciz	"MyProtocol02"
783
	.section	__DATA,__objc_const
784
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02"
785
__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02:
786
	.long	24                              ; 0x18
787
	.long	2                               ; 0x2
788
	.quad	l_OBJC_METH_VAR_NAME_.1
789
	.quad	l_OBJC_METH_VAR_TYPE_
790
	.quad	0
791
	.quad	l_OBJC_METH_VAR_NAME_.3
792
	.quad	l_OBJC_METH_VAR_TYPE_.4
793
	.quad	0
794
	.section	__TEXT,__objc_methname,cstring_literals
795
l_OBJC_PROP_NAME_ATTR_:                 ; @OBJC_PROP_NAME_ATTR_
796
	.asciz	"MyProtocol02Prop"
797
l_OBJC_PROP_NAME_ATTR_.6:               ; @OBJC_PROP_NAME_ATTR_.6
798
	.asciz	"Ti,R"
799
	.section	__DATA,__objc_const
800
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyProtocol02"
801
__OBJC_$_PROP_LIST_MyProtocol02:
802
	.long	16                              ; 0x10
803
	.long	1                               ; 0x1
804
	.quad	l_OBJC_PROP_NAME_ATTR_
805
	.quad	l_OBJC_PROP_NAME_ATTR_.6
806
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02"
807
__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02:
808
	.quad	l_OBJC_METH_VAR_TYPE_
809
	.quad	l_OBJC_METH_VAR_TYPE_.4
810
	.private_extern	__OBJC_PROTOCOL_$_MyProtocol02 ; @"_OBJC_PROTOCOL_$_MyProtocol02"
811
	.section	__DATA,__data
812
	.globl	__OBJC_PROTOCOL_$_MyProtocol02
813
	.weak_definition	__OBJC_PROTOCOL_$_MyProtocol02
814
	.p2align	3, 0x0
815
__OBJC_PROTOCOL_$_MyProtocol02:
816
	.quad	0
817
	.quad	l_OBJC_CLASS_NAME_.5
818
	.quad	0
819
	.quad	__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02
820
	.quad	0
821
	.quad	0
822
	.quad	0
823
	.quad	__OBJC_$_PROP_LIST_MyProtocol02
824
	.long	96                              ; 0x60
825
	.long	0                               ; 0x0
826
	.quad	__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02
827
	.quad	0
828
	.quad	0
829
	.private_extern	__OBJC_LABEL_PROTOCOL_$_MyProtocol02 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol02"
830
	.section	__DATA,__objc_protolist,coalesced,no_dead_strip
831
	.globl	__OBJC_LABEL_PROTOCOL_$_MyProtocol02
832
	.weak_definition	__OBJC_LABEL_PROTOCOL_$_MyProtocol02
833
	.p2align	3, 0x0
834
__OBJC_LABEL_PROTOCOL_$_MyProtocol02:
835
	.quad	__OBJC_PROTOCOL_$_MyProtocol02
836
	.section	__DATA,__objc_const
837
	.p2align	3, 0x0                          ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02"
838
__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02:
839
	.quad	1                               ; 0x1
840
	.quad	__OBJC_PROTOCOL_$_MyProtocol02
841
	.quad	0
842
	.section	__TEXT,__objc_methname,cstring_literals
843
l_OBJC_PROP_NAME_ATTR_.7:               ; @OBJC_PROP_NAME_ATTR_.7
844
	.asciz	"Ti,R,D"
845
	.section	__DATA,__objc_const
846
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category02"
847
__OBJC_$_PROP_LIST_MyBaseClass_$_Category02:
848
	.long	16                              ; 0x10
849
	.long	1                               ; 0x1
850
	.quad	l_OBJC_PROP_NAME_ATTR_
851
	.quad	l_OBJC_PROP_NAME_ATTR_.7
852
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category02"
853
__OBJC_$_CATEGORY_MyBaseClass_$_Category02:
854
	.quad	l_OBJC_CLASS_NAME_
855
	.quad	_OBJC_CLASS_$_MyBaseClass
856
	.quad	__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02
857
	.quad	__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02
858
	.quad	__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02
859
	.quad	__OBJC_$_PROP_LIST_MyBaseClass_$_Category02
860
	.quad	0
861
	.long	64                              ; 0x40
862
	.space	4
863
	.section	__TEXT,__objc_classname,cstring_literals
864
l_OBJC_CLASS_NAME_.8:                   ; @OBJC_CLASS_NAME_.8
865
	.asciz	"Category03"
866
	.section	__TEXT,__objc_methname,cstring_literals
867
l_OBJC_METH_VAR_NAME_.9:                ; @OBJC_METH_VAR_NAME_.9
868
	.asciz	"class03InstanceMethod"
869
l_OBJC_METH_VAR_NAME_.10:               ; @OBJC_METH_VAR_NAME_.10
870
	.asciz	"myProtocol03Method"
871
	.section	__DATA,__objc_const
872
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03"
873
__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03:
874
	.long	24                              ; 0x18
875
	.long	2                               ; 0x2
876
	.quad	l_OBJC_METH_VAR_NAME_.9
877
	.quad	l_OBJC_METH_VAR_TYPE_
878
	.quad	"-[MyBaseClass(Category03) class03InstanceMethod]"
879
	.quad	l_OBJC_METH_VAR_NAME_.10
880
	.quad	l_OBJC_METH_VAR_TYPE_
881
	.quad	"-[MyBaseClass(Category03) myProtocol03Method]"
882
	.section	__TEXT,__objc_methname,cstring_literals
883
l_OBJC_METH_VAR_NAME_.11:               ; @OBJC_METH_VAR_NAME_.11
884
	.asciz	"class03ClassMethod"
885
l_OBJC_METH_VAR_NAME_.12:               ; @OBJC_METH_VAR_NAME_.12
886
	.asciz	"MyProtocol03Prop"
887
	.section	__DATA,__objc_const
888
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03"
889
__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03:
890
	.long	24                              ; 0x18
891
	.long	2                               ; 0x2
892
	.quad	l_OBJC_METH_VAR_NAME_.11
893
	.quad	l_OBJC_METH_VAR_TYPE_
894
	.quad	"+[MyBaseClass(Category03) class03ClassMethod]"
895
	.quad	l_OBJC_METH_VAR_NAME_.12
896
	.quad	l_OBJC_METH_VAR_TYPE_.4
897
	.quad	"+[MyBaseClass(Category03) MyProtocol03Prop]"
898
	.section	__TEXT,__objc_classname,cstring_literals
899
l_OBJC_CLASS_NAME_.13:                  ; @OBJC_CLASS_NAME_.13
900
	.asciz	"MyProtocol03"
901
	.section	__DATA,__objc_const
902
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03"
903
__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03:
904
	.long	24                              ; 0x18
905
	.long	2                               ; 0x2
906
	.quad	l_OBJC_METH_VAR_NAME_.10
907
	.quad	l_OBJC_METH_VAR_TYPE_
908
	.quad	0
909
	.quad	l_OBJC_METH_VAR_NAME_.12
910
	.quad	l_OBJC_METH_VAR_TYPE_.4
911
	.quad	0
912
	.section	__TEXT,__objc_methname,cstring_literals
913
l_OBJC_PROP_NAME_ATTR_.14:              ; @OBJC_PROP_NAME_ATTR_.14
914
	.asciz	"MyProtocol03Prop"
915
	.section	__DATA,__objc_const
916
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyProtocol03"
917
__OBJC_$_PROP_LIST_MyProtocol03:
918
	.long	16                              ; 0x10
919
	.long	1                               ; 0x1
920
	.quad	l_OBJC_PROP_NAME_ATTR_.14
921
	.quad	l_OBJC_PROP_NAME_ATTR_.6
922
	.p2align	3, 0x0                          ; @"_OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03"
923
__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03:
924
	.quad	l_OBJC_METH_VAR_TYPE_
925
	.quad	l_OBJC_METH_VAR_TYPE_.4
926
	.private_extern	__OBJC_PROTOCOL_$_MyProtocol03 ; @"_OBJC_PROTOCOL_$_MyProtocol03"
927
	.section	__DATA,__data
928
	.globl	__OBJC_PROTOCOL_$_MyProtocol03
929
	.weak_definition	__OBJC_PROTOCOL_$_MyProtocol03
930
	.p2align	3, 0x0
931
__OBJC_PROTOCOL_$_MyProtocol03:
932
	.quad	0
933
	.quad	l_OBJC_CLASS_NAME_.13
934
	.quad	0
935
	.quad	__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03
936
	.quad	0
937
	.quad	0
938
	.quad	0
939
	.quad	__OBJC_$_PROP_LIST_MyProtocol03
940
	.long	96                              ; 0x60
941
	.long	0                               ; 0x0
942
	.quad	__OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03
943
	.quad	0
944
	.quad	0
945
	.private_extern	__OBJC_LABEL_PROTOCOL_$_MyProtocol03 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol03"
946
	.section	__DATA,__objc_protolist,coalesced,no_dead_strip
947
	.globl	__OBJC_LABEL_PROTOCOL_$_MyProtocol03
948
	.weak_definition	__OBJC_LABEL_PROTOCOL_$_MyProtocol03
949
	.p2align	3, 0x0
950
__OBJC_LABEL_PROTOCOL_$_MyProtocol03:
951
	.quad	__OBJC_PROTOCOL_$_MyProtocol03
952
	.section	__DATA,__objc_const
953
	.p2align	3, 0x0                          ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03"
954
__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03:
955
	.quad	1                               ; 0x1
956
	.quad	__OBJC_PROTOCOL_$_MyProtocol03
957
	.quad	0
958
	.p2align	3, 0x0                          ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category03"
959
__OBJC_$_PROP_LIST_MyBaseClass_$_Category03:
960
	.long	16                              ; 0x10
961
	.long	1                               ; 0x1
962
	.quad	l_OBJC_PROP_NAME_ATTR_.14
963
	.quad	l_OBJC_PROP_NAME_ATTR_.7
964
	.p2align	3, 0x0                          ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category03"
965
__OBJC_$_CATEGORY_MyBaseClass_$_Category03:
966
	.quad	l_OBJC_CLASS_NAME_.8
967
	.quad	_OBJC_CLASS_$_MyBaseClass
968
	.quad	__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03
969
	.quad	__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03
970
	.quad	__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03
971
	.quad	__OBJC_$_PROP_LIST_MyBaseClass_$_Category03
972
	.quad	0
973
	.long	64                              ; 0x40
974
	.space	4
975
	.section	__TEXT,__objc_classname,cstring_literals
976
l_OBJC_CLASS_NAME_.15:
977
	.asciz	"Category04"
978
	.section	__TEXT,__objc_methname,cstring_literals
979
l_OBJC_METH_VAR_NAME_.16:
980
	.asciz	"load"
981
	.section	__DATA,__objc_const
982
	.p2align	3, 0x0
983
__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04:
984
	.long	24
985
	.long	1
986
	.quad	l_OBJC_METH_VAR_NAME_.16
987
	.quad	l_OBJC_METH_VAR_TYPE_
988
	.quad	"+[MyBaseClass(Category04) load]"
989
	.p2align	3, 0x0
990
__OBJC_$_CATEGORY_MyBaseClass_$_Category04:
991
	.quad	l_OBJC_CLASS_NAME_.15
992
	.quad	_OBJC_CLASS_$_MyBaseClass
993
	.quad	0
994
	.quad	__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04
995
	.quad	0
996
	.quad	0
997
	.quad	0
998
	.long	64
999
	.space	4
1000
	.section	__DATA,__objc_catlist,regular,no_dead_strip
1001
	.p2align	3, 0x0                          ; @"OBJC_LABEL_CATEGORY_$"
1002
l_OBJC_LABEL_CATEGORY_$:
1003
	.quad	__OBJC_$_CATEGORY_MyBaseClass_$_Category02
1004
	.quad	__OBJC_$_CATEGORY_MyBaseClass_$_Category03
1005
	.quad	__OBJC_$_CATEGORY_MyBaseClass_$_Category04
1006
	.section	__DATA,__objc_nlcatlist,regular,no_dead_strip
1007
	.p2align	3, 0x0
1008
l_OBJC_LABEL_NONLAZY_CATEGORY_$:
1009
	.quad	__OBJC_$_CATEGORY_MyBaseClass_$_Category04
1010

1011
	.no_dead_strip	__OBJC_LABEL_PROTOCOL_$_MyProtocol02
1012
	.no_dead_strip	__OBJC_LABEL_PROTOCOL_$_MyProtocol03
1013
	.no_dead_strip	__OBJC_PROTOCOL_$_MyProtocol02
1014
	.no_dead_strip	__OBJC_PROTOCOL_$_MyProtocol03
1015
	.section	__DATA,__objc_imageinfo,regular,no_dead_strip
1016
L_OBJC_IMAGE_INFO:
1017
	.long	0
1018
	.long	96
1019
.subsections_via_symbols
1020

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.