1// RUN: %clang -c -o %t %s 2// RUN: %llvm_jitlink -preload libobjc.A.dylib %t 3// 4// REQUIRES: jit-compatible-osx-swift-runtime 5// 6// Test that Objective-C class and instance methods work. 7 8 .section __TEXT,__text,regular,pure_instructions 9 .build_version macos, 11, 0 sdk_version 11, 5 10 .p2align 4, 0x90 11"-[ZeroGen objZero]": 12 pushq %rbp 13 movq %rsp, %rbp 14 xorl %eax, %eax 15 popq %rbp 16 retq 17 18 .p2align 4, 0x90 19"+[ZeroGen classZero]": 20 pushq %rbp 21 movq %rsp, %rbp 22 xorl %eax, %eax 23 popq %rbp 24 retq 25 26 .globl _main 27 .p2align 4, 0x90 28_main: 29 pushq %rbp 30 movq %rsp, %rbp 31 movq _OBJC_CLASSLIST_REFERENCES_$_(%rip), %rdi 32 callq _objc_alloc_init 33 movq _OBJC_SELECTOR_REFERENCES_(%rip), %rsi 34 movq %rax, %rdi 35 callq *_objc_msgSend@GOTPCREL(%rip) 36 testl %eax, %eax 37 jne LBB2_3 38 39 movq _OBJC_CLASSLIST_REFERENCES_$_(%rip), %rdi 40 movq _OBJC_SELECTOR_REFERENCES_.2(%rip), %rsi 41 callq *_objc_msgSend@GOTPCREL(%rip) 42 testl %eax, %eax 43 je LBB2_2 44LBB2_3: 45 movl $1, %eax 46 popq %rbp 47 retq 48LBB2_2: 49 xorl %eax, %eax 50 popq %rbp 51 retq 52 53 .section __TEXT,__objc_classname,cstring_literals 54L_OBJC_CLASS_NAME_: 55 .asciz "ZeroGen" 56 57 .section __TEXT,__objc_methname,cstring_literals 58L_OBJC_METH_VAR_NAME_: 59 .asciz "classZero" 60 61 .section __TEXT,__objc_methtype,cstring_literals 62L_OBJC_METH_VAR_TYPE_: 63 .asciz "i16@0:8" 64 65 .section __DATA,__objc_const 66 .p2align 3 67__OBJC_$_CLASS_METHODS_ZeroGen: 68 .long 24 69 .long 1 70 .quad L_OBJC_METH_VAR_NAME_ 71 .quad L_OBJC_METH_VAR_TYPE_ 72 .quad "+[ZeroGen classZero]" 73 74 .p2align 3 75__OBJC_METACLASS_RO_$_ZeroGen: 76 .long 1 77 .long 40 78 .long 40 79 .space 4 80 .quad 0 81 .quad L_OBJC_CLASS_NAME_ 82 .quad __OBJC_$_CLASS_METHODS_ZeroGen 83 .quad 0 84 .quad 0 85 .quad 0 86 .quad 0 87 88 .section __DATA,__objc_data 89 .globl _OBJC_METACLASS_$_ZeroGen 90 .p2align 3 91_OBJC_METACLASS_$_ZeroGen: 92 .quad _OBJC_METACLASS_$_NSObject 93 .quad _OBJC_METACLASS_$_NSObject 94 .quad __objc_empty_cache 95 .quad 0 96 .quad __OBJC_METACLASS_RO_$_ZeroGen 97 98 .section __TEXT,__objc_methname,cstring_literals 99L_OBJC_METH_VAR_NAME_.1: 100 .asciz "objZero" 101 102 .section __DATA,__objc_const 103 .p2align 3 104__OBJC_$_INSTANCE_METHODS_ZeroGen: 105 .long 24 106 .long 1 107 .quad L_OBJC_METH_VAR_NAME_.1 108 .quad L_OBJC_METH_VAR_TYPE_ 109 .quad "-[ZeroGen objZero]" 110 111 .p2align 3 112__OBJC_CLASS_RO_$_ZeroGen: 113 .long 0 114 .long 8 115 .long 8 116 .space 4 117 .quad 0 118 .quad L_OBJC_CLASS_NAME_ 119 .quad __OBJC_$_INSTANCE_METHODS_ZeroGen 120 .quad 0 121 .quad 0 122 .quad 0 123 .quad 0 124 125 .section __DATA,__objc_data 126 .globl _OBJC_CLASS_$_ZeroGen 127 .p2align 3 128_OBJC_CLASS_$_ZeroGen: 129 .quad _OBJC_METACLASS_$_ZeroGen 130 .quad _OBJC_CLASS_$_NSObject 131 .quad __objc_empty_cache 132 .quad 0 133 .quad __OBJC_CLASS_RO_$_ZeroGen 134 135 .section __DATA,__objc_classrefs,regular,no_dead_strip 136 .p2align 3 137_OBJC_CLASSLIST_REFERENCES_$_: 138 .quad _OBJC_CLASS_$_ZeroGen 139 140 .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip 141 .p2align 3 142_OBJC_SELECTOR_REFERENCES_: 143 .quad L_OBJC_METH_VAR_NAME_.1 144 145 .p2align 3 146_OBJC_SELECTOR_REFERENCES_.2: 147 .quad L_OBJC_METH_VAR_NAME_ 148 149 .section __DATA,__objc_classlist,regular,no_dead_strip 150 .p2align 3 151L_OBJC_LABEL_CLASS_$: 152 .quad _OBJC_CLASS_$_ZeroGen 153 154 .section __DATA,__objc_imageinfo,regular,no_dead_strip 155L_OBJC_IMAGE_INFO: 156 .long 0 157 .long 64 158 159.subsections_via_symbols 160