brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 689af1e Raw
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