443 lines · plain
1# REQUIRES: aarch642# RUN: rm -rf %t; mkdir %t && cd %t3 4############ Test swift category merging into @objc class, with protocol ############5# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o cat_swift.o %s6# RUN: %lld -arch arm64 -dylib -o cat_swift.dylib cat_swift.o -objc_category_merging7# RUN: llvm-objdump --objc-meta-data --macho cat_swift.dylib | FileCheck %s --check-prefixes=CHECK-MERGE8 9 10; CHECK-MERGE: Contents of (__DATA_CONST,__objc_classlist) section11 12; CHECK-MERGE-NEXT: [[#%x,]] 0x[[#%x,]] _OBJC_CLASS_$__TtC11MyTestClass11MyTestClass13; CHECK-MERGE-NEXT: isa 0x[[#%x,]] _OBJC_METACLASS_$__TtC11MyTestClass11MyTestClass14; CHECK-MERGE-NEXT: superclass 0x015; CHECK-MERGE-NEXT: cache 0x016; CHECK-MERGE-NEXT: vtable 0x017; CHECK-MERGE-NEXT: data 0x[[#%x,]] (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 0x[[#%x,]] _TtC11MyTestClass11MyTestClass24; CHECK-MERGE-NEXT: baseMethods 0x[[#%x,]] (struct method_list_t *)25; CHECK-MERGE-NEXT: entsize 2426; CHECK-MERGE-NEXT: count 127; CHECK-MERGE-NEXT: name 0x[[#%x,]] init28; CHECK-MERGE-NEXT: types 0x[[#%x,]] @16@0:829; CHECK-MERGE-NEXT: imp _$s11MyTestClassAACABycfcTo30; CHECK-MERGE-NEXT: baseProtocols 0x031; CHECK-MERGE-NEXT: ivars 0x032; CHECK-MERGE-NEXT: weakIvarLayout 0x033; CHECK-MERGE-NEXT: baseProperties 0x034; CHECK-MERGE-NEXT: Meta Class35; CHECK-MERGE-NEXT: isa 0x036; CHECK-MERGE-NEXT: superclass 0x037; CHECK-MERGE-NEXT: cache 0x038; CHECK-MERGE-NEXT: vtable 0x039; CHECK-MERGE-NEXT: data 0x[[#%x,]] (struct class_ro_t *)40; CHECK-MERGE-NEXT: flags 0x81 RO_META41; CHECK-MERGE-NEXT: instanceStart 4042; CHECK-MERGE-NEXT: instanceSize 4043; CHECK-MERGE-NEXT: reserved 0x044; CHECK-MERGE-NEXT: ivarLayout 0x045; CHECK-MERGE-NEXT: name 0x[[#%x,]] _TtC11MyTestClass11MyTestClass46; CHECK-MERGE-NEXT: baseMethods 0x0 (struct method_list_t *)47; CHECK-MERGE-NEXT: baseProtocols 0x048; CHECK-MERGE-NEXT: ivars 0x049; CHECK-MERGE-NEXT: weakIvarLayout 0x050; CHECK-MERGE-NEXT: baseProperties 0x051 52 53; ================== Generated from Swift: ==================54;; > xcrun swiftc --version55;; swift-driver version: 1.109.2 Apple Swift version 6.0 (swiftlang-6.0.0.3.300 clang-1600.0.20.10)56;; > xcrun swiftc -S MyTestClass.swift -o MyTestClass.s57;;58; import Foundation59;60; protocol MyProtocol {61; func protocolMethod()62; }63;64; @objc class MyTestClass: NSObject, MyProtocol {65; func protocolMethod() {66; }67; }68;69; extension MyTestClass {70; public func extensionMethod() {71; }72; }73; ================== Generated from Swift: ==================74 75 76 .section __TEXT,__text,regular,pure_instructions77 .build_version macos, 11, 0 sdk_version 10, 078 .globl _main79 .p2align 280_main:81 .cfi_startproc82 mov w0, #083 ret84 .cfi_endproc85 86 .private_extern _$s11MyTestClassAAC14protocolMethodyyF87 .globl _$s11MyTestClassAAC14protocolMethodyyF88 .p2align 289_$s11MyTestClassAAC14protocolMethodyyF:90 .cfi_startproc91 ret92 .cfi_endproc93 94 .private_extern _$s11MyTestClassAACABycfC95 .globl _$s11MyTestClassAACABycfC96 .p2align 297_$s11MyTestClassAACABycfC:98 .cfi_startproc99 ret100 .cfi_endproc101 102 .private_extern _$s11MyTestClassAACABycfc103 .globl _$s11MyTestClassAACABycfc104 .p2align 2105_$s11MyTestClassAACABycfc:106 .cfi_startproc107 ret108 .cfi_endproc109 110 .private_extern _$s11MyTestClassAACMa111 .globl _$s11MyTestClassAACMa112 .p2align 2113_$s11MyTestClassAACMa:114 ret115 116 .p2align 2117_$s11MyTestClassAACABycfcTo:118 .cfi_startproc119 ret120 .cfi_endproc121 122 .private_extern _$s11MyTestClassAACfD123 .globl _$s11MyTestClassAACfD124 .p2align 2125_$s11MyTestClassAACfD:126 .cfi_startproc127 ret128 .cfi_endproc129 130 .p2align 2131_$s11MyTestClassAACAA0A8ProtocolA2aCP14protocolMethodyyFTW:132 .cfi_startproc133 ret134 .cfi_endproc135 136 .private_extern _$s11MyTestClassAAC15extensionMethodyyF137 .globl _$s11MyTestClassAAC15extensionMethodyyF138 .p2align 2139_$s11MyTestClassAAC15extensionMethodyyF:140 .cfi_startproc141 ret142 .cfi_endproc143 144 .section __TEXT,__objc_methname,cstring_literals145"L_selector_data(init)":146 .asciz "init"147 148 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip149 .p2align 3, 0x0150"L_selector(init)":151 .quad "L_selector_data(init)"152 153 .section __TEXT,__objc_methname,cstring_literals154"L_selector_data(dealloc)":155 .asciz "dealloc"156 157 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip158 .p2align 3, 0x0159"L_selector(dealloc)":160 .quad "L_selector_data(dealloc)"161 162 .private_extern _$s11MyTestClassAACAA0A8ProtocolAAMc163 .section __TEXT,__const164 .globl _$s11MyTestClassAACAA0A8ProtocolAAMc165 .p2align 2, 0x0166_$s11MyTestClassAACAA0A8ProtocolAAMc:167 .long _$s11MyTestClass0A8ProtocolMp-_$s11MyTestClassAACAA0A8ProtocolAAMc168 .long (_$s11MyTestClassAACMn-_$s11MyTestClassAACAA0A8ProtocolAAMc)-4169 .long (_$s11MyTestClassAACAA0A8ProtocolAAWP-_$s11MyTestClassAACAA0A8ProtocolAAMc)-8170 .long 0171 172 .private_extern _$s11MyTestClassAACAA0A8ProtocolAAWP173 .section __DATA,__const174 .globl _$s11MyTestClassAACAA0A8ProtocolAAWP175 .p2align 3, 0x0176_$s11MyTestClassAACAA0A8ProtocolAAWP:177 .quad _$s11MyTestClassAACAA0A8ProtocolAAMc178 .quad _$s11MyTestClassAACAA0A8ProtocolA2aCP14protocolMethodyyFTW179 180 .section __TEXT,__swift5_entry,regular,no_dead_strip181 .p2align 2, 0x0182l_entry_point:183 .long _main-l_entry_point184 .long 0185 186 .private_extern "_symbolic $s11MyTestClass0A8ProtocolP"187 .section __TEXT,__swift5_typeref188 .globl "_symbolic $s11MyTestClass0A8ProtocolP"189 .weak_definition "_symbolic $s11MyTestClass0A8ProtocolP"190 .p2align 1, 0x0191"_symbolic $s11MyTestClass0A8ProtocolP":192 .ascii "$s11MyTestClass0A8ProtocolP"193 .byte 0194 195 .section __TEXT,__swift5_fieldmd196 .p2align 2, 0x0197_$s11MyTestClass0A8Protocol_pMF:198 .long "_symbolic $s11MyTestClass0A8ProtocolP"-_$s11MyTestClass0A8Protocol_pMF199 .long 0200 .short 4201 .short 12202 .long 0203 204 .section __TEXT,__const205l_.str.11.MyTestClass:206 .asciz "MyTestClass"207 208 .private_extern _$s11MyTestClassMXM209 .section __TEXT,__constg_swiftt210 .globl _$s11MyTestClassMXM211 .weak_definition _$s11MyTestClassMXM212 .p2align 2, 0x0213_$s11MyTestClassMXM:214 .long 0215 .long 0216 .long (l_.str.11.MyTestClass-_$s11MyTestClassMXM)-8217 218 .section __TEXT,__const219l_.str.10.MyProtocol:220 .asciz "MyProtocol"221 222 .private_extern _$s11MyTestClass0A8ProtocolMp223 .section __TEXT,__constg_swiftt224 .globl _$s11MyTestClass0A8ProtocolMp225 .p2align 2, 0x0226_$s11MyTestClass0A8ProtocolMp:227 .long 65603228 .long (_$s11MyTestClassMXM-_$s11MyTestClass0A8ProtocolMp)-4229 .long (l_.str.10.MyProtocol-_$s11MyTestClass0A8ProtocolMp)-8230 .long 0231 .long 1232 .long 0233 .long 17234 .long 0235 236 .private_extern _OBJC_METACLASS_$__TtC11MyTestClass11MyTestClass237 .section __DATA,__data238 .globl _OBJC_METACLASS_$__TtC11MyTestClass11MyTestClass239 .p2align 3, 0x0240_OBJC_METACLASS_$__TtC11MyTestClass11MyTestClass:241 .quad _OBJC_METACLASS_$_NSObject242 .quad _OBJC_METACLASS_$_NSObject243 .quad __objc_empty_cache244 .quad 0245 .quad __METACLASS_DATA__TtC11MyTestClass11MyTestClass246 247 .section __TEXT,__cstring,cstring_literals248 .p2align 4, 0x0249l_.str.30._TtC11MyTestClass11MyTestClass:250 .asciz "_TtC11MyTestClass11MyTestClass"251 252 .section __DATA,__objc_const253 .p2align 3, 0x0254__METACLASS_DATA__TtC11MyTestClass11MyTestClass:255 .long 129256 .long 40257 .long 40258 .long 0259 .quad 0260 .quad l_.str.30._TtC11MyTestClass11MyTestClass261 .quad 0262 .quad 0263 .quad 0264 .quad 0265 .quad 0266 267 .section __TEXT,__cstring,cstring_literals268"l_.str.7.@16@0:8":269 .asciz "@16@0:8"270 271 .section __DATA,__objc_data272 .p2align 3, 0x0273__INSTANCE_METHODS__TtC11MyTestClass11MyTestClass:274 .long 24275 .long 1276 .quad "L_selector_data(init)"277 .quad "l_.str.7.@16@0:8"278 .quad _$s11MyTestClassAACABycfcTo279 280 .p2align 3, 0x0281__DATA__TtC11MyTestClass11MyTestClass:282 .long 128283 .long 8284 .long 8285 .long 0286 .quad 0287 .quad l_.str.30._TtC11MyTestClass11MyTestClass288 .quad __INSTANCE_METHODS__TtC11MyTestClass11MyTestClass289 .quad 0290 .quad 0291 .quad 0292 .quad 0293 294 .private_extern "_symbolic So8NSObjectC"295 .section __TEXT,__swift5_typeref296 .globl "_symbolic So8NSObjectC"297 .weak_definition "_symbolic So8NSObjectC"298 .p2align 1, 0x0299"_symbolic So8NSObjectC":300 .ascii "So8NSObjectC"301 .byte 0302 303 .private_extern _$s11MyTestClassAACMn304 .section __TEXT,__constg_swiftt305 .globl _$s11MyTestClassAACMn306 .p2align 2, 0x0307_$s11MyTestClassAACMn:308 .long 2147483728309 .long (_$s11MyTestClassMXM-_$s11MyTestClassAACMn)-4310 .long (l_.str.11.MyTestClass-_$s11MyTestClassAACMn)-8311 .long (_$s11MyTestClassAACMa-_$s11MyTestClassAACMn)-12312 .long (_$s11MyTestClassAACMF-_$s11MyTestClassAACMn)-16313 .long ("_symbolic So8NSObjectC"-_$s11MyTestClassAACMn)-20314 .long 3315 .long 11316 .long 1317 .long 0318 .long 10319 .long 10320 .long 1321 .long 16322 .long (_$s11MyTestClassAAC14protocolMethodyyF-_$s11MyTestClassAACMn)-56323 324 .section __DATA,__objc_data325 .p2align 3, 0x0326_$s11MyTestClassAACMf:327 .quad 0328 .quad _$s11MyTestClassAACfD329 .quad _$sBOWV330 .quad _OBJC_METACLASS_$__TtC11MyTestClass11MyTestClass331 .quad _OBJC_CLASS_$_NSObject332 .quad __objc_empty_cache333 .quad 0334 .quad __DATA__TtC11MyTestClass11MyTestClass+2335 .long 0336 .long 0337 .long 8338 .short 7339 .short 0340 .long 112341 .long 24342 .quad _$s11MyTestClassAACMn343 .quad 0344 .quad _$s11MyTestClassAAC14protocolMethodyyF345 346 .private_extern "_symbolic _____ 11MyTestClassAAC"347 .section __TEXT,__swift5_typeref348 .globl "_symbolic _____ 11MyTestClassAAC"349 .weak_definition "_symbolic _____ 11MyTestClassAAC"350 .p2align 1, 0x0351"_symbolic _____ 11MyTestClassAAC":352 .byte 1353 .long (_$s11MyTestClassAACMn-"_symbolic _____ 11MyTestClassAAC")-1354 .byte 0355 356 .section __TEXT,__swift5_fieldmd357 .p2align 2, 0x0358_$s11MyTestClassAACMF:359 .long "_symbolic _____ 11MyTestClassAAC"-_$s11MyTestClassAACMF360 .long ("_symbolic So8NSObjectC"-_$s11MyTestClassAACMF)-4361 .short 7362 .short 12363 .long 0364 365 .section __TEXT,__swift5_protos366 .p2align 2, 0x0367l_$s11MyTestClass0A8ProtocolHr:368 .long _$s11MyTestClass0A8ProtocolMp-l_$s11MyTestClass0A8ProtocolHr369 370 .section __TEXT,__swift5_proto371 .p2align 2, 0x0372l_$s11MyTestClassAACAA0A8ProtocolAAHc:373 .long _$s11MyTestClassAACAA0A8ProtocolAAMc-l_$s11MyTestClassAACAA0A8ProtocolAAHc374 375 .section __TEXT,__swift5_types376 .p2align 2, 0x0377l_$s11MyTestClassAACHn:378 .long _$s11MyTestClassAACMn-l_$s11MyTestClassAACHn379 380 .private_extern ___swift_reflection_version381 .section __TEXT,__const382 .globl ___swift_reflection_version383 .weak_definition ___swift_reflection_version384 .p2align 1, 0x0385___swift_reflection_version:386 .short 3387 388 .section __DATA,__objc_classlist,regular,no_dead_strip389 .p2align 3, 0x0390_objc_classes_$s11MyTestClassAACN:391 .quad _$s11MyTestClassAACN392 393 .no_dead_strip _main394 .no_dead_strip l_entry_point395 .no_dead_strip _$s11MyTestClass0A8Protocol_pMF396 .no_dead_strip _$s11MyTestClassAACMF397 .no_dead_strip __swift_FORCE_LOAD_$_swiftFoundation_$_MyTestClass398 .no_dead_strip __swift_FORCE_LOAD_$_swiftDarwin_$_MyTestClass399 .no_dead_strip __swift_FORCE_LOAD_$_swiftObjectiveC_$_MyTestClass400 .no_dead_strip __swift_FORCE_LOAD_$_swiftCoreFoundation_$_MyTestClass401 .no_dead_strip __swift_FORCE_LOAD_$_swiftDispatch_$_MyTestClass402 .no_dead_strip __swift_FORCE_LOAD_$_swiftXPC_$_MyTestClass403 .no_dead_strip __swift_FORCE_LOAD_$_swiftIOKit_$_MyTestClass404 .no_dead_strip l_$s11MyTestClass0A8ProtocolHr405 .no_dead_strip l_$s11MyTestClassAACAA0A8ProtocolAAHc406 .no_dead_strip l_$s11MyTestClassAACHn407 .no_dead_strip ___swift_reflection_version408 .no_dead_strip _objc_classes_$s11MyTestClassAACN409 .section __DATA,__objc_imageinfo,regular,no_dead_strip410L_OBJC_IMAGE_INFO:411 .long 0412 .long 100665152413 414 .globl _$s11MyTestClass0A8ProtocolTL415 .private_extern _$s11MyTestClass0A8ProtocolTL416 .alt_entry _$s11MyTestClass0A8ProtocolTL417.set _$s11MyTestClass0A8ProtocolTL, (_$s11MyTestClass0A8ProtocolMp+24)-8418 .globl _$s11MyTestClassAAC14protocolMethodyyFTq419 .private_extern _$s11MyTestClassAAC14protocolMethodyyFTq420 .alt_entry _$s11MyTestClassAAC14protocolMethodyyFTq421.set _$s11MyTestClassAAC14protocolMethodyyFTq, _$s11MyTestClassAACMn+52422 .globl _$s11MyTestClassAACN423 .private_extern _$s11MyTestClassAACN424 .alt_entry _$s11MyTestClassAACN425.set _$s11MyTestClassAACN, _$s11MyTestClassAACMf+24426 .globl _OBJC_CLASS_$__TtC11MyTestClass11MyTestClass427 .private_extern _OBJC_CLASS_$__TtC11MyTestClass11MyTestClass428.set _OBJC_CLASS_$__TtC11MyTestClass11MyTestClass, _$s11MyTestClassAACN429 .weak_reference __swift_FORCE_LOAD_$_swiftFoundation430 .weak_reference __swift_FORCE_LOAD_$_swiftDarwin431 .weak_reference __swift_FORCE_LOAD_$_swiftObjectiveC432 .weak_reference __swift_FORCE_LOAD_$_swiftCoreFoundation433 .weak_reference __swift_FORCE_LOAD_$_swiftDispatch434 .weak_reference __swift_FORCE_LOAD_$_swiftXPC435 .weak_reference __swift_FORCE_LOAD_$_swiftIOKit436.subsections_via_symbols437 438_OBJC_CLASS_$_NSObject:439_OBJC_METACLASS_$_NSObject:440__objc_empty_cache:441_$sBOWV:442 .quad 0443