19
19
# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck --check-prefix=IE %s
20
20
21
21
# GD-RELA: .rela.dyn {
22
- # GD-RELA-NEXT: 0x23D0 R_X86_64_TLSDESC - 0xB
23
- # GD-RELA-NEXT: 0x23B0 R_X86_64_TLSDESC a 0x0
24
- # GD-RELA-NEXT: 0x23C0 R_X86_64_TLSDESC c 0x0
22
+ # GD-RELA-NEXT: 0x23E0 R_X86_64_TLSDESC - 0xB
23
+ # GD-RELA-NEXT: 0x23C0 R_X86_64_TLSDESC a 0x0
24
+ # GD-RELA-NEXT: 0x23D0 R_X86_64_TLSDESC c 0x0
25
25
# GD-RELA-NEXT: }
26
26
# GD-RELA: Hex dump of section '.got':
27
- # GD-RELA-NEXT: 0x000023b0 00000000 00000000 00000000 00000000
28
27
# GD-RELA-NEXT: 0x000023c0 00000000 00000000 00000000 00000000
29
28
# GD-RELA-NEXT: 0x000023d0 00000000 00000000 00000000 00000000
29
+ # GD-RELA-NEXT: 0x000023e0 00000000 00000000 00000000 00000000
30
30
31
31
# GD-REL: .rel.dyn {
32
- # GD-REL-NEXT: 0x23B8 R_X86_64_TLSDESC -
33
- # GD-REL-NEXT: 0x2398 R_X86_64_TLSDESC a
34
- # GD-REL-NEXT: 0x23A8 R_X86_64_TLSDESC c
32
+ # GD-REL-NEXT: 0x23C8 R_X86_64_TLSDESC -
33
+ # GD-REL-NEXT: 0x23A8 R_X86_64_TLSDESC a
34
+ # GD-REL-NEXT: 0x23B8 R_X86_64_TLSDESC c
35
35
# GD-REL-NEXT: }
36
36
# GD-REL: Hex dump of section '.got':
37
- # GD-REL-NEXT: 0x00002398 00000000 00000000 00000000 00000000
38
37
# GD-REL-NEXT: 0x000023a8 00000000 00000000 00000000 00000000
39
- # GD-REL-NEXT: 0x000023b8 00000000 00000000 0b000000 00000000
38
+ # GD-REL-NEXT: 0x000023b8 00000000 00000000 00000000 00000000
39
+ # GD-REL-NEXT: 0x000023c8 00000000 00000000 0b000000 00000000
40
40
41
- ## &.rela.dyn[a]-pc = 0x23B0 -0x12e7 = 4297
42
- # GD: leaq 4297 (%rip), %rax
41
+ ## &.rela.dyn[a]-pc = 0x23C0 -0x12e7 = 4313
42
+ # GD: leaq 4313 (%rip), %rax
43
43
# GD-NEXT: 12e7: callq *(%rax)
44
44
# GD-NEXT: movl %fs:(%rax), %eax
45
45
46
- ## &.rela.dyn[b]-pc = 0x23D0 -0x12f3 = 4317
47
- # GD-NEXT: leaq 4317 (%rip), %rcx
46
+ ## &.rela.dyn[b]-pc = 0x23E0 -0x12f3 = 4333
47
+ # GD-NEXT: leaq 4333 (%rip), %rcx
48
48
# GD-NEXT: 12f3: movq %rcx, %rax
49
49
# GD-NEXT: callq *(%rax)
50
50
# GD-NEXT: movl %fs:(%rax), %eax
51
51
52
- ## &.rela.dyn[c]-pc = 0x23C0 -0x1302 = 4286
53
- # GD-NEXT: leaq 4286 (%rip), %r15
52
+ ## &.rela.dyn[c]-pc = 0x23D0 -0x1302 = 4302
53
+ # GD-NEXT: leaq 4302 (%rip), %r15
54
54
# GD-NEXT: 1302: movq %r15, %rax
55
55
# GD-NEXT: callq *(%rax)
56
56
# GD-NEXT: movl %fs:(%rax), %eax
57
57
58
+ ## &.rela.dyn[c]-pc = 0x23D0-0x1312 = 4286
59
+ # GD-NEXT: leaq 4286(%rip), %r16
60
+ # GD-NEXT: 1312: movq %r16, %rax
61
+ # GD-NEXT: callq *(%rax)
62
+ # GD-NEXT: movl %fs:(%rax), %eax
63
+
58
64
# NOREL: no relocations
59
65
60
66
## tpoff(a) = st_value(a) - tls_size = -8
71
77
# LE-NEXT: movq %r15, %rax
72
78
# LE-NEXT: nop
73
79
# LE-NEXT: movl %fs:(%rax), %eax
80
+ ## tpoff(c) = st_value(c) - tls_size = -4
81
+ # LE: movq $-4, %r16
82
+ # LE-NEXT: movq %r16, %rax
83
+ # LE-NEXT: nop
84
+ # LE-NEXT: movl %fs:(%rax), %eax
74
85
75
86
# IE-REL: .rela.dyn {
76
- # IE-REL-NEXT: 0x202378 R_X86_64_TPOFF64 c 0x0
87
+ # IE-REL-NEXT: 0x202388 R_X86_64_TPOFF64 c 0x0
77
88
# IE-REL-NEXT: }
78
89
79
90
## a is relaxed to use LE.
84
95
# IE-NEXT: movq %rcx, %rax
85
96
# IE-NEXT: nop
86
97
# IE-NEXT: movl %fs:(%rax), %eax
87
- ## &.rela.dyn[c]-pc = 0x202378 - 0x2012aa = 4302
88
- # IE-NEXT: movq 4302 (%rip), %r15
98
+ ## &.rela.dyn[c]-pc = 0x202388 - 0x2012aa = 4318
99
+ # IE-NEXT: movq 4318 (%rip), %r15
89
100
# IE-NEXT: 2012aa: movq %r15, %rax
90
101
# IE-NEXT: nop
91
102
# IE-NEXT: movl %fs:(%rax), %eax
103
+ ## &.rela.dyn[c]-pc = 0x202388 - 0x2012ba = 4302
104
+ # IE-NEXT: movq 4302(%rip), %r16
105
+ # IE-NEXT: 2012ba: movq %r16, %rax
106
+ # IE-NEXT: nop
107
+ # IE-NEXT: movl %fs:(%rax), %eax
92
108
93
109
leaq a@tlsdesc(%rip ), %rax
94
110
call *a@tlscall(%rax )
@@ -106,6 +122,11 @@ movq %r15, %rax
106
122
call *c@tlscall(%rax )
107
123
movl %fs :(%rax ), %eax
108
124
125
+ leaq c@tlsdesc(%rip ), %r16
126
+ movq %r16, %rax
127
+ call *c@tlscall(%rax )
128
+ movl %fs :(%rax ), %eax
129
+
109
130
.section .tbss
110
131
.globl a
111
132
.zero 8
0 commit comments