brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.9 KiB · 7a084d9 Raw
411 lines · plain
1# REQUIRES: aarch642# RUN: rm -rf %t; mkdir %t && cd %t3 4############ Test merging multiple categories into a single category ############5## Apply category merging to swiftc code just make sure we can handle addends6## and don't erase category names for swift -- in order to not crash7# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o cat_swift.o %s8# RUN: %lld -arch arm64 -dylib -o cat_swift.dylib cat_swift.o -objc_category_merging -no_objc_relative_method_lists9# RUN: llvm-objdump --objc-meta-data --macho cat_swift.dylib | FileCheck %s --check-prefixes=CHECK-MERGE10 11; CHECK-MERGE:      Contents of (__DATA_CONST,__objc_classlist) section12; CHECK-MERGE-NEXT: _$s11SimpleClassAACN13; CHECK-MERGE-NEXT:            isa {{.+}} _OBJC_METACLASS_$__TtC11SimpleClass11SimpleClass14; CHECK-MERGE-NEXT:     superclass 0x015; CHECK-MERGE-NEXT:          cache 0x016; CHECK-MERGE-NEXT:         vtable 0x017; CHECK-MERGE-NEXT:           data {{.+}} (struct class_ro_t *) Swift class18; CHECK-MERGE-NEXT:                     flags 0x8019; CHECK-MERGE-NEXT:             instanceStart 820; CHECK-MERGE-NEXT:              instanceSize 821; CHECK-MERGE-NEXT:                  reserved 0x022; CHECK-MERGE-NEXT:                ivarLayout 0x023; CHECK-MERGE-NEXT:                      name {{.+}} _TtC11SimpleClass11SimpleClass24; CHECK-MERGE-NEXT:               baseMethods {{.+}} (struct method_list_t *)25; CHECK-MERGE-NEXT:                    entsize 2426; CHECK-MERGE-NEXT:                      count 327; CHECK-MERGE-NEXT:                       name {{.+}} categoryInstanceMethod28; CHECK-MERGE-NEXT:                      types {{.+}} q16@0:829; CHECK-MERGE-NEXT:                        imp _$s11SimpleClassAAC22categoryInstanceMethodSiyFTo30; CHECK-MERGE-NEXT:                       name {{.+}} baseClassInstanceMethod31; CHECK-MERGE-NEXT:                      types {{.+}} i16@0:832; CHECK-MERGE-NEXT:                        imp _$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTo33; CHECK-MERGE-NEXT:                       name {{.+}} init34; CHECK-MERGE-NEXT:                      types {{.+}} @16@0:835; CHECK-MERGE-NEXT:                        imp _$s11SimpleClassAACABycfcTo36; CHECK-MERGE-NEXT:             baseProtocols 0x037; CHECK-MERGE-NEXT:                     ivars 0x038; CHECK-MERGE-NEXT:            weakIvarLayout 0x039; CHECK-MERGE-NEXT:            baseProperties 0x040; CHECK-MERGE-NEXT: Meta Class41; CHECK-MERGE-NEXT:            isa 0x042; CHECK-MERGE-NEXT:     superclass 0x043; CHECK-MERGE-NEXT:          cache 0x044; CHECK-MERGE-NEXT:         vtable 0x045; CHECK-MERGE-NEXT:           data {{.+}} (struct class_ro_t *)46; CHECK-MERGE-NEXT:                     flags 0x81 RO_META47; CHECK-MERGE-NEXT:             instanceStart 4048; CHECK-MERGE-NEXT:              instanceSize 4049; CHECK-MERGE-NEXT:                  reserved 0x050; CHECK-MERGE-NEXT:                ivarLayout 0x051; CHECK-MERGE-NEXT:                      name {{.+}} _TtC11SimpleClass11SimpleClass52; CHECK-MERGE-NEXT:               baseMethods 0x0 (struct method_list_t *)53; CHECK-MERGE-NEXT:             baseProtocols 0x054; CHECK-MERGE-NEXT:                     ivars 0x055; CHECK-MERGE-NEXT:            weakIvarLayout 0x056; CHECK-MERGE-NEXT:            baseProperties 0x057; CHECK-MERGE-NEXT: Contents of (__DATA_CONST,__objc_imageinfo) section58; CHECK-MERGE-NEXT:   version 059; CHECK-MERGE-NEXT:     flags 0x740 OBJC_IMAGE_HAS_CATEGORY_CLASS_PROPERTIES Swift 5 or later60 61;  ================== Generated from Swift: ==================62;; > xcrun swiftc --version63;; swift-driver version: 1.109.2 Apple Swift version 6.0 (swiftlang-6.0.0.3.300 clang-1600.0.20.10)64;; > xcrun swiftc -S SimpleClass.swift -o SimpleClass.s65; import Foundation66; @objc class SimpleClass: NSObject {67;     @objc func baseClassInstanceMethod() -> Int32 {68;         return 269;     }70; }71; extension SimpleClass {72;     @objc func categoryInstanceMethod() -> Int {73;         return 374;     }75; }76 77;  ================== Generated from Swift: ==================78	.section	__TEXT,__text,regular,pure_instructions79	.build_version macos, 11, 0	sdk_version 12, 080	.globl	_main81	.p2align	282_main:83	.cfi_startproc84	mov	w0, #085	ret86	.cfi_endproc87 88	.private_extern	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyF89	.globl	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyF90	.p2align	291_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyF:92	.cfi_startproc93	ret94	.cfi_endproc95 96	.p2align	297_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTo:98	.cfi_startproc99	ret100	.cfi_endproc101 102	.private_extern	_$s11SimpleClassAACABycfC103	.globl	_$s11SimpleClassAACABycfC104	.p2align	2105_$s11SimpleClassAACABycfC:106	.cfi_startproc107	ret108	.cfi_endproc109 110	.private_extern	_$s11SimpleClassAACABycfc111	.globl	_$s11SimpleClassAACABycfc112	.p2align	2113_$s11SimpleClassAACABycfc:114	.cfi_startproc115	ret116	.cfi_endproc117 118	.private_extern	_$s11SimpleClassAACMa119	.globl	_$s11SimpleClassAACMa120	.p2align	2121_$s11SimpleClassAACMa:122	ret123 124	.p2align	2125_$s11SimpleClassAACABycfcTo:126	.cfi_startproc127	ret128	.cfi_endproc129 130	.private_extern	_$s11SimpleClassAACfD131	.globl	_$s11SimpleClassAACfD132	.p2align	2133_$s11SimpleClassAACfD:134	.cfi_startproc135	ret136	.cfi_endproc137 138	.private_extern	_$s11SimpleClassAAC22categoryInstanceMethodSiyF139	.globl	_$s11SimpleClassAAC22categoryInstanceMethodSiyF140	.p2align	2141_$s11SimpleClassAAC22categoryInstanceMethodSiyF:142	.cfi_startproc143	ret144	.cfi_endproc145 146	.p2align	2147_$s11SimpleClassAAC22categoryInstanceMethodSiyFTo:148	.cfi_startproc149	ret150	.cfi_endproc151 152	.section	__TEXT,__objc_methname,cstring_literals153"L_selector_data(init)":154	.asciz	"init"155 156	.section	__DATA,__objc_selrefs,literal_pointers,no_dead_strip157	.p2align	3, 0x0158"L_selector(init)":159	.quad	"L_selector_data(init)"160 161	.section	__TEXT,__objc_methname,cstring_literals162"L_selector_data(dealloc)":163	.asciz	"dealloc"164 165	.section	__DATA,__objc_selrefs,literal_pointers,no_dead_strip166	.p2align	3, 0x0167"L_selector(dealloc)":168	.quad	"L_selector_data(dealloc)"169 170	.section	__TEXT,__swift5_entry,regular,no_dead_strip171	.p2align	2, 0x0172l_entry_point:173	.long	_main-l_entry_point174	.long	0175 176	.private_extern	_OBJC_METACLASS_$__TtC11SimpleClass11SimpleClass177	.section	__DATA,__data178	.globl	_OBJC_METACLASS_$__TtC11SimpleClass11SimpleClass179	.p2align	3, 0x0180_OBJC_METACLASS_$__TtC11SimpleClass11SimpleClass:181	.quad	_OBJC_METACLASS_$_NSObject182	.quad	_OBJC_METACLASS_$_NSObject183	.quad	__objc_empty_cache184	.quad	0185	.quad	__METACLASS_DATA__TtC11SimpleClass11SimpleClass186 187	.section	__TEXT,__cstring,cstring_literals188	.p2align	4, 0x0189l_.str.30._TtC11SimpleClass11SimpleClass:190	.asciz	"_TtC11SimpleClass11SimpleClass"191 192	.section	__DATA,__objc_const193	.p2align	3, 0x0194__METACLASS_DATA__TtC11SimpleClass11SimpleClass:195	.long	129196	.long	40197	.long	40198	.long	0199	.quad	0200	.quad	l_.str.30._TtC11SimpleClass11SimpleClass201	.quad	0202	.quad	0203	.quad	0204	.quad	0205	.quad	0206 207	.section	__TEXT,__objc_methname,cstring_literals208"L_selector_data(baseClassInstanceMethod)":209	.asciz	"baseClassInstanceMethod"210 211	.section	__TEXT,__cstring,cstring_literals212"l_.str.7.i16@0:8":213	.asciz	"i16@0:8"214 215"l_.str.7.@16@0:8":216	.asciz	"@16@0:8"217 218	.section	__DATA,__objc_data219	.p2align	3, 0x0220__INSTANCE_METHODS__TtC11SimpleClass11SimpleClass:221	.long	24222	.long	2223	.quad	"L_selector_data(baseClassInstanceMethod)"224	.quad	"l_.str.7.i16@0:8"225	.quad	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTo226	.quad	"L_selector_data(init)"227	.quad	"l_.str.7.@16@0:8"228	.quad	_$s11SimpleClassAACABycfcTo229 230	.p2align	3, 0x0231__DATA__TtC11SimpleClass11SimpleClass:232	.long	128233	.long	8234	.long	8235	.long	0236	.quad	0237	.quad	l_.str.30._TtC11SimpleClass11SimpleClass238	.quad	__INSTANCE_METHODS__TtC11SimpleClass11SimpleClass239	.quad	0240	.quad	0241	.quad	0242	.quad	0243 244	.section	__TEXT,__const245l_.str.11.SimpleClass:246	.asciz	"SimpleClass"247 248	.private_extern	_$s11SimpleClassMXM249	.section	__TEXT,__constg_swiftt250	.globl	_$s11SimpleClassMXM251	.weak_definition	_$s11SimpleClassMXM252	.p2align	2, 0x0253_$s11SimpleClassMXM:254	.long	0255	.long	0256	.long	(l_.str.11.SimpleClass-_$s11SimpleClassMXM)-8257 258	.private_extern	"_symbolic So8NSObjectC"259	.section	__TEXT,__swift5_typeref260	.globl	"_symbolic So8NSObjectC"261	.weak_definition	"_symbolic So8NSObjectC"262	.p2align	1, 0x0263"_symbolic So8NSObjectC":264	.ascii	"So8NSObjectC"265	.byte	0266 267	.private_extern	_$s11SimpleClassAACMn268	.section	__TEXT,__constg_swiftt269	.globl	_$s11SimpleClassAACMn270	.p2align	2, 0x0271_$s11SimpleClassAACMn:272	.long	2147483728273	.long	(_$s11SimpleClassMXM-_$s11SimpleClassAACMn)-4274	.long	(l_.str.11.SimpleClass-_$s11SimpleClassAACMn)-8275	.long	(_$s11SimpleClassAACMa-_$s11SimpleClassAACMn)-12276	.long	(_$s11SimpleClassAACMF-_$s11SimpleClassAACMn)-16277	.long	("_symbolic So8NSObjectC"-_$s11SimpleClassAACMn)-20278	.long	3279	.long	11280	.long	1281	.long	0282	.long	10283	.long	10284	.long	1285	.long	16286	.long	(_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyF-_$s11SimpleClassAACMn)-56287 288	.section	__DATA,__objc_data289	.p2align	3, 0x0290_$s11SimpleClassAACMf:291	.quad	0292	.quad	_$s11SimpleClassAACfD293	.quad	_$sBOWV294	.quad	_OBJC_METACLASS_$__TtC11SimpleClass11SimpleClass295	.quad	_OBJC_CLASS_$_NSObject296	.quad	__objc_empty_cache297	.quad	0298	.quad	__DATA__TtC11SimpleClass11SimpleClass+2299	.long	0300	.long	0301	.long	8302	.short	7303	.short	0304	.long	112305	.long	24306	.quad	_$s11SimpleClassAACMn307	.quad	0308	.quad	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyF309 310	.private_extern	"_symbolic _____ 11SimpleClassAAC"311	.section	__TEXT,__swift5_typeref312	.globl	"_symbolic _____ 11SimpleClassAAC"313	.weak_definition	"_symbolic _____ 11SimpleClassAAC"314	.p2align	1, 0x0315"_symbolic _____ 11SimpleClassAAC":316	.byte	1317	.long	(_$s11SimpleClassAACMn-"_symbolic _____ 11SimpleClassAAC")-1318	.byte	0319 320	.section	__TEXT,__swift5_fieldmd321	.p2align	2, 0x0322_$s11SimpleClassAACMF:323	.long	"_symbolic _____ 11SimpleClassAAC"-_$s11SimpleClassAACMF324	.long	("_symbolic So8NSObjectC"-_$s11SimpleClassAACMF)-4325	.short	7326	.short	12327	.long	0328 329	.section	__TEXT,__objc_methname,cstring_literals330"L_selector_data(categoryInstanceMethod)":331	.asciz	"categoryInstanceMethod"332 333	.section	__TEXT,__cstring,cstring_literals334"l_.str.7.q16@0:8":335	.asciz	"q16@0:8"336 337	.section	__DATA,__objc_data338	.p2align	3, 0x0339__CATEGORY_INSTANCE_METHODS__TtC11SimpleClass11SimpleClass_$_SimpleClass:340	.long	24341	.long	1342	.quad	"L_selector_data(categoryInstanceMethod)"343	.quad	"l_.str.7.q16@0:8"344	.quad	_$s11SimpleClassAAC22categoryInstanceMethodSiyFTo345 346	.section	__DATA,__objc_const347	.p2align	3, 0x0348__CATEGORY__TtC11SimpleClass11SimpleClass_$_SimpleClass:349	.quad	l_.str.11.SimpleClass350	.quad	_$s11SimpleClassAACMf+24351	.quad	__CATEGORY_INSTANCE_METHODS__TtC11SimpleClass11SimpleClass_$_SimpleClass352	.quad	0353	.quad	0354	.quad	0355	.quad	0356	.long	60357	.space	4358 359	.section	__TEXT,__swift5_types360	.p2align	2, 0x0361l_$s11SimpleClassAACHn:362	.long	_$s11SimpleClassAACMn-l_$s11SimpleClassAACHn363 364	.private_extern	___swift_reflection_version365	.section	__TEXT,__const366	.globl	___swift_reflection_version367	.weak_definition	___swift_reflection_version368	.p2align	1, 0x0369___swift_reflection_version:370	.short	3371 372	.section	__DATA,__objc_classlist,regular,no_dead_strip373	.p2align	3, 0x0374_objc_classes_$s11SimpleClassAACN:375	.quad	_$s11SimpleClassAACN376 377	.section	__DATA,__objc_catlist,regular,no_dead_strip378	.p2align	3, 0x0379_objc_categories:380	.quad	__CATEGORY__TtC11SimpleClass11SimpleClass_$_SimpleClass381 382	.no_dead_strip	_main383	.no_dead_strip	l_entry_point384	.no_dead_strip	_$s11SimpleClassAACMF385	.no_dead_strip	l_$s11SimpleClassAACHn386	.no_dead_strip	___swift_reflection_version387	.no_dead_strip	_objc_classes_$s11SimpleClassAACN388	.no_dead_strip	_objc_categories389	.section	__DATA,__objc_imageinfo,regular,no_dead_strip390L_OBJC_IMAGE_INFO:391	.long	0392	.long	100665152393 394	.globl	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTq395	.private_extern	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTq396	.alt_entry	_$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTq397.set _$s11SimpleClassAAC04baseB14InstanceMethods5Int32VyFTq, _$s11SimpleClassAACMn+52398	.globl	_$s11SimpleClassAACN399	.private_extern	_$s11SimpleClassAACN400	.alt_entry	_$s11SimpleClassAACN401.set _$s11SimpleClassAACN, _$s11SimpleClassAACMf+24402	.globl	_OBJC_CLASS_$__TtC11SimpleClass11SimpleClass403	.private_extern	_OBJC_CLASS_$__TtC11SimpleClass11SimpleClass404.subsections_via_symbols405 406_OBJC_CLASS_$_NSObject:407_OBJC_METACLASS_$_NSObject:408__objc_empty_cache:409_$sBOWV:410  .quad 0411