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 |
44 | LBB2_3: |
45 | movl $1, %eax |
46 | popq %rbp |
47 | retq |
48 | LBB2_2: |
49 | xorl %eax, %eax |
50 | popq %rbp |
51 | retq |
52 | |
53 | .section __TEXT,__objc_classname,cstring_literals |
54 | L_OBJC_CLASS_NAME_: |
55 | .asciz "ZeroGen" |
56 | |
57 | .section __TEXT,__objc_methname,cstring_literals |
58 | L_OBJC_METH_VAR_NAME_: |
59 | .asciz "classZero" |
60 | |
61 | .section __TEXT,__objc_methtype,cstring_literals |
62 | L_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 |
99 | L_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 |
151 | L_OBJC_LABEL_CLASS_$: |
152 | .quad _OBJC_CLASS_$_ZeroGen |
153 | |
154 | .section __DATA,__objc_imageinfo,regular,no_dead_strip |
155 | L_OBJC_IMAGE_INFO: |
156 | .long 0 |
157 | .long 64 |
158 | |
159 | .subsections_via_symbols |
160 | |