1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// 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.
//
// RUN: %clang -c -o %t %s
// RUN: %llvm_jitlink %t
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 12, 0 sdk_version 12, 0
.globl _main ; -- Begin function main
.p2align 2
_main: ; @main
.cfi_startproc
; %bb.0:
sub sp, sp, #32 ; =32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16 ; =16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
adrp x0, _x@TLVPPAGE
ldr x0, [x0, _x@TLVPPAGEOFF]
ldr x8, [x0]
blr x8
mov x8, x0
adrp x0, _y@TLVPPAGE
ldr x0, [x0, _y@TLVPPAGEOFF]
ldr x9, [x0]
blr x9
mov x9, x0
adrp x0, _z@TLVPPAGE
ldr x0, [x0, _z@TLVPPAGEOFF]
ldr x10, [x0]
blr x10
stur wzr, [x29, #-4]
ldr w8, [x8]
ldr w9, [x9]
add w8, w8, w9
ldr w9, [x0]
add w0, w8, w9
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32 ; =32
ret
.cfi_endproc
; -- End function
.tbss _x$tlv$init, 4, 2 ; @x
.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
_y$tlv$init:
.long 4294967295 ; 0xffffffff
.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
_z$tlv$init:
.long 1 ; 0x1
.section __DATA,__thread_vars,thread_local_variables
.globl _z
_z:
.quad __tlv_bootstrap
.quad 0
.quad _z$tlv$init
.subsections_via_symbols
|