brintos

brintos / llvm-project-archived public Read only

0
0
Text · 44.4 KiB · 3befd68 Raw
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