133 lines · plain
1// Test that we register non-lazy classes by ensuring a +load is called even if2// the class is never referenced.3//4// RUN: %clang -c -o %t.o %s5// RUN: %llvm_jitlink -preload libobjc.A.dylib %t.o6//7// REQUIRES: jit-compatible-osx-swift-runtime8 9 .section __TEXT,__text,regular,pure_instructions10 .build_version macos, 15, 0 sdk_version 15, 011 .p2align 4, 0x90 ## -- Begin function +[C load]12"+[C load]": ## @"\01+[C load]"13 .cfi_startproc14## %bb.0:15 pushq %rbp16 .cfi_def_cfa_offset 1617 .cfi_offset %rbp, -1618 movq %rsp, %rbp19 .cfi_def_cfa_register %rbp20 movq %rdi, -8(%rbp)21 movq %rsi, -16(%rbp)22 movl $7, _x(%rip)23 popq %rbp24 retq25 .cfi_endproc26 ## -- End function27 .globl _main ## -- Begin function main28 .p2align 4, 0x9029_main: ## @main30 .cfi_startproc31## %bb.0:32 pushq %rbp33 .cfi_def_cfa_offset 1634 .cfi_offset %rbp, -1635 movq %rsp, %rbp36 .cfi_def_cfa_register %rbp37 movl $0, -4(%rbp)38 movl _x(%rip), %edx39 movl $1, %eax40 xorl %ecx, %ecx41 cmpl $7, %edx42 cmovel %ecx, %eax43 popq %rbp44 retq45 .cfi_endproc46 ## -- End function47 .globl _x ## @x48.zerofill __DATA,__common,_x,4,249 .section __DATA,__objc_data50 .globl _OBJC_CLASS_$_C ## @"OBJC_CLASS_$_C"51 .p2align 3, 0x052_OBJC_CLASS_$_C:53 .quad _OBJC_METACLASS_$_C54 .quad 055 .quad __objc_empty_cache56 .quad 057 .quad __OBJC_CLASS_RO_$_C58 59 .globl _OBJC_METACLASS_$_C ## @"OBJC_METACLASS_$_C"60 .p2align 3, 0x061_OBJC_METACLASS_$_C:62 .quad _OBJC_METACLASS_$_C63 .quad _OBJC_CLASS_$_C64 .quad __objc_empty_cache65 .quad 066 .quad __OBJC_METACLASS_RO_$_C67 68 .section __TEXT,__objc_classname,cstring_literals69L_OBJC_CLASS_NAME_: ## @OBJC_CLASS_NAME_70 .asciz "C"71 72 .section __TEXT,__objc_methname,cstring_literals73L_OBJC_METH_VAR_NAME_: ## @OBJC_METH_VAR_NAME_74 .asciz "load"75 76 .section __TEXT,__objc_methtype,cstring_literals77L_OBJC_METH_VAR_TYPE_: ## @OBJC_METH_VAR_TYPE_78 .asciz "v16@0:8"79 80 .section __DATA,__objc_const81 .p2align 3, 0x0 ## @"_OBJC_$_CLASS_METHODS_C"82__OBJC_$_CLASS_METHODS_C:83 .long 24 ## 0x1884 .long 1 ## 0x185 .quad L_OBJC_METH_VAR_NAME_86 .quad L_OBJC_METH_VAR_TYPE_87 .quad "+[C load]"88 89 .p2align 3, 0x0 ## @"_OBJC_METACLASS_RO_$_C"90__OBJC_METACLASS_RO_$_C:91 .long 3 ## 0x392 .long 40 ## 0x2893 .long 40 ## 0x2894 .space 495 .quad 096 .quad L_OBJC_CLASS_NAME_97 .quad __OBJC_$_CLASS_METHODS_C98 .quad 099 .quad 0100 .quad 0101 .quad 0102 103 .p2align 3, 0x0 ## @"_OBJC_CLASS_RO_$_C"104__OBJC_CLASS_RO_$_C:105 .long 2 ## 0x2106 .long 0 ## 0x0107 .long 0 ## 0x0108 .space 4109 .quad 0110 .quad L_OBJC_CLASS_NAME_111 .quad 0112 .quad 0113 .quad 0114 .quad 0115 .quad 0116 117 .section __DATA,__objc_classlist,regular,no_dead_strip118 .p2align 3, 0x0 ## @"OBJC_LABEL_CLASS_$"119l_OBJC_LABEL_CLASS_$:120 .quad _OBJC_CLASS_$_C121 122 .section __DATA,__objc_nlclslist,regular,no_dead_strip123 .p2align 3, 0x0 ## @"OBJC_LABEL_NONLAZY_CLASS_$"124l_OBJC_LABEL_NONLAZY_CLASS_$:125 .quad _OBJC_CLASS_$_C126 127 .section __DATA,__objc_imageinfo,regular,no_dead_strip128L_OBJC_IMAGE_INFO:129 .long 0130 .long 64131 132.subsections_via_symbols133