// RUN: %clang -c -o %t %s
// RUN: %llvm_jitlink %t
//
// Test that basic MachO TLVs work by adding together TLVs with values
// 0, 1, and -1, and returning the result (0 for success). This setup
// tests both zero-initialized (__thread_bss) and non-zero-initialized
// (__thread_data) secitons.
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 11, 0
.globl _main
.p2align 4, 0x90
_main:
pushq %rax
movq _x@TLVP(%rip), %rdi
callq *(%rdi)
movq %rax, %rcx
movq _y@TLVP(%rip), %rdi
callq *(%rdi)
movl (%rax), %edx
addl (%rcx), %edx
movq _z@TLVP(%rip), %rdi
callq *(%rdi)
addl (%rax), %edx
movl %edx, %eax
popq %rcx
retq
.tbss _x$tlv$init, 4, 2
.section __DATA,__thread_vars,thread_local_variables
.globl _x
_x:
.quad __tlv_bootstrap
.quad 0
.quad _x$tlv$init
.section __DATA,__thread_data,thread_local_regular
.p2align 2
_y$tlv$init:
.long 4294967295
.section __DATA,__thread_vars,thread_local_variables
.globl _y
_y:
.quad __tlv_bootstrap
.quad 0
.quad _y$tlv$init
.section __DATA,__thread_data,thread_local_regular
.p2align 2
_z$tlv$init:
.long 1
.section __DATA,__thread_vars,thread_local_variables
.globl _z
_z:
.quad __tlv_bootstrap
.quad 0
.quad _z$tlv$init
.subsections_via_symbols