1024 lines · plain
1# REQUIRES: aarch642# RUN: rm -rf %t; split-file %s %t && cd %t3 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.s7# RUN: %lld -arch arm64 a64_file1.o -o a64_file1.dylib -dylib8 9# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o a64_file2.o a64_file2.s10# RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_no_merge.exe a64_file1.dylib a64_file2.o11# 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_merging12# 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_merging13# RUN: %lld -no_objc_relative_method_lists -arch arm64 -o a64_file2_merge.exe -objc_category_merging a64_file1.dylib a64_file2.o14 15# RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS16# RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge_v2.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS17# RUN: llvm-objdump --objc-meta-data --macho a64_file2_no_merge_v3.exe | FileCheck %s --check-prefixes=NO_MERGE_CATS18# RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge.exe | FileCheck %s --check-prefixes=MERGE_CATS19 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.o22# RUN: llvm-objdump --objc-meta-data --macho a64_file2_merge_into_class.exe | FileCheck %s --check-prefixes=MERGE_CATS_CLS23 24 25MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)26MERGE_CATS-NEXT: name {{.*}} Category02|Category0327MERGE_CATS: instanceMethods28MERGE_CATS-NEXT: entsize 2429MERGE_CATS-NEXT: count 430MERGE_CATS-NEXT: name {{.*}} class02InstanceMethod31MERGE_CATS-NEXT: types {{.*}} v16@0:832MERGE_CATS-NEXT: imp -[MyBaseClass(Category02) class02InstanceMethod]33MERGE_CATS-NEXT: name {{.*}} myProtocol02Method34MERGE_CATS-NEXT: types {{.*}} v16@0:835MERGE_CATS-NEXT: imp -[MyBaseClass(Category02) myProtocol02Method]36MERGE_CATS-NEXT: name {{.*}} class03InstanceMethod37MERGE_CATS-NEXT: types {{.*}} v16@0:838MERGE_CATS-NEXT: imp -[MyBaseClass(Category03) class03InstanceMethod]39MERGE_CATS-NEXT: name {{.*}} myProtocol03Method40MERGE_CATS-NEXT: types {{.*}} v16@0:841MERGE_CATS-NEXT: imp -[MyBaseClass(Category03) myProtocol03Method]42MERGE_CATS-NEXT: classMethods {{.*}}43MERGE_CATS-NEXT: entsize 2444MERGE_CATS-NEXT: count 445MERGE_CATS-NEXT: name {{.*}} class02ClassMethod46MERGE_CATS-NEXT: types {{.*}} v16@0:847MERGE_CATS-NEXT: imp +[MyBaseClass(Category02) class02ClassMethod]48MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop49MERGE_CATS-NEXT: types {{.*}} i16@0:850MERGE_CATS-NEXT: imp +[MyBaseClass(Category02) MyProtocol02Prop]51MERGE_CATS-NEXT: name {{.*}} class03ClassMethod52MERGE_CATS-NEXT: types {{.*}} v16@0:853MERGE_CATS-NEXT: imp +[MyBaseClass(Category03) class03ClassMethod]54MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop55MERGE_CATS-NEXT: types {{.*}} i16@0:856MERGE_CATS-NEXT: imp +[MyBaseClass(Category03) MyProtocol03Prop]57MERGE_CATS-NEXT: protocols58MERGE_CATS-NEXT: count 259MERGE_CATS-NEXT: list[0] {{.*}} (struct protocol_t *)60MERGE_CATS-NEXT: isa 0x061MERGE_CATS-NEXT: name {{.*}} MyProtocol0262MERGE_CATS-NEXT: protocols 0x063MERGE_CATS-NEXT: instanceMethods64MERGE_CATS-NEXT: entsize 2465MERGE_CATS-NEXT: count 266MERGE_CATS-NEXT: name {{.*}} myProtocol02Method67MERGE_CATS-NEXT: types {{.*}} v16@0:868MERGE_CATS-NEXT: imp 0x069MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop70MERGE_CATS-NEXT: types {{.*}} i16@0:871MERGE_CATS-NEXT: imp 0x072MERGE_CATS-NEXT: classMethods73MERGE_CATS-NEXT: optionalInstanceMethods 0x074MERGE_CATS-NEXT: optionalClassMethods 0x075MERGE_CATS-NEXT: instanceProperties {{.*}}76MERGE_CATS-NEXT: list[1] {{.*}}77MERGE_CATS-NEXT: isa 0x078MERGE_CATS-NEXT: name {{.*}} MyProtocol0379MERGE_CATS-NEXT: protocols 0x080MERGE_CATS-NEXT: instanceMethods81MERGE_CATS-NEXT: entsize 2482MERGE_CATS-NEXT: count 283MERGE_CATS-NEXT: name {{.*}} myProtocol03Method84MERGE_CATS-NEXT: types {{.*}} v16@0:885MERGE_CATS-NEXT: imp 0x086MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop87MERGE_CATS-NEXT: types {{.*}} i16@0:888MERGE_CATS-NEXT: imp 0x089MERGE_CATS-NEXT: classMethods 0x090MERGE_CATS-NEXT: optionalInstanceMethods 0x091MERGE_CATS-NEXT: optionalClassMethods 0x092MERGE_CATS-NEXT: instanceProperties {{.*}}93MERGE_CATS-NEXT: instanceProperties94MERGE_CATS-NEXT: entsize 1695MERGE_CATS-NEXT: count 296MERGE_CATS-NEXT: name {{.*}} MyProtocol02Prop97MERGE_CATS-NEXT: attributes {{.*}} Ti,R,D98MERGE_CATS-NEXT: name {{.*}} MyProtocol03Prop99MERGE_CATS-NEXT: attributes {{.*}} Ti,R,D100MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass_$_Category04101 102 103NO_MERGE_CATS-NOT: __OBJC_$_CATEGORY_MyBaseClass(Category02|Category03)104NO_MERGE_CATS: __OBJC_$_CATEGORY_MyBaseClass_$_Category02105NO_MERGE_CATS: instanceMethods106NO_MERGE_CATS-NEXT: 24107NO_MERGE_CATS-NEXT: 2108NO_MERGE_CATS: classMethods109NO_MERGE_CATS-NEXT: 24110NO_MERGE_CATS-NEXT: 2111 112 113MERGE_CATS_CLS: _OBJC_CLASS_$_MyBaseClass114MERGE_CATS_CLS-NEXT: isa {{.*}} _OBJC_METACLASS_$_MyBaseClass115MERGE_CATS_CLS-NEXT: superclass 0x0116MERGE_CATS_CLS-NEXT: cache {{.*}} __objc_empty_cache117MERGE_CATS_CLS-NEXT: vtable 0x0118MERGE_CATS_CLS-NEXT: data {{.*}} (struct class_ro_t *)119MERGE_CATS_CLS-NEXT: flags 0x2 RO_ROOT120MERGE_CATS_CLS-NEXT: instanceStart 0121MERGE_CATS_CLS-NEXT: instanceSize 4122MERGE_CATS_CLS-NEXT: reserved 0x0123MERGE_CATS_CLS-NEXT: ivarLayout 0x0124MERGE_CATS_CLS-NEXT: name {{.*}} MyBaseClass125MERGE_CATS_CLS-NEXT: baseMethods {{.*}} (struct method_list_t *)126MERGE_CATS_CLS-NEXT: entsize 24127MERGE_CATS_CLS-NEXT: count 8128MERGE_CATS_CLS-NEXT: name {{.*}} class02InstanceMethod129MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8130MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category02) class02InstanceMethod]131MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method132MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8133MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category02) myProtocol02Method]134MERGE_CATS_CLS-NEXT: name {{.*}} class03InstanceMethod135MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8136MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category03) class03InstanceMethod]137MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method138MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8139MERGE_CATS_CLS-NEXT: imp -[MyBaseClass(Category03) myProtocol03Method]140MERGE_CATS_CLS-NEXT: name {{.*}} baseInstanceMethod141MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8142MERGE_CATS_CLS-NEXT: imp -[MyBaseClass baseInstanceMethod]143MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method144MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8145MERGE_CATS_CLS-NEXT: imp -[MyBaseClass myProtocol01Method]146MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop147MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8148MERGE_CATS_CLS-NEXT: imp -[MyBaseClass MyProtocol01Prop]149MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:150MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16151MERGE_CATS_CLS-NEXT: imp -[MyBaseClass setMyProtocol01Prop:]152MERGE_CATS_CLS-NEXT: baseProtocols {{.*}}153MERGE_CATS_CLS-NEXT: count 3154MERGE_CATS_CLS-NEXT: list[0] {{.*}} (struct protocol_t *)155MERGE_CATS_CLS-NEXT: isa 0x0156MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02157MERGE_CATS_CLS-NEXT: protocols 0x0158MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)159MERGE_CATS_CLS-NEXT: entsize 24160MERGE_CATS_CLS-NEXT: count 2161MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method162MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8163MERGE_CATS_CLS-NEXT: imp 0x0164MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop165MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8166MERGE_CATS_CLS-NEXT: imp 0x0167MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)168MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0169MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0170MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}171MERGE_CATS_CLS-NEXT: list[1] {{.*}} (struct protocol_t *)172MERGE_CATS_CLS-NEXT: isa 0x0173MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03174MERGE_CATS_CLS-NEXT: protocols 0x0175MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)176MERGE_CATS_CLS-NEXT: entsize 24177MERGE_CATS_CLS-NEXT: count 2178MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method179MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8180MERGE_CATS_CLS-NEXT: imp 0x0181MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop182MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8183MERGE_CATS_CLS-NEXT: imp 0x0184MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)185MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0186MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0187MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}188MERGE_CATS_CLS-NEXT: list[2] {{.*}} (struct protocol_t *)189MERGE_CATS_CLS-NEXT: isa 0x0190MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01191MERGE_CATS_CLS-NEXT: protocols 0x0192MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)193MERGE_CATS_CLS-NEXT: entsize 24194MERGE_CATS_CLS-NEXT: count 3195MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method196MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8197MERGE_CATS_CLS-NEXT: imp 0x0198MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop199MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8200MERGE_CATS_CLS-NEXT: imp 0x0201MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:202MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16203MERGE_CATS_CLS-NEXT: imp 0x0204MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)205MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0206MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0207MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}208MERGE_CATS_CLS-NEXT: ivars {{.*}}209MERGE_CATS_CLS-NEXT: entsize 32210MERGE_CATS_CLS-NEXT: count 1211MERGE_CATS_CLS-NEXT: offset {{.*}} 0212MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop213MERGE_CATS_CLS-NEXT: type {{.*}} i214MERGE_CATS_CLS-NEXT: alignment 2215MERGE_CATS_CLS-NEXT: size 4216MERGE_CATS_CLS-NEXT: weakIvarLayout 0x0217MERGE_CATS_CLS-NEXT: baseProperties {{.*}}218MERGE_CATS_CLS-NEXT: entsize 16219MERGE_CATS_CLS-NEXT: count 3220MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop221MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,R,D222MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop223MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,R,D224MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop225MERGE_CATS_CLS-NEXT: attributes {{.*}} Ti,N,VMyProtocol01Prop226MERGE_CATS_CLS-NEXT: Meta Class227MERGE_CATS_CLS-NEXT: isa {{.*}} _OBJC_METACLASS_$_MyBaseClass228MERGE_CATS_CLS-NEXT: superclass {{.*}} _OBJC_CLASS_$_MyBaseClass229MERGE_CATS_CLS-NEXT: cache {{.*}} __objc_empty_cache230MERGE_CATS_CLS-NEXT: vtable 0x0231MERGE_CATS_CLS-NEXT: data {{.*}} (struct class_ro_t *)232MERGE_CATS_CLS-NEXT: flags 0x3 RO_META RO_ROOT233MERGE_CATS_CLS-NEXT: instanceStart 40234MERGE_CATS_CLS-NEXT: instanceSize 40235MERGE_CATS_CLS-NEXT: reserved 0x0236MERGE_CATS_CLS-NEXT: ivarLayout 0x0237MERGE_CATS_CLS-NEXT: name {{.*}} MyBaseClass238MERGE_CATS_CLS-NEXT: baseMethods {{.*}} (struct method_list_t *)239MERGE_CATS_CLS-NEXT: entsize 24240MERGE_CATS_CLS-NEXT: count 5241MERGE_CATS_CLS-NEXT: name {{.*}} class02ClassMethod242MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8243MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category02) class02ClassMethod]244MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop245MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8246MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category02) MyProtocol02Prop]247MERGE_CATS_CLS-NEXT: name {{.*}} class03ClassMethod248MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8249MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category03) class03ClassMethod]250MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop251MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8252MERGE_CATS_CLS-NEXT: imp +[MyBaseClass(Category03) MyProtocol03Prop]253MERGE_CATS_CLS-NEXT: name {{.*}} baseClassMethod254MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8255MERGE_CATS_CLS-NEXT: imp +[MyBaseClass baseClassMethod]256MERGE_CATS_CLS-NEXT: baseProtocols {{.*}}257MERGE_CATS_CLS-NEXT: count 3258MERGE_CATS_CLS-NEXT: list[0] {{.*}} (struct protocol_t *)259MERGE_CATS_CLS-NEXT: isa 0x0260MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02261MERGE_CATS_CLS-NEXT: protocols 0x0262MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)263MERGE_CATS_CLS-NEXT: entsize 24264MERGE_CATS_CLS-NEXT: count 2265MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol02Method266MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8267MERGE_CATS_CLS-NEXT: imp 0x0268MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol02Prop269MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8270MERGE_CATS_CLS-NEXT: imp 0x0271MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)272MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0273MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0274MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}275MERGE_CATS_CLS-NEXT: list[1] {{.*}} (struct protocol_t *)276MERGE_CATS_CLS-NEXT: isa 0x0277MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03278MERGE_CATS_CLS-NEXT: protocols 0x0279MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)280MERGE_CATS_CLS-NEXT: entsize 24281MERGE_CATS_CLS-NEXT: count 2282MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol03Method283MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8284MERGE_CATS_CLS-NEXT: imp 0x0285MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol03Prop286MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8287MERGE_CATS_CLS-NEXT: imp 0x0288MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)289MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0290MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0291MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}292MERGE_CATS_CLS-NEXT: list[2] {{.*}} (struct protocol_t *)293MERGE_CATS_CLS-NEXT: isa 0x0294MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01295MERGE_CATS_CLS-NEXT: protocols 0x0296MERGE_CATS_CLS-NEXT: instanceMethods {{.*}} (struct method_list_t *)297MERGE_CATS_CLS-NEXT: entsize 24298MERGE_CATS_CLS-NEXT: count 3299MERGE_CATS_CLS-NEXT: name {{.*}} myProtocol01Method300MERGE_CATS_CLS-NEXT: types {{.*}} v16@0:8301MERGE_CATS_CLS-NEXT: imp 0x0302MERGE_CATS_CLS-NEXT: name {{.*}} MyProtocol01Prop303MERGE_CATS_CLS-NEXT: types {{.*}} i16@0:8304MERGE_CATS_CLS-NEXT: imp 0x0305MERGE_CATS_CLS-NEXT: name {{.*}} setMyProtocol01Prop:306MERGE_CATS_CLS-NEXT: types {{.*}} v20@0:8i16307MERGE_CATS_CLS-NEXT: imp 0x0308MERGE_CATS_CLS-NEXT: classMethods 0x0 (struct method_list_t *)309MERGE_CATS_CLS-NEXT: optionalInstanceMethods 0x0310MERGE_CATS_CLS-NEXT: optionalClassMethods 0x0311MERGE_CATS_CLS-NEXT: instanceProperties {{.*}}312MERGE_CATS_CLS-NEXT: ivars 0x0313MERGE_CATS_CLS-NEXT: weakIvarLayout 0x0314MERGE_CATS_CLS-NEXT: baseProperties 0x0315MERGE_CATS_CLS: __OBJC_$_CATEGORY_MyBaseClass_$_Category04316 317 318#--- a64_file1.s319 320## @protocol MyProtocol01321## - (void)myProtocol01Method;322## @property (nonatomic) int MyProtocol01Prop;323## @end324##325## __attribute__((objc_root_class))326## @interface MyBaseClass<MyProtocol01>327## - (void)baseInstanceMethod;328## - (void)myProtocol01Method;329## + (void)baseClassMethod;330## @end331##332## @implementation MyBaseClass333## @synthesize MyProtocol01Prop;334## - (void)baseInstanceMethod {}335## - (void)myProtocol01Method {}336## + (void)baseClassMethod {}337## @end338##339## void *_objc_empty_cache;340 341 .section __TEXT,__text,regular,pure_instructions342 .p2align 2 ; -- Begin function -[MyBaseClass baseInstanceMethod]343"-[MyBaseClass baseInstanceMethod]": ; @"\01-[MyBaseClass baseInstanceMethod]"344 .cfi_startproc345; %bb.0: ; %entry346 ret347 .cfi_endproc348 ; -- End function349 .p2align 2 ; -- Begin function -[MyBaseClass myProtocol01Method]350"-[MyBaseClass myProtocol01Method]": ; @"\01-[MyBaseClass myProtocol01Method]"351 .cfi_startproc352; %bb.0: ; %entry353 ret354 .cfi_endproc355 ; -- End function356 .p2align 2 ; -- Begin function +[MyBaseClass baseClassMethod]357"+[MyBaseClass baseClassMethod]": ; @"\01+[MyBaseClass baseClassMethod]"358 .cfi_startproc359; %bb.0: ; %entry360 ret361 .cfi_endproc362 ; -- End function363 .p2align 2 ; -- Begin function -[MyBaseClass MyProtocol01Prop]364"-[MyBaseClass MyProtocol01Prop]": ; @"\01-[MyBaseClass MyProtocol01Prop]"365 .cfi_startproc366; %bb.0: ; %entry367Lloh0:368 adrp x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE369Lloh1:370 ldrsw x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]371 ldr w0, [x0, x8]372 ret373 .loh AdrpLdr Lloh0, Lloh1374 .cfi_endproc375 ; -- End function376 .p2align 2 ; -- Begin function -[MyBaseClass setMyProtocol01Prop:]377"-[MyBaseClass setMyProtocol01Prop:]": ; @"\01-[MyBaseClass setMyProtocol01Prop:]"378 .cfi_startproc379; %bb.0: ; %entry380Lloh2:381 adrp x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGE382Lloh3:383 ldrsw x8, [x8, _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop@PAGEOFF]384 str w2, [x0, x8]385 ret386 .loh AdrpLdr Lloh2, Lloh3387 .cfi_endproc388 ; -- End function389 .private_extern _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop ; @"OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop"390 .section __DATA,__objc_ivar391 .globl _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop392 .p2align 2, 0x0393_OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop:394 .long 0 ; 0x0395 .section __DATA,__objc_data396 .globl _OBJC_CLASS_$_MyBaseClass ; @"OBJC_CLASS_$_MyBaseClass"397 .p2align 3, 0x0398_OBJC_CLASS_$_MyBaseClass:399 .quad _OBJC_METACLASS_$_MyBaseClass400 .quad 0401 .quad __objc_empty_cache402 .quad 0403 .quad __OBJC_CLASS_RO_$_MyBaseClass404 .globl _OBJC_METACLASS_$_MyBaseClass ; @"OBJC_METACLASS_$_MyBaseClass"405 .p2align 3, 0x0406_OBJC_METACLASS_$_MyBaseClass:407 .quad _OBJC_METACLASS_$_MyBaseClass408 .quad _OBJC_CLASS_$_MyBaseClass409 .quad __objc_empty_cache410 .quad 0411 .quad __OBJC_METACLASS_RO_$_MyBaseClass412 .section __TEXT,__objc_classname,cstring_literals413l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_414 .asciz "MyBaseClass"415 .section __TEXT,__objc_methname,cstring_literals416l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_417 .asciz "baseClassMethod"418 .section __TEXT,__objc_methtype,cstring_literals419l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_420 .asciz "v16@0:8"421 .section __DATA,__objc_const422 .p2align 3, 0x0 ; @"_OBJC_$_CLASS_METHODS_MyBaseClass"423__OBJC_$_CLASS_METHODS_MyBaseClass:424 .long 24 ; 0x18425 .long 1 ; 0x1426 .quad l_OBJC_METH_VAR_NAME_427 .quad l_OBJC_METH_VAR_TYPE_428 .quad "+[MyBaseClass baseClassMethod]"429 .section __TEXT,__objc_classname,cstring_literals430l_OBJC_CLASS_NAME_.1: ; @OBJC_CLASS_NAME_.1431 .asciz "MyProtocol01"432 .section __TEXT,__objc_methname,cstring_literals433l_OBJC_METH_VAR_NAME_.2: ; @OBJC_METH_VAR_NAME_.2434 .asciz "myProtocol01Method"435l_OBJC_METH_VAR_NAME_.3: ; @OBJC_METH_VAR_NAME_.3436 .asciz "MyProtocol01Prop"437 .section __TEXT,__objc_methtype,cstring_literals438l_OBJC_METH_VAR_TYPE_.4: ; @OBJC_METH_VAR_TYPE_.4439 .asciz "i16@0:8"440 .section __TEXT,__objc_methname,cstring_literals441l_OBJC_METH_VAR_NAME_.5: ; @OBJC_METH_VAR_NAME_.5442 .asciz "setMyProtocol01Prop:"443 .section __TEXT,__objc_methtype,cstring_literals444l_OBJC_METH_VAR_TYPE_.6: ; @OBJC_METH_VAR_TYPE_.6445 .asciz "v20@0:8i16"446 .section __DATA,__objc_const447 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01"448__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01:449 .long 24 ; 0x18450 .long 3 ; 0x3451 .quad l_OBJC_METH_VAR_NAME_.2452 .quad l_OBJC_METH_VAR_TYPE_453 .quad 0454 .quad l_OBJC_METH_VAR_NAME_.3455 .quad l_OBJC_METH_VAR_TYPE_.4456 .quad 0457 .quad l_OBJC_METH_VAR_NAME_.5458 .quad l_OBJC_METH_VAR_TYPE_.6459 .quad 0460 .section __TEXT,__objc_methname,cstring_literals461l_OBJC_PROP_NAME_ATTR_: ; @OBJC_PROP_NAME_ATTR_462 .asciz "MyProtocol01Prop"463l_OBJC_PROP_NAME_ATTR_.7: ; @OBJC_PROP_NAME_ATTR_.7464 .asciz "Ti,N"465 .section __DATA,__objc_const466 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol01"467__OBJC_$_PROP_LIST_MyProtocol01:468 .long 16 ; 0x10469 .long 1 ; 0x1470 .quad l_OBJC_PROP_NAME_ATTR_471 .quad l_OBJC_PROP_NAME_ATTR_.7472 .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_.4476 .quad l_OBJC_METH_VAR_TYPE_.6477 .private_extern __OBJC_PROTOCOL_$_MyProtocol01 ; @"_OBJC_PROTOCOL_$_MyProtocol01"478 .section __DATA,__data479 .globl __OBJC_PROTOCOL_$_MyProtocol01480 .weak_definition __OBJC_PROTOCOL_$_MyProtocol01481 .p2align 3, 0x0482__OBJC_PROTOCOL_$_MyProtocol01:483 .quad 0484 .quad l_OBJC_CLASS_NAME_.1485 .quad 0486 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol01487 .quad 0488 .quad 0489 .quad 0490 .quad __OBJC_$_PROP_LIST_MyProtocol01491 .long 96 ; 0x60492 .long 0 ; 0x0493 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol01494 .quad 0495 .quad 0496 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol01 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol01"497 .section __DATA,__objc_protolist,coalesced,no_dead_strip498 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol01499 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol01500 .p2align 3, 0x0501__OBJC_LABEL_PROTOCOL_$_MyProtocol01:502 .quad __OBJC_PROTOCOL_$_MyProtocol01503 .section __DATA,__objc_const504 .p2align 3, 0x0 ; @"_OBJC_CLASS_PROTOCOLS_$_MyBaseClass"505__OBJC_CLASS_PROTOCOLS_$_MyBaseClass:506 .quad 1 ; 0x1507 .quad __OBJC_PROTOCOL_$_MyProtocol01508 .quad 0509 .p2align 3, 0x0 ; @"_OBJC_METACLASS_RO_$_MyBaseClass"510__OBJC_METACLASS_RO_$_MyBaseClass:511 .long 3 ; 0x3512 .long 40 ; 0x28513 .long 40 ; 0x28514 .space 4515 .quad 0516 .quad l_OBJC_CLASS_NAME_517 .quad __OBJC_$_CLASS_METHODS_MyBaseClass518 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass519 .quad 0520 .quad 0521 .quad 0522 .section __TEXT,__objc_methname,cstring_literals523l_OBJC_METH_VAR_NAME_.8: ; @OBJC_METH_VAR_NAME_.8524 .asciz "baseInstanceMethod"525 .section __DATA,__objc_const526 .p2align 3, 0x0 ; @"_OBJC_$_INSTANCE_METHODS_MyBaseClass"527__OBJC_$_INSTANCE_METHODS_MyBaseClass:528 .long 24 ; 0x18529 .long 4 ; 0x4530 .quad l_OBJC_METH_VAR_NAME_.8531 .quad l_OBJC_METH_VAR_TYPE_532 .quad "-[MyBaseClass baseInstanceMethod]"533 .quad l_OBJC_METH_VAR_NAME_.2534 .quad l_OBJC_METH_VAR_TYPE_535 .quad "-[MyBaseClass myProtocol01Method]"536 .quad l_OBJC_METH_VAR_NAME_.3537 .quad l_OBJC_METH_VAR_TYPE_.4538 .quad "-[MyBaseClass MyProtocol01Prop]"539 .quad l_OBJC_METH_VAR_NAME_.5540 .quad l_OBJC_METH_VAR_TYPE_.6541 .quad "-[MyBaseClass setMyProtocol01Prop:]"542 .section __TEXT,__objc_methtype,cstring_literals543l_OBJC_METH_VAR_TYPE_.9: ; @OBJC_METH_VAR_TYPE_.9544 .asciz "i"545 .section __DATA,__objc_const546 .p2align 3, 0x0 ; @"_OBJC_$_INSTANCE_VARIABLES_MyBaseClass"547__OBJC_$_INSTANCE_VARIABLES_MyBaseClass:548 .long 32 ; 0x20549 .long 1 ; 0x1550 .quad _OBJC_IVAR_$_MyBaseClass.MyProtocol01Prop551 .quad l_OBJC_METH_VAR_NAME_.3552 .quad l_OBJC_METH_VAR_TYPE_.9553 .long 2 ; 0x2554 .long 4 ; 0x4555 .section __TEXT,__objc_methname,cstring_literals556l_OBJC_PROP_NAME_ATTR_.10: ; @OBJC_PROP_NAME_ATTR_.10557 .asciz "Ti,N,VMyProtocol01Prop"558 .section __DATA,__objc_const559 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass"560__OBJC_$_PROP_LIST_MyBaseClass:561 .long 16 ; 0x10562 .long 1 ; 0x1563 .quad l_OBJC_PROP_NAME_ATTR_564 .quad l_OBJC_PROP_NAME_ATTR_.10565 .p2align 3, 0x0 ; @"_OBJC_CLASS_RO_$_MyBaseClass"566__OBJC_CLASS_RO_$_MyBaseClass:567 .long 2 ; 0x2568 .long 0 ; 0x0569 .long 4 ; 0x4570 .space 4571 .quad 0572 .quad l_OBJC_CLASS_NAME_573 .quad __OBJC_$_INSTANCE_METHODS_MyBaseClass574 .quad __OBJC_CLASS_PROTOCOLS_$_MyBaseClass575 .quad __OBJC_$_INSTANCE_VARIABLES_MyBaseClass576 .quad 0577 .quad __OBJC_$_PROP_LIST_MyBaseClass578 .globl __objc_empty_cache ; @_objc_empty_cache579.zerofill __DATA,__common,__objc_empty_cache,8,3580 .section __DATA,__objc_classlist,regular,no_dead_strip581 .p2align 3, 0x0 ; @"OBJC_LABEL_CLASS_$"582l_OBJC_LABEL_CLASS_$:583 .quad _OBJC_CLASS_$_MyBaseClass584 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol01585 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol01586 .section __DATA,__objc_imageinfo,regular,no_dead_strip587L_OBJC_IMAGE_INFO:588 .long 0589 .long 96590.subsections_via_symbols591 592 593#--- a64_file2.s594 595## @protocol MyProtocol01596## - (void)myProtocol01Method;597## @end598##599## @protocol MyProtocol02600## - (void)myProtocol02Method;601## @property(readonly) int MyProtocol02Prop;602## @end603##604## @protocol MyProtocol03605## - (void)myProtocol03Method;606## @property(readonly) int MyProtocol03Prop;607## @end608##609##610## __attribute__((objc_root_class))611## @interface MyBaseClass<MyProtocol01>612## - (void)baseInstanceMethod;613## - (void)myProtocol01Method;614## + (void)baseClassMethod;615## @end616##617##618##619## @interface MyBaseClass(Category02)<MyProtocol02>620## - (void)class02InstanceMethod;621## - (void)myProtocol02Method;622## + (void)class02ClassMethod;623## + (int)MyProtocol02Prop;624## @end625##626## @implementation MyBaseClass(Category02)627## - (void)class02InstanceMethod {}628## - (void)myProtocol02Method {}629## + (void)class02ClassMethod {}630## + (int)MyProtocol02Prop { return 0;}631## @dynamic MyProtocol02Prop;632## @end633##634## @interface MyBaseClass(Category03)<MyProtocol03>635## - (void)class03InstanceMethod;636## - (void)myProtocol03Method;637## + (void)class03ClassMethod;638## + (int)MyProtocol03Prop;639## @end640##641## @implementation MyBaseClass(Category03)642## - (void)class03InstanceMethod {}643## - (void)myProtocol03Method {}644## + (void)class03ClassMethod {}645## + (int)MyProtocol03Prop { return 0;}646## @dynamic MyProtocol03Prop;647## @end648##649## // This category shouldn't be merged650## @interface MyBaseClass(Category04)651## + (void)load;652## @end653##654## @implementation MyBaseClass(Category04)655## + (void)load {}656## @end657##658## int main() {659## return 0;660## }661 662 663 .section __TEXT,__text,regular,pure_instructions664 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) class02InstanceMethod]665"-[MyBaseClass(Category02) class02InstanceMethod]": ; @"\01-[MyBaseClass(Category02) class02InstanceMethod]"666 .cfi_startproc667; %bb.0: ; %entry668 ret669 .cfi_endproc670 ; -- End function671 .p2align 2 ; -- Begin function -[MyBaseClass(Category02) myProtocol02Method]672"-[MyBaseClass(Category02) myProtocol02Method]": ; @"\01-[MyBaseClass(Category02) myProtocol02Method]"673 .cfi_startproc674; %bb.0: ; %entry675 ret676 .cfi_endproc677 ; -- End function678 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) class02ClassMethod]679"+[MyBaseClass(Category02) class02ClassMethod]": ; @"\01+[MyBaseClass(Category02) class02ClassMethod]"680 .cfi_startproc681; %bb.0: ; %entry682 ret683 .cfi_endproc684 ; -- End function685 .p2align 2 ; -- Begin function +[MyBaseClass(Category02) MyProtocol02Prop]686"+[MyBaseClass(Category02) MyProtocol02Prop]": ; @"\01+[MyBaseClass(Category02) MyProtocol02Prop]"687 .cfi_startproc688; %bb.0: ; %entry689 b _OUTLINED_FUNCTION_0690 .cfi_endproc691 ; -- End function692 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) class03InstanceMethod]693"-[MyBaseClass(Category03) class03InstanceMethod]": ; @"\01-[MyBaseClass(Category03) class03InstanceMethod]"694 .cfi_startproc695; %bb.0: ; %entry696 ret697 .cfi_endproc698 ; -- End function699 .p2align 2 ; -- Begin function -[MyBaseClass(Category03) myProtocol03Method]700"-[MyBaseClass(Category03) myProtocol03Method]": ; @"\01-[MyBaseClass(Category03) myProtocol03Method]"701 .cfi_startproc702; %bb.0: ; %entry703 ret704 .cfi_endproc705 ; -- End function706 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) class03ClassMethod]707"+[MyBaseClass(Category03) class03ClassMethod]": ; @"\01+[MyBaseClass(Category03) class03ClassMethod]"708 .cfi_startproc709; %bb.0: ; %entry710 ret711 .cfi_endproc712 ; -- End function713 .p2align 2 ; -- Begin function +[MyBaseClass(Category03) MyProtocol03Prop]714"+[MyBaseClass(Category03) MyProtocol03Prop]": ; @"\01+[MyBaseClass(Category03) MyProtocol03Prop]"715 .cfi_startproc716; %bb.0: ; %entry717 b _OUTLINED_FUNCTION_0718 .cfi_endproc719 ; -- End function720 .p2align 2721"+[MyBaseClass(Category04) load]":722 .cfi_startproc723; %bb.0:724 ret725 .cfi_endproc726 .globl _main ; -- Begin function main727 .p2align 2728_main: ; @main729 .cfi_startproc730; %bb.0: ; %entry731 b _OUTLINED_FUNCTION_0732 .cfi_endproc733 ; -- End function734 .p2align 2 ; -- Begin function OUTLINED_FUNCTION_0735_OUTLINED_FUNCTION_0: ; @OUTLINED_FUNCTION_0 Tail Call736 .cfi_startproc737; %bb.0:738 mov w0, #0739 ret740 .cfi_endproc741 ; -- End function742 .section __TEXT,__objc_classname,cstring_literals743l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_744 .asciz "Category02"745 .section __TEXT,__objc_methname,cstring_literals746l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_747 .asciz "class02InstanceMethod"748 .section __TEXT,__objc_methtype,cstring_literals749l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_750 .asciz "v16@0:8"751 .section __TEXT,__objc_methname,cstring_literals752l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1753 .asciz "myProtocol02Method"754 .section __DATA,__objc_const755 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02"756__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02:757 .long 24 ; 0x18758 .long 2 ; 0x2759 .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_.1763 .quad l_OBJC_METH_VAR_TYPE_764 .quad "-[MyBaseClass(Category02) myProtocol02Method]"765 .section __TEXT,__objc_methname,cstring_literals766l_OBJC_METH_VAR_NAME_.2: ; @OBJC_METH_VAR_NAME_.2767 .asciz "class02ClassMethod"768l_OBJC_METH_VAR_NAME_.3: ; @OBJC_METH_VAR_NAME_.3769 .asciz "MyProtocol02Prop"770 .section __TEXT,__objc_methtype,cstring_literals771l_OBJC_METH_VAR_TYPE_.4: ; @OBJC_METH_VAR_TYPE_.4772 .asciz "i16@0:8"773 .section __DATA,__objc_const774 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02"775__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02:776 .long 24 ; 0x18777 .long 2 ; 0x2778 .quad l_OBJC_METH_VAR_NAME_.2779 .quad l_OBJC_METH_VAR_TYPE_780 .quad "+[MyBaseClass(Category02) class02ClassMethod]"781 .quad l_OBJC_METH_VAR_NAME_.3782 .quad l_OBJC_METH_VAR_TYPE_.4783 .quad "+[MyBaseClass(Category02) MyProtocol02Prop]"784 .section __TEXT,__objc_classname,cstring_literals785l_OBJC_CLASS_NAME_.5: ; @OBJC_CLASS_NAME_.5786 .asciz "MyProtocol02"787 .section __DATA,__objc_const788 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02"789__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02:790 .long 24 ; 0x18791 .long 2 ; 0x2792 .quad l_OBJC_METH_VAR_NAME_.1793 .quad l_OBJC_METH_VAR_TYPE_794 .quad 0795 .quad l_OBJC_METH_VAR_NAME_.3796 .quad l_OBJC_METH_VAR_TYPE_.4797 .quad 0798 .section __TEXT,__objc_methname,cstring_literals799l_OBJC_PROP_NAME_ATTR_: ; @OBJC_PROP_NAME_ATTR_800 .asciz "MyProtocol02Prop"801l_OBJC_PROP_NAME_ATTR_.6: ; @OBJC_PROP_NAME_ATTR_.6802 .asciz "Ti,R"803 .section __DATA,__objc_const804 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol02"805__OBJC_$_PROP_LIST_MyProtocol02:806 .long 16 ; 0x10807 .long 1 ; 0x1808 .quad l_OBJC_PROP_NAME_ATTR_809 .quad l_OBJC_PROP_NAME_ATTR_.6810 .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_.4814 .private_extern __OBJC_PROTOCOL_$_MyProtocol02 ; @"_OBJC_PROTOCOL_$_MyProtocol02"815 .section __DATA,__data816 .globl __OBJC_PROTOCOL_$_MyProtocol02817 .weak_definition __OBJC_PROTOCOL_$_MyProtocol02818 .p2align 3, 0x0819__OBJC_PROTOCOL_$_MyProtocol02:820 .quad 0821 .quad l_OBJC_CLASS_NAME_.5822 .quad 0823 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol02824 .quad 0825 .quad 0826 .quad 0827 .quad __OBJC_$_PROP_LIST_MyProtocol02828 .long 96 ; 0x60829 .long 0 ; 0x0830 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol02831 .quad 0832 .quad 0833 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol02 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol02"834 .section __DATA,__objc_protolist,coalesced,no_dead_strip835 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol02836 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol02837 .p2align 3, 0x0838__OBJC_LABEL_PROTOCOL_$_MyProtocol02:839 .quad __OBJC_PROTOCOL_$_MyProtocol02840 .section __DATA,__objc_const841 .p2align 3, 0x0 ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02"842__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02:843 .quad 1 ; 0x1844 .quad __OBJC_PROTOCOL_$_MyProtocol02845 .quad 0846 .section __TEXT,__objc_methname,cstring_literals847l_OBJC_PROP_NAME_ATTR_.7: ; @OBJC_PROP_NAME_ATTR_.7848 .asciz "Ti,R,D"849 .section __DATA,__objc_const850 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category02"851__OBJC_$_PROP_LIST_MyBaseClass_$_Category02:852 .long 16 ; 0x10853 .long 1 ; 0x1854 .quad l_OBJC_PROP_NAME_ATTR_855 .quad l_OBJC_PROP_NAME_ATTR_.7856 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category02"857__OBJC_$_CATEGORY_MyBaseClass_$_Category02:858 .quad l_OBJC_CLASS_NAME_859 .quad _OBJC_CLASS_$_MyBaseClass860 .quad __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category02861 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category02862 .quad __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category02863 .quad __OBJC_$_PROP_LIST_MyBaseClass_$_Category02864 .quad 0865 .long 64 ; 0x40866 .space 4867 .section __TEXT,__objc_classname,cstring_literals868l_OBJC_CLASS_NAME_.8: ; @OBJC_CLASS_NAME_.8869 .asciz "Category03"870 .section __TEXT,__objc_methname,cstring_literals871l_OBJC_METH_VAR_NAME_.9: ; @OBJC_METH_VAR_NAME_.9872 .asciz "class03InstanceMethod"873l_OBJC_METH_VAR_NAME_.10: ; @OBJC_METH_VAR_NAME_.10874 .asciz "myProtocol03Method"875 .section __DATA,__objc_const876 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03"877__OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03:878 .long 24 ; 0x18879 .long 2 ; 0x2880 .quad l_OBJC_METH_VAR_NAME_.9881 .quad l_OBJC_METH_VAR_TYPE_882 .quad "-[MyBaseClass(Category03) class03InstanceMethod]"883 .quad l_OBJC_METH_VAR_NAME_.10884 .quad l_OBJC_METH_VAR_TYPE_885 .quad "-[MyBaseClass(Category03) myProtocol03Method]"886 .section __TEXT,__objc_methname,cstring_literals887l_OBJC_METH_VAR_NAME_.11: ; @OBJC_METH_VAR_NAME_.11888 .asciz "class03ClassMethod"889l_OBJC_METH_VAR_NAME_.12: ; @OBJC_METH_VAR_NAME_.12890 .asciz "MyProtocol03Prop"891 .section __DATA,__objc_const892 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03"893__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03:894 .long 24 ; 0x18895 .long 2 ; 0x2896 .quad l_OBJC_METH_VAR_NAME_.11897 .quad l_OBJC_METH_VAR_TYPE_898 .quad "+[MyBaseClass(Category03) class03ClassMethod]"899 .quad l_OBJC_METH_VAR_NAME_.12900 .quad l_OBJC_METH_VAR_TYPE_.4901 .quad "+[MyBaseClass(Category03) MyProtocol03Prop]"902 .section __TEXT,__objc_classname,cstring_literals903l_OBJC_CLASS_NAME_.13: ; @OBJC_CLASS_NAME_.13904 .asciz "MyProtocol03"905 .section __DATA,__objc_const906 .p2align 3, 0x0 ; @"_OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03"907__OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03:908 .long 24 ; 0x18909 .long 2 ; 0x2910 .quad l_OBJC_METH_VAR_NAME_.10911 .quad l_OBJC_METH_VAR_TYPE_912 .quad 0913 .quad l_OBJC_METH_VAR_NAME_.12914 .quad l_OBJC_METH_VAR_TYPE_.4915 .quad 0916 .section __TEXT,__objc_methname,cstring_literals917l_OBJC_PROP_NAME_ATTR_.14: ; @OBJC_PROP_NAME_ATTR_.14918 .asciz "MyProtocol03Prop"919 .section __DATA,__objc_const920 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyProtocol03"921__OBJC_$_PROP_LIST_MyProtocol03:922 .long 16 ; 0x10923 .long 1 ; 0x1924 .quad l_OBJC_PROP_NAME_ATTR_.14925 .quad l_OBJC_PROP_NAME_ATTR_.6926 .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_.4930 .private_extern __OBJC_PROTOCOL_$_MyProtocol03 ; @"_OBJC_PROTOCOL_$_MyProtocol03"931 .section __DATA,__data932 .globl __OBJC_PROTOCOL_$_MyProtocol03933 .weak_definition __OBJC_PROTOCOL_$_MyProtocol03934 .p2align 3, 0x0935__OBJC_PROTOCOL_$_MyProtocol03:936 .quad 0937 .quad l_OBJC_CLASS_NAME_.13938 .quad 0939 .quad __OBJC_$_PROTOCOL_INSTANCE_METHODS_MyProtocol03940 .quad 0941 .quad 0942 .quad 0943 .quad __OBJC_$_PROP_LIST_MyProtocol03944 .long 96 ; 0x60945 .long 0 ; 0x0946 .quad __OBJC_$_PROTOCOL_METHOD_TYPES_MyProtocol03947 .quad 0948 .quad 0949 .private_extern __OBJC_LABEL_PROTOCOL_$_MyProtocol03 ; @"_OBJC_LABEL_PROTOCOL_$_MyProtocol03"950 .section __DATA,__objc_protolist,coalesced,no_dead_strip951 .globl __OBJC_LABEL_PROTOCOL_$_MyProtocol03952 .weak_definition __OBJC_LABEL_PROTOCOL_$_MyProtocol03953 .p2align 3, 0x0954__OBJC_LABEL_PROTOCOL_$_MyProtocol03:955 .quad __OBJC_PROTOCOL_$_MyProtocol03956 .section __DATA,__objc_const957 .p2align 3, 0x0 ; @"_OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03"958__OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03:959 .quad 1 ; 0x1960 .quad __OBJC_PROTOCOL_$_MyProtocol03961 .quad 0962 .p2align 3, 0x0 ; @"_OBJC_$_PROP_LIST_MyBaseClass_$_Category03"963__OBJC_$_PROP_LIST_MyBaseClass_$_Category03:964 .long 16 ; 0x10965 .long 1 ; 0x1966 .quad l_OBJC_PROP_NAME_ATTR_.14967 .quad l_OBJC_PROP_NAME_ATTR_.7968 .p2align 3, 0x0 ; @"_OBJC_$_CATEGORY_MyBaseClass_$_Category03"969__OBJC_$_CATEGORY_MyBaseClass_$_Category03:970 .quad l_OBJC_CLASS_NAME_.8971 .quad _OBJC_CLASS_$_MyBaseClass972 .quad __OBJC_$_CATEGORY_INSTANCE_METHODS_MyBaseClass_$_Category03973 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category03974 .quad __OBJC_CATEGORY_PROTOCOLS_$_MyBaseClass_$_Category03975 .quad __OBJC_$_PROP_LIST_MyBaseClass_$_Category03976 .quad 0977 .long 64 ; 0x40978 .space 4979 .section __TEXT,__objc_classname,cstring_literals980l_OBJC_CLASS_NAME_.15:981 .asciz "Category04"982 .section __TEXT,__objc_methname,cstring_literals983l_OBJC_METH_VAR_NAME_.16:984 .asciz "load"985 .section __DATA,__objc_const986 .p2align 3, 0x0987__OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04:988 .long 24989 .long 1990 .quad l_OBJC_METH_VAR_NAME_.16991 .quad l_OBJC_METH_VAR_TYPE_992 .quad "+[MyBaseClass(Category04) load]"993 .p2align 3, 0x0994__OBJC_$_CATEGORY_MyBaseClass_$_Category04:995 .quad l_OBJC_CLASS_NAME_.15996 .quad _OBJC_CLASS_$_MyBaseClass997 .quad 0998 .quad __OBJC_$_CATEGORY_CLASS_METHODS_MyBaseClass_$_Category04999 .quad 01000 .quad 01001 .quad 01002 .long 641003 .space 41004 .section __DATA,__objc_catlist,regular,no_dead_strip1005 .p2align 3, 0x0 ; @"OBJC_LABEL_CATEGORY_$"1006l_OBJC_LABEL_CATEGORY_$:1007 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category021008 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category031009 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category041010 .section __DATA,__objc_nlcatlist,regular,no_dead_strip1011 .p2align 3, 0x01012l_OBJC_LABEL_NONLAZY_CATEGORY_$:1013 .quad __OBJC_$_CATEGORY_MyBaseClass_$_Category041014 1015 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol021016 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_MyProtocol031017 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol021018 .no_dead_strip __OBJC_PROTOCOL_$_MyProtocol031019 .section __DATA,__objc_imageinfo,regular,no_dead_strip1020L_OBJC_IMAGE_INFO:1021 .long 01022 .long 961023.subsections_via_symbols1024