92 lines · plain
1// Test that we register protocol reference metadata. Without registration,2// protocol pointers will not be uniqued correctly and @protocol(NSObject) will3// not match the runtime's pointer.4//5// RUN: %clang -c -o %t.o %s6// RUN: %llvm_jitlink -preload libobjc.A.dylib %t.o7//8// REQUIRES: jit-compatible-osx-swift-runtime9 10 .section __TEXT,__text,regular,pure_instructions11 .build_version macos, 15, 0 sdk_version 15, 012 .globl _main ## -- Begin function main13 .p2align 4, 0x9014_main: ## @main15 .cfi_startproc16## %bb.0:17 pushq %rbp18 .cfi_def_cfa_offset 1619 .cfi_offset %rbp, -1620 movq %rsp, %rbp21 .cfi_def_cfa_register %rbp22 subq $16, %rsp23 movl $0, -4(%rbp)24 movq __OBJC_PROTOCOL_REFERENCE_$_NSObject(%rip), %rax25 movq %rax, -16(%rbp) ## 8-byte Spill26 leaq L_.str(%rip), %rdi27 callq _objc_getProtocol28 movq -16(%rbp), %rdx ## 8-byte Reload29 movq %rax, %rsi30 movl $1, %eax31 xorl %ecx, %ecx32 cmpq %rsi, %rdx33 cmovel %ecx, %eax34 addq $16, %rsp35 popq %rbp36 retq37 .cfi_endproc38 ## -- End function39 .section __TEXT,__objc_classname,cstring_literals40L_OBJC_CLASS_NAME_: ## @OBJC_CLASS_NAME_41 .asciz "NSObject"42 43 .private_extern __OBJC_PROTOCOL_$_NSObject ## @"_OBJC_PROTOCOL_$_NSObject"44 .section __DATA,__data45 .globl __OBJC_PROTOCOL_$_NSObject46 .weak_definition __OBJC_PROTOCOL_$_NSObject47 .p2align 3, 0x048__OBJC_PROTOCOL_$_NSObject:49 .quad 050 .quad L_OBJC_CLASS_NAME_51 .quad 052 .quad 053 .quad 054 .quad 055 .quad 056 .quad 057 .long 96 ## 0x6058 .long 0 ## 0x059 .quad 060 .quad 061 .quad 062 63 .private_extern __OBJC_LABEL_PROTOCOL_$_NSObject ## @"_OBJC_LABEL_PROTOCOL_$_NSObject"64 .section __DATA,__objc_protolist,coalesced,no_dead_strip65 .globl __OBJC_LABEL_PROTOCOL_$_NSObject66 .weak_definition __OBJC_LABEL_PROTOCOL_$_NSObject67 .p2align 3, 0x068__OBJC_LABEL_PROTOCOL_$_NSObject:69 .quad __OBJC_PROTOCOL_$_NSObject70 71 .private_extern __OBJC_PROTOCOL_REFERENCE_$_NSObject ## @"_OBJC_PROTOCOL_REFERENCE_$_NSObject"72 .section __DATA,__objc_protorefs,coalesced,no_dead_strip73 .globl __OBJC_PROTOCOL_REFERENCE_$_NSObject74 .weak_definition __OBJC_PROTOCOL_REFERENCE_$_NSObject75 .p2align 3, 0x076__OBJC_PROTOCOL_REFERENCE_$_NSObject:77 .quad __OBJC_PROTOCOL_$_NSObject78 79 .section __TEXT,__cstring,cstring_literals80L_.str: ## @.str81 .asciz "NSObject"82 83 .no_dead_strip __OBJC_PROTOCOL_$_NSObject84 .no_dead_strip __OBJC_LABEL_PROTOCOL_$_NSObject85 .no_dead_strip __OBJC_PROTOCOL_REFERENCE_$_NSObject86 .section __DATA,__objc_imageinfo,regular,no_dead_strip87L_OBJC_IMAGE_INFO:88 .long 089 .long 6490 91.subsections_via_symbols92