[Object][WebAssembly] Fix data segment offsets higher than 2^31 (#125739)
[llvm-project.git] / compiler-rt / test / orc / TestCases / Darwin / x86-64 / trivial-objc-methods.S
blob36569b5d2e70ab20cef2313fd8a1b862a4dcb542
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.
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
18         .p2align        4, 0x90
19 "+[ZeroGen classZero]":
20         pushq   %rbp
21         movq    %rsp, %rbp
22         xorl    %eax, %eax
23         popq    %rbp
24         retq
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
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
53         .section        __TEXT,__objc_classname,cstring_literals
54 L_OBJC_CLASS_NAME_:
55         .asciz  "ZeroGen"
57         .section        __TEXT,__objc_methname,cstring_literals
58 L_OBJC_METH_VAR_NAME_:
59         .asciz  "classZero"
61         .section        __TEXT,__objc_methtype,cstring_literals
62 L_OBJC_METH_VAR_TYPE_:
63         .asciz  "i16@0:8"
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]"
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
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
98         .section        __TEXT,__objc_methname,cstring_literals
99 L_OBJC_METH_VAR_NAME_.1:
100         .asciz  "objZero"
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]"
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
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
135         .section        __DATA,__objc_classrefs,regular,no_dead_strip
136         .p2align        3
137 _OBJC_CLASSLIST_REFERENCES_$_:
138         .quad   _OBJC_CLASS_$_ZeroGen
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
145         .p2align        3
146 _OBJC_SELECTOR_REFERENCES_.2:
147         .quad   L_OBJC_METH_VAR_NAME_
149         .section        __DATA,__objc_classlist,regular,no_dead_strip
150         .p2align        3
151 L_OBJC_LABEL_CLASS_$:
152         .quad   _OBJC_CLASS_$_ZeroGen
154         .section        __DATA,__objc_imageinfo,regular,no_dead_strip
155 L_OBJC_IMAGE_INFO:
156         .long   0
157         .long   64
159 .subsections_via_symbols