]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/arm-tls-ldm32.s
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / ELF / arm-tls-ldm32.s
1 // REQUIRES: arm
2 // RUN: llvm-mc %s -o %t.o -filetype=obj -triple=armv7a-linux-gnueabi
3 // RUN: ld.lld --hash-style=sysv %t.o -o %t.so -shared
4 // RUN: llvm-readobj -s -dyn-relocations %t.so | FileCheck --check-prefix=SEC %s
5 // RUN: llvm-objdump -d -triple=armv7a-linux-gnueabi %t.so | FileCheck %s
6
7 // Test the handling of the local-dynamic TLS model. Dynamic loader finds
8 // module index R_ARM_TLS_DTPMOD32. The offset in the next GOT slot is 0
9 // The R_ARM_TLS_LDO is the offset of the variable within the TLS block.
10  .global __tls_get_addr
11  .text
12  .p2align  2
13  .global _start
14  .syntax unified
15  .arm
16  .type   _start, %function
17 _start:
18 .L0:
19  nop
20
21  .word   x(tlsldm) + (. - .L0 - 8)
22  .word   x(tlsldo)
23  .word   y(tlsldo)
24
25  .section        .tbss,"awT",%nobits
26  .p2align  2
27  .type   y, %object
28 y:
29  .space  4
30  .section        .tdata,"awT",%progbits
31  .p2align  2
32  .type   x, %object
33 x:
34  .word   10
35
36 // SEC:      Name: .tdata
37 // SEC-NEXT: Type: SHT_PROGBITS
38 // SEC-NEXT: Flags [
39 // SEC-NEXT:   SHF_ALLOC
40 // SEC-NEXT:   SHF_TLS
41 // SEC-NEXT:   SHF_WRITE
42 // SEC-NEXT: ]
43 // SEC-NEXT: Address: 0x2000
44 // SEC:    Size: 4
45 // SEC:    Name: .tbss
46 // SEC-NEXT: Type: SHT_NOBITS (0x8)
47 // SEC-NEXT: Flags [
48 // SEC-NEXT:   SHF_ALLOC
49 // SEC-NEXT:   SHF_TLS
50 // SEC-NEXT:   SHF_WRITE
51 // SEC-NEXT: ]
52 // SEC-NEXT: Address: 0x2004
53 // SEC:      Size: 4
54
55 // SEC: Dynamic Relocations {
56 // SEC-NEXT:  0x204C R_ARM_TLS_DTPMOD32 - 0x0
57
58 // CHECK: Disassembly of section .text:
59 // CHECK-NEXT: _start:
60 // CHECK-NEXT: 1000:       00 f0 20 e3     nop
61
62 // (0x204c - 0x1004) + (0x1004 - 0x1000 - 8) = 0x1044
63 // CHECK:      1004:       44 10 00 00
64 // CHECK-NEXT: 1008:       00 00 00 00
65 // CHECK-NEXT: 100c:       04 00 00 00
66
67 // CHECK-EXE: Disassembly of section .text:
68 // CHECK-NEXT-EXE: _start:
69 // CHECK-NEXT-EXE:   11000:       00 f0 20 e3     nop
70
71 // CHECK-EXE:   11004:       fc 0f 00 00
72 // CHECK-EXE:   11008:       00 00 00 00
73 // CHECK-EXE:   1100c:       04 00 00 00