1// RUN: %clang -c -o %t %s
2// RUN: %llvm_jitlink %t
3//
4// Test that basic MachO TLVs work by adding together TLVs with values
5// 0, 1, and -1, and returning the result (0 for success). This setup
6// tests both zero-initialized (__thread_bss) and non-zero-initialized
7// (__thread_data) secitons.
8
9 .section __TEXT,__text,regular,pure_instructions
10 .build_version macos, 11, 0
11
12 .globl _main
13 .p2align 4, 0x90
14_main:
15 pushq %rax
16 movq _x@TLVP(%rip), %rdi
17 callq *(%rdi)
18 movq %rax, %rcx
19 movq _y@TLVP(%rip), %rdi
20 callq *(%rdi)
21 movl (%rax), %edx
22 addl (%rcx), %edx
23 movq _z@TLVP(%rip), %rdi
24 callq *(%rdi)
25 addl (%rax), %edx
26 movl %edx, %eax
27 popq %rcx
28 retq
29
30.tbss _x$tlv$init, 4, 2
31
32 .section __DATA,__thread_vars,thread_local_variables
33 .globl _x
34_x:
35 .quad __tlv_bootstrap
36 .quad 0
37 .quad _x$tlv$init
38
39 .section __DATA,__thread_data,thread_local_regular
40 .p2align 2
41_y$tlv$init:
42 .long 4294967295
43
44 .section __DATA,__thread_vars,thread_local_variables
45 .globl _y
46_y:
47 .quad __tlv_bootstrap
48 .quad 0
49 .quad _y$tlv$init
50
51 .section __DATA,__thread_data,thread_local_regular
52 .p2align 2
53_z$tlv$init:
54 .long 1
55
56 .section __DATA,__thread_vars,thread_local_variables
57 .globl _z
58_z:
59 .quad __tlv_bootstrap
60 .quad 0
61 .quad _z$tlv$init
62
63.subsections_via_symbols
64

source code of compiler-rt/test/orc/TestCases/Darwin/x86-64/trivial-tlv.S