132 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 10 .section __TEXT,__text,regular,pure_instructions11 .build_version macos, 15, 0 sdk_version 15, 012 .p2align 2 ; -- Begin function +[C load]13"+[C load]": ; @"\01+[C load]"14 .cfi_startproc15; %bb.0:16 sub sp, sp, #1617 .cfi_def_cfa_offset 1618 str x0, [sp, #8]19 str x1, [sp]20 adrp x9, _x@PAGE21 mov w8, #7 ; =0x722 str w8, [x9, _x@PAGEOFF]23 add sp, sp, #1624 ret25 .cfi_endproc26 ; -- End function27 .globl _main ; -- Begin function main28 .p2align 229_main: ; @main30 .cfi_startproc31; %bb.0:32 sub sp, sp, #1633 .cfi_def_cfa_offset 1634 str wzr, [sp, #12]35 adrp x8, _x@PAGE36 ldr w8, [x8, _x@PAGEOFF]37 subs w8, w8, #738 cset w8, eq39 and w8, w8, #0x140 ands w8, w8, #0x141 cset w0, eq42 add sp, sp, #1643 ret44 .cfi_endproc45 ; -- End function46 .globl _x ; @x47.zerofill __DATA,__common,_x,4,248 .section __DATA,__objc_data49 .globl _OBJC_CLASS_$_C ; @"OBJC_CLASS_$_C"50 .p2align 3, 0x051_OBJC_CLASS_$_C:52 .quad _OBJC_METACLASS_$_C53 .quad 054 .quad __objc_empty_cache55 .quad 056 .quad __OBJC_CLASS_RO_$_C57 58 .globl _OBJC_METACLASS_$_C ; @"OBJC_METACLASS_$_C"59 .p2align 3, 0x060_OBJC_METACLASS_$_C:61 .quad _OBJC_METACLASS_$_C62 .quad _OBJC_CLASS_$_C63 .quad __objc_empty_cache64 .quad 065 .quad __OBJC_METACLASS_RO_$_C66 67 .section __TEXT,__objc_classname,cstring_literals68l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_69 .asciz "C"70 71 .section __TEXT,__objc_methname,cstring_literals72l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_73 .asciz "load"74 75 .section __TEXT,__objc_methtype,cstring_literals76l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_77 .asciz "v16@0:8"78 79 .section __DATA,__objc_const80 .p2align 3, 0x0 ; @"_OBJC_$_CLASS_METHODS_C"81__OBJC_$_CLASS_METHODS_C:82 .long 24 ; 0x1883 .long 1 ; 0x184 .quad l_OBJC_METH_VAR_NAME_85 .quad l_OBJC_METH_VAR_TYPE_86 .quad "+[C load]"87 88 .p2align 3, 0x0 ; @"_OBJC_METACLASS_RO_$_C"89__OBJC_METACLASS_RO_$_C:90 .long 3 ; 0x391 .long 40 ; 0x2892 .long 40 ; 0x2893 .space 494 .quad 095 .quad l_OBJC_CLASS_NAME_96 .quad __OBJC_$_CLASS_METHODS_C97 .quad 098 .quad 099 .quad 0100 .quad 0101 102 .p2align 3, 0x0 ; @"_OBJC_CLASS_RO_$_C"103__OBJC_CLASS_RO_$_C:104 .long 2 ; 0x2105 .long 0 ; 0x0106 .long 0 ; 0x0107 .space 4108 .quad 0109 .quad l_OBJC_CLASS_NAME_110 .quad 0111 .quad 0112 .quad 0113 .quad 0114 .quad 0115 116 .section __DATA,__objc_classlist,regular,no_dead_strip117 .p2align 3, 0x0 ; @"OBJC_LABEL_CLASS_$"118l_OBJC_LABEL_CLASS_$:119 .quad _OBJC_CLASS_$_C120 121 .section __DATA,__objc_nlclslist,regular,no_dead_strip122 .p2align 3, 0x0 ; @"OBJC_LABEL_NONLAZY_CLASS_$"123l_OBJC_LABEL_NONLAZY_CLASS_$:124 .quad _OBJC_CLASS_$_C125 126 .section __DATA,__objc_imageinfo,regular,no_dead_strip127L_OBJC_IMAGE_INFO:128 .long 0129 .long 64130 131.subsections_via_symbols132