189 lines · plain
1// RUN: %clang -c -o %t %s2// RUN: %llvm_jitlink -preload libobjc.A.dylib %t3//4// REQUIRES: jit-compatible-osx-swift-runtime5//6// Test that Objective-C class and instance methods work.7 8 .section __TEXT,__text,regular,pure_instructions9 .build_version macos, 12, 0 sdk_version 12, 010 .p2align 2 ; -- Begin function +[ZeroGen classZero]11"+[ZeroGen classZero]": ; @"\01+[ZeroGen classZero]"12 .cfi_startproc13; %bb.0:14 sub sp, sp, #16 ; =1615 .cfi_def_cfa_offset 1616 str x0, [sp, #8]17 str x1, [sp]18 mov w0, #019 add sp, sp, #16 ; =1620 ret21 .cfi_endproc22 ; -- End function23 .p2align 2 ; -- Begin function -[ZeroGen objZero]24"-[ZeroGen objZero]": ; @"\01-[ZeroGen objZero]"25 .cfi_startproc26; %bb.0:27 sub sp, sp, #16 ; =1628 .cfi_def_cfa_offset 1629 str x0, [sp, #8]30 str x1, [sp]31 mov w0, #032 add sp, sp, #16 ; =1633 ret34 .cfi_endproc35 ; -- End function36 .globl _main ; -- Begin function main37 .p2align 238_main: ; @main39 .cfi_startproc40; %bb.0:41 sub sp, sp, #48 ; =4842 stp x29, x30, [sp, #32] ; 16-byte Folded Spill43 add x29, sp, #32 ; =3244 .cfi_def_cfa w29, 1645 .cfi_offset w30, -846 .cfi_offset w29, -1647 stur wzr, [x29, #-4]48 adrp x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGE49 str x8, [sp, #8] ; 8-byte Folded Spill50 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]51 bl _objc_alloc_init52 ldr x8, [sp, #8] ; 8-byte Folded Reload53 str x0, [sp, #16]54 ldr x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]55 adrp x8, _OBJC_SELECTOR_REFERENCES_@PAGE56 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_@PAGEOFF]57 bl _objc_msgSend58 cbz w0, LBB2_259; %bb.1:60 mov w8, #161 stur w8, [x29, #-4]62 b LBB2_563LBB2_2:64 ldr x0, [sp, #16]65 adrp x8, _OBJC_SELECTOR_REFERENCES_.2@PAGE66 ldr x1, [x8, _OBJC_SELECTOR_REFERENCES_.2@PAGEOFF]67 bl _objc_msgSend68 cbz w0, LBB2_469; %bb.3:70 mov w8, #171 stur w8, [x29, #-4]72 b LBB2_573LBB2_4:74 stur wzr, [x29, #-4]75LBB2_5:76 ldur w0, [x29, #-4]77 ldp x29, x30, [sp, #32] ; 16-byte Folded Reload78 add sp, sp, #48 ; =4879 ret80 .cfi_endproc81 ; -- End function82 .section __TEXT,__objc_classname,cstring_literals83l_OBJC_CLASS_NAME_: ; @OBJC_CLASS_NAME_84 .asciz "ZeroGen"85 86 .section __TEXT,__objc_methname,cstring_literals87l_OBJC_METH_VAR_NAME_: ; @OBJC_METH_VAR_NAME_88 .asciz "classZero"89 90 .section __TEXT,__objc_methtype,cstring_literals91l_OBJC_METH_VAR_TYPE_: ; @OBJC_METH_VAR_TYPE_92 .asciz "i16@0:8"93 94 .section __DATA,__objc_const95 .p2align 3 ; @"_OBJC_$_CLASS_METHODS_ZeroGen"96__OBJC_$_CLASS_METHODS_ZeroGen:97 .long 24 ; 0x1898 .long 1 ; 0x199 .quad l_OBJC_METH_VAR_NAME_100 .quad l_OBJC_METH_VAR_TYPE_101 .quad "+[ZeroGen classZero]"102 103 .p2align 3 ; @"_OBJC_METACLASS_RO_$_ZeroGen"104__OBJC_METACLASS_RO_$_ZeroGen:105 .long 1 ; 0x1106 .long 40 ; 0x28107 .long 40 ; 0x28108 .space 4109 .quad 0110 .quad l_OBJC_CLASS_NAME_111 .quad __OBJC_$_CLASS_METHODS_ZeroGen112 .quad 0113 .quad 0114 .quad 0115 .quad 0116 117 .section __DATA,__objc_data118 .globl _OBJC_METACLASS_$_ZeroGen ; @"OBJC_METACLASS_$_ZeroGen"119 .p2align 3120_OBJC_METACLASS_$_ZeroGen:121 .quad _OBJC_METACLASS_$_NSObject122 .quad _OBJC_METACLASS_$_NSObject123 .quad __objc_empty_cache124 .quad 0125 .quad __OBJC_METACLASS_RO_$_ZeroGen126 127 .section __TEXT,__objc_methname,cstring_literals128l_OBJC_METH_VAR_NAME_.1: ; @OBJC_METH_VAR_NAME_.1129 .asciz "objZero"130 131 .section __DATA,__objc_const132 .p2align 3 ; @"_OBJC_$_INSTANCE_METHODS_ZeroGen"133__OBJC_$_INSTANCE_METHODS_ZeroGen:134 .long 24 ; 0x18135 .long 1 ; 0x1136 .quad l_OBJC_METH_VAR_NAME_.1137 .quad l_OBJC_METH_VAR_TYPE_138 .quad "-[ZeroGen objZero]"139 140 .p2align 3 ; @"_OBJC_CLASS_RO_$_ZeroGen"141__OBJC_CLASS_RO_$_ZeroGen:142 .long 0 ; 0x0143 .long 8 ; 0x8144 .long 8 ; 0x8145 .space 4146 .quad 0147 .quad l_OBJC_CLASS_NAME_148 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen149 .quad 0150 .quad 0151 .quad 0152 .quad 0153 154 .section __DATA,__objc_data155 .globl _OBJC_CLASS_$_ZeroGen ; @"OBJC_CLASS_$_ZeroGen"156 .p2align 3157_OBJC_CLASS_$_ZeroGen:158 .quad _OBJC_METACLASS_$_ZeroGen159 .quad _OBJC_CLASS_$_NSObject160 .quad __objc_empty_cache161 .quad 0162 .quad __OBJC_CLASS_RO_$_ZeroGen163 164 .section __DATA,__objc_classrefs,regular,no_dead_strip165 .p2align 3 ; @"OBJC_CLASSLIST_REFERENCES_$_"166_OBJC_CLASSLIST_REFERENCES_$_:167 .quad _OBJC_CLASS_$_ZeroGen168 169 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip170 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_171_OBJC_SELECTOR_REFERENCES_:172 .quad l_OBJC_METH_VAR_NAME_173 174 .p2align 3 ; @OBJC_SELECTOR_REFERENCES_.2175_OBJC_SELECTOR_REFERENCES_.2:176 .quad l_OBJC_METH_VAR_NAME_.1177 178 .section __DATA,__objc_classlist,regular,no_dead_strip179 .p2align 3 ; @"OBJC_LABEL_CLASS_$"180l_OBJC_LABEL_CLASS_$:181 .quad _OBJC_CLASS_$_ZeroGen182 183 .section __DATA,__objc_imageinfo,regular,no_dead_strip184L_OBJC_IMAGE_INFO:185 .long 0186 .long 64187 188.subsections_via_symbols189