|
9 | 9 | # RUN: llvm-readobj -r -x .got a.64.so | FileCheck --check-prefix=GD64-RELA %s
|
10 | 10 | # RUN: llvm-objdump --no-show-raw-insn -dr -h a.64.so | FileCheck %s --check-prefix=GD64
|
11 | 11 |
|
12 |
| -## FIXME: The transition from TLSDESC to IE/LE has not yet been implemented. |
13 |
| -## Keep the dynamic relocations and hand them over to dynamic linker. |
14 |
| - |
15 |
| -# RUN: ld.lld --relax -e 0 -z now a.64.o c.64.o -o a.64.le |
16 |
| -# RUN: llvm-readobj -r -x .got a.64.le | FileCheck --check-prefix=LE64-RELA %s |
17 |
| -# RUN: llvm-objdump --no-show-raw-insn -d -h a.64.le | FileCheck %s --check-prefix=LE64 |
| 12 | +## FIXME: IE/LE relaxation have not yet been implemented, --relax/--no-relax obtain the same results. |
| 13 | +## Transition from TLSDESC to IE/LE. Also check --emit-relocs. |
| 14 | +# RUN: ld.lld -e 0 -z now --emit-relocs a.64.o c.64.o -o a.64.le |
| 15 | +# RUN: llvm-readobj -r -x .got a.64.le 2>&1 | FileCheck --check-prefix=LE64-RELA %s |
| 16 | +# RUN: llvm-objdump --no-show-raw-insn -dr -h a.64.le | FileCheck %s --check-prefix=LE64 |
18 | 17 |
|
19 | 18 | # RUN: ld.lld --no-relax -e 0 -z now a.64.o c.64.o -o a.64.le.norelax
|
20 | 19 | # RUN: llvm-objdump --no-show-raw-insn -d -h a.64.le.norelax | FileCheck %s --check-prefix=LE64-NORELAX
|
21 | 20 |
|
22 |
| -# RUN: ld.lld --relax -e 0 -z now a.64.o c.64.so -o a.64.ie |
| 21 | +# RUN: ld.lld --relax -e 0 -z now --emit-relocs a.64.o c.64.so -o a.64.ie |
23 | 22 | # RUN: llvm-readobj -r -x .got a.64.ie | FileCheck --check-prefix=IE64-RELA %s
|
24 |
| -# RUN: llvm-objdump --no-show-raw-insn -d -h a.64.ie | FileCheck %s --check-prefix=IE64 |
| 23 | +# RUN: llvm-objdump --no-show-raw-insn -dr -h a.64.ie | FileCheck %s --check-prefix=IE64 |
25 | 24 |
|
26 | 25 | # RUN: ld.lld --no-relax -e 0 -z now a.64.o c.64.so -o a.64.ie.norelax
|
27 | 26 | # RUN: llvm-objdump --no-show-raw-insn -d -h a.64.ie.norelax | FileCheck %s --check-prefix=IE64-NORELAX
|
|
71 | 70 | # GD64-NEXT: jirl $ra, $ra, 0
|
72 | 71 | # GD64-NEXT: add.d $a4, $a0, $tp
|
73 | 72 |
|
74 |
| -# LE64-RELA: .rela.dyn { |
75 |
| -# LE64-RELA-NEXT: 0x30280 R_LARCH_TLS_DESC64 - 0x8 |
76 |
| -# LE64-RELA-NEXT: 0x30290 R_LARCH_TLS_DESC64 - 0x800 |
77 |
| -# LE64-RELA-NEXT: 0x302A0 R_LARCH_TLS_DESC64 - 0x1000 |
78 |
| -# LE64-RELA-NEXT: 0x302B0 R_LARCH_TLS_DESC64 - 0x7FF |
79 |
| -# LE64-RELA-NEXT: } |
80 |
| -# LE64-RELA: Hex dump of section '.got': |
81 |
| -# LE64-RELA-NEXT: 0x00030280 00000000 00000000 00000000 00000000 . |
82 |
| -# LE64-RELA-NEXT: 0x00030290 00000000 00000000 00000000 00000000 . |
83 |
| -# LE64-RELA-NEXT: 0x000302a0 00000000 00000000 00000000 00000000 . |
84 |
| -# LE64-RELA-NEXT: 0x000302b0 00000000 00000000 00000000 00000000 . |
85 |
| - |
86 |
| -# LE64: .got 00000040 0000000000030280 |
87 |
| - |
88 |
| -## &.got[a]-. = 0x30280 - 0x20228 = 16406<<2 |
89 |
| -# LE64: 20228: pcaddi $a0, 16406 |
90 |
| -# LE64-NEXT: ld.d $ra, $a0, 0 |
91 |
| -# LE64-NEXT: jirl $ra, $ra, 0 |
| 73 | +# LE64-RELA: could not find section '.got' |
| 74 | + |
| 75 | +## a@tprel = 0x8 |
| 76 | +# LE64: 20158: nop |
| 77 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 a |
| 78 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 79 | +# LE64-NEXT: nop |
| 80 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 a |
| 81 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 82 | +# LE64-NEXT: nop |
| 83 | +# LE64-NEXT: R_LARCH_TLS_DESC_LD a |
| 84 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 85 | +# LE64-NEXT: ori $a0, $zero, 8 |
| 86 | +# LE64-NEXT: R_LARCH_TLS_DESC_CALL a |
| 87 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
92 | 88 | # LE64-NEXT: add.d $a1, $a0, $tp
|
93 | 89 |
|
94 |
| -## &.got[b]-. = 0x30280+48 - 0x20238: 0x10 pages, page offset 0x2b0 |
95 |
| -## R_LARCH_RELAX does not appear in pairs. No relaxation. |
96 |
| -# LE64: 20238: pcalau12i $a0, 16 |
97 |
| -# LE64-NEXT: addi.d $a0, $a0, 688 |
98 |
| -# LE64-NEXT: ld.d $ra, $a0, 0 |
99 |
| -# LE64-NEXT: jirl $ra, $ra, 0 |
| 90 | +## b@tprel = 0x7ff |
| 91 | +# LE64: 2016c: nop |
| 92 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 b |
| 93 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 94 | +# LE64-NEXT: nop |
| 95 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 b |
| 96 | +# LE64-NEXT: nop |
| 97 | +# LE64-NEXT: R_LARCH_TLS_DESC_LD b |
| 98 | +# LE64-NEXT: ori $a0, $zero, 2047 |
| 99 | +# LE64-NEXT: R_LARCH_TLS_DESC_CALL b |
100 | 100 | # LE64-NEXT: add.d $a2, $a0, $tp
|
101 | 101 |
|
102 |
| -## &.got[c]-. = 0x30280+16 - 0x2024c: 0x10 pages, page offset 0x290 |
| 102 | +## c@tprel = 0x800 |
103 | 103 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
104 |
| -# LE64: 2024c: pcalau12i $a0, 16 |
| 104 | +# LE64: 20180: nop |
| 105 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 c |
105 | 106 | # LE64-NEXT: addi.d $t0, $zero, 0
|
106 |
| -# LE64-NEXT: addi.d $a0, $a0, 656 |
| 107 | +# LE64-NEXT: nop |
| 108 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 c |
107 | 109 | # LE64-NEXT: addi.d $t0, $t0, 1
|
108 |
| -# LE64-NEXT: ld.d $ra, $a0, 0 |
| 110 | +# LE64-NEXT: nop |
| 111 | +# LE64-NEXT: R_LARCH_TLS_DESC_LD c |
109 | 112 | # LE64-NEXT: addi.d $t0, $t0, 1
|
110 |
| -# LE64-NEXT: jirl $ra, $ra, 0 |
| 113 | +# LE64-NEXT: ori $a0, $zero, 2048 |
| 114 | +# LE64-NEXT: R_LARCH_TLS_DESC_CALL c |
111 | 115 | # LE64-NEXT: add.d $a3, $a0, $tp
|
112 | 116 |
|
113 |
| -## &.got[d]-. = 0x30280+32 - 0x2026c = 16397<<2 |
114 |
| -# LE64: 2026c: pcaddi $a0, 16397 |
115 |
| -# LE64-NEXT: ld.d $ra, $a0, 0 |
116 |
| -# LE64-NEXT: jirl $ra, $ra, 0 |
| 117 | +## d@tprel = 0x1000 |
| 118 | +# LE64: 201a0: nop |
| 119 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 d |
| 120 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 121 | +# LE64-NEXT: nop |
| 122 | +# LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 d |
| 123 | +# LE64-NEXT: R_LARCH_RELAX *ABS* |
| 124 | +# LE64-NEXT: lu12i.w $a0, 1 |
| 125 | +# LE64-NEXT: R_LARCH_TLS_DESC_LD d |
| 126 | +# LE64-NEXT: ori $a0, $a0, 0 |
| 127 | +# LE64-NEXT: R_LARCH_TLS_DESC_CALL d |
117 | 128 | # LE64-NEXT: add.d $a4, $a0, $tp
|
118 | 129 |
|
119 |
| -# LE64-NORELAX: .got 00000040 0000000000030288 |
120 |
| - |
121 |
| -## &.got[a]-. = 0x30288 - 0x20228 = 0x10 pages, page offset 0x288 |
122 |
| -# LE64-NORELAX: 20228: pcalau12i $a0, 16 |
123 |
| -# LE64-NORELAX-NEXT: addi.d $a0, $a0, 648 |
124 |
| -# LE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
125 |
| -# LE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 130 | +## a@tprel = 0x8 |
| 131 | +# LE64-NORELAX: 20158: nop |
| 132 | +# LE64-NORELAX-NEXT: nop |
| 133 | +# LE64-NORELAX-NEXT: nop |
| 134 | +# LE64-NORELAX-NEXT: ori $a0, $zero, 8 |
126 | 135 | # LE64-NORELAX-NEXT: add.d $a1, $a0, $tp
|
127 | 136 |
|
128 |
| -## &.got[b]-. = 0x30288+48 - 0x2023c: 0x10 pages, page offset 0x2b8 |
129 |
| -## R_LARCH_RELAX does not appear in pairs. No relaxation. |
130 |
| -# LE64-NORELAX: 2023c: pcalau12i $a0, 16 |
131 |
| -# LE64-NORELAX-NEXT: addi.d $a0, $a0, 696 |
132 |
| -# LE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
133 |
| -# LE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 137 | +## b@tprel = 0x7ff |
| 138 | +# LE64-NORELAX: 2016c: nop |
| 139 | +# LE64-NORELAX-NEXT: nop |
| 140 | +# LE64-NORELAX-NEXT: nop |
| 141 | +# LE64-NORELAX-NEXT: ori $a0, $zero, 2047 |
134 | 142 | # LE64-NORELAX-NEXT: add.d $a2, $a0, $tp
|
135 | 143 |
|
136 |
| -## &.got[c]-. = 0x30288+16 - 0x20250: 0x10 pages, page offset 0x298 |
| 144 | +## c@tprel = 0x800 |
137 | 145 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
138 |
| -# LE64-NORELAX: 20250: pcalau12i $a0, 16 |
| 146 | +# LE64-NORELAX: 20180: nop |
139 | 147 | # LE64-NORELAX-NEXT: addi.d $t0, $zero, 0
|
140 |
| -# LE64-NORELAX-NEXT: addi.d $a0, $a0, 664 |
| 148 | +# LE64-NORELAX-NEXT: nop |
141 | 149 | # LE64-NORELAX-NEXT: addi.d $t0, $t0, 1
|
142 |
| -# LE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
| 150 | +# LE64-NORELAX-NEXT: nop |
143 | 151 | # LE64-NORELAX-NEXT: addi.d $t0, $t0, 1
|
144 |
| -# LE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 152 | +# LE64-NORELAX-NEXT: ori $a0, $zero, 2048 |
145 | 153 | # LE64-NORELAX-NEXT: add.d $a3, $a0, $tp
|
146 | 154 |
|
147 |
| -## &.got[d]-. = 0x30288+32 - 0x20270: 0x10 pages, page offset 0x2a8 |
148 |
| -# LE64-NORELAX: 20270: pcalau12i $a0, 16 |
149 |
| -# LE64-NORELAX-NEXT: addi.d $a0, $a0, 680 |
150 |
| -# LE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
151 |
| -# LE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 155 | +## d@tprel = 0x1000 |
| 156 | +# LE64-NORELAX: 201a0: nop |
| 157 | +# LE64-NORELAX-NEXT: nop |
| 158 | +# LE64-NORELAX-NEXT: lu12i.w $a0, 1 |
| 159 | +# LE64-NORELAX-NEXT: ori $a0, $a0, 0 |
152 | 160 | # LE64-NORELAX-NEXT: add.d $a4, $a0, $tp
|
153 | 161 |
|
154 | 162 | # IE64-RELA: .rela.dyn {
|
155 |
| -# IE64-RELA-NEXT: 0x30430 R_LARCH_TLS_DESC64 - 0x8 |
156 |
| -# IE64-RELA-NEXT: 0x30460 R_LARCH_TLS_DESC64 - 0x7FF |
157 |
| -# IE64-RELA-NEXT: 0x30440 R_LARCH_TLS_DESC64 c 0x0 |
158 |
| -# IE64-RELA-NEXT: 0x30450 R_LARCH_TLS_DESC64 d 0x0 |
| 163 | +# IE64-RELA-NEXT: 0x30408 R_LARCH_TLS_TPREL64 c 0x0 |
| 164 | +# IE64-RELA-NEXT: 0x30410 R_LARCH_TLS_TPREL64 d 0x0 |
159 | 165 | # IE64-RELA-NEXT: }
|
160 | 166 | # IE64-RELA: Hex dump of section '.got':
|
161 |
| -# IE64-RELA-NEXT: 0x00030430 00000000 00000000 00000000 00000000 . |
162 |
| -# IE64-RELA-NEXT: 0x00030440 00000000 00000000 00000000 00000000 . |
163 |
| -# IE64-RELA-NEXT: 0x00030450 00000000 00000000 00000000 00000000 . |
164 |
| -# IE64-RELA-NEXT: 0x00030460 00000000 00000000 00000000 00000000 . |
| 167 | +# IE64-RELA-NEXT: 0x00030408 00000000 00000000 00000000 00000000 . |
165 | 168 |
|
166 |
| -# IE64: .got 00000040 0000000000030430 |
| 169 | +# IE64: .got 00000010 0000000000030408 |
167 | 170 |
|
168 | 171 | ## a and b are optimized to use LE. c and d are optimized to IE.
|
169 |
| -## &.got[a]-. = 0x30430 - 0x202f8 = 16462<<2 |
170 |
| -# IE64: 202f8: pcaddi $a0, 16462 |
171 |
| -# IE64-NEXT: ld.d $ra, $a0, 0 |
172 |
| -# IE64-NEXT: jirl $ra, $ra, 0 |
| 172 | +## a@tprel = 0x8 |
| 173 | +# IE64: 202c8: nop |
| 174 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 a |
| 175 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 176 | +# IE64-NEXT: nop |
| 177 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 a |
| 178 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 179 | +# IE64-NEXT: nop |
| 180 | +# IE64-NEXT: R_LARCH_TLS_DESC_LD a |
| 181 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 182 | +# IE64-NEXT: ori $a0, $zero, 8 |
| 183 | +# IE64-NEXT: R_LARCH_TLS_DESC_CALL a |
| 184 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
173 | 185 | # IE64-NEXT: add.d $a1, $a0, $tp
|
174 | 186 |
|
175 |
| -## &.got[b]-. = 0x30430+48 - 0x20308: 0x10 pages, page offset 0x460 |
176 |
| -## R_LARCH_RELAX does not appear in pairs. No relaxation. |
177 |
| -# IE64: 20308: pcalau12i $a0, 16 |
178 |
| -# IE64-NEXT: addi.d $a0, $a0, 1120 |
179 |
| -# IE64-NEXT: ld.d $ra, $a0, 0 |
180 |
| -# IE64-NEXT: jirl $ra, $ra, 0 |
| 187 | +## b@tprel = 0x7ff |
| 188 | +# IE64: 202dc: nop |
| 189 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 b |
| 190 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 191 | +# IE64-NEXT: nop |
| 192 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 b |
| 193 | +# IE64-NEXT: nop |
| 194 | +# IE64-NEXT: R_LARCH_TLS_DESC_LD b |
| 195 | +# IE64-NEXT: ori $a0, $zero, 2047 |
| 196 | +# IE64-NEXT: R_LARCH_TLS_DESC_CALL b |
181 | 197 | # IE64-NEXT: add.d $a2, $a0, $tp
|
182 | 198 |
|
183 |
| -## &.got[c]-. = 0x30430+16 - 0x2031c: 0x10 pages, page offset 0x440 |
| 199 | +## &.got[c]-. = 0x30408 - 0x20300: 0x10 pages, page offset 0x408 |
184 | 200 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
185 |
| -# IE64: 2031c: pcalau12i $a0, 16 |
| 201 | +# IE64: 202f0: nop |
| 202 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 c |
186 | 203 | # IE64-NEXT: addi.d $t0, $zero, 0
|
187 |
| -# IE64-NEXT: addi.d $a0, $a0, 1088 |
| 204 | +# IE64-NEXT: nop |
| 205 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 c |
188 | 206 | # IE64-NEXT: addi.d $t0, $t0, 1
|
189 |
| -# IE64-NEXT: ld.d $ra, $a0, 0 |
| 207 | +# IE64-NEXT: pcalau12i $a0, 16 |
| 208 | +# IE64-NEXT: R_LARCH_TLS_DESC_LD c |
190 | 209 | # IE64-NEXT: addi.d $t0, $t0, 1
|
191 |
| -# IE64-NEXT: jirl $ra, $ra, 0 |
| 210 | +# IE64-NEXT: ld.d $a0, $a0, 1032 |
| 211 | +# IE64-NEXT: R_LARCH_TLS_DESC_CALL c |
192 | 212 | # IE64-NEXT: add.d $a3, $a0, $tp
|
193 | 213 |
|
194 |
| -## &.got[d]-. = 0x30430+32 - 0x2033c = 16453<<2 |
195 |
| -# IE64: 2033c: pcaddi $a0, 16453 |
196 |
| -# IE64-NEXT: ld.d $ra, $a0, 0 |
197 |
| -# IE64-NEXT: jirl $ra, $ra, 0 |
| 214 | +## &.got[d]-. = 0x30408+8 - 0x20318: 0x10 pages, page offset 0x410 |
| 215 | +# IE64: 20310: nop |
| 216 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 d |
| 217 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 218 | +# IE64-NEXT: nop |
| 219 | +# IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 d |
| 220 | +# IE64-NEXT: R_LARCH_RELAX *ABS* |
| 221 | +# IE64-NEXT: pcalau12i $a0, 16 |
| 222 | +# IE64-NEXT: R_LARCH_TLS_DESC_LD d |
| 223 | +# IE64-NEXT: ld.d $a0, $a0, 1040 |
| 224 | +# IE64-NEXT: R_LARCH_TLS_DESC_CALL d |
198 | 225 | # IE64-NEXT: add.d $a4, $a0, $tp
|
199 | 226 |
|
200 |
| -# IE64-NORELAX: .got 00000040 0000000000030438 |
| 227 | +# IE64-NORELAX: .got 00000010 0000000000030408 |
201 | 228 |
|
202 |
| -## &.got[a]-. = 0x30438 - 0x202f8 = 0x10 pages, page offset 0x438 |
203 |
| -# IE64-NORELAX: 202f8: pcalau12i $a0, 16 |
204 |
| -# IE64-NORELAX-NEXT: addi.d $a0, $a0, 1080 |
205 |
| -# IE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
206 |
| -# IE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 229 | +## a@tprel = 0x8 |
| 230 | +# IE64-NORELAX: 202c8: nop |
| 231 | +# IE64-NORELAX-NEXT: nop |
| 232 | +# IE64-NORELAX-NEXT: nop |
| 233 | +# IE64-NORELAX-NEXT: ori $a0, $zero, 8 |
207 | 234 | # IE64-NORELAX-NEXT: add.d $a1, $a0, $tp
|
208 | 235 |
|
209 |
| -## &.got[b]-. = 0x30438+48 - 0x2030c: 0x10 pages, page offset 0x468 |
210 |
| -## R_LARCH_RELAX does not appear in pairs. No relaxation. |
211 |
| -# IE64-NORELAX: 2030c: pcalau12i $a0, 16 |
212 |
| -# IE64-NORELAX-NEXT: addi.d $a0, $a0, 1128 |
213 |
| -# IE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
214 |
| -# IE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 236 | +## b@tprel = 0x7ff |
| 237 | +# IE64-NORELAX: 202dc: nop |
| 238 | +# IE64-NORELAX-NEXT: nop |
| 239 | +# IE64-NORELAX-NEXT: nop |
| 240 | +# IE64-NORELAX-NEXT: ori $a0, $zero, 2047 |
215 | 241 | # IE64-NORELAX-NEXT: add.d $a2, $a0, $tp
|
216 | 242 |
|
217 |
| -## &.got[c]-. = 0x30438+16 - 0x20320: 0x10 pages, page offset 0x448 |
| 243 | +## &.got[c]-. = 0x30408 - 0x20300: 0x10 pages, page offset 0x408 |
218 | 244 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
219 |
| -# IE64-NORELAX: 20320: pcalau12i $a0, 16 |
| 245 | +# IE64-NORELAX: 202f0: nop |
220 | 246 | # IE64-NORELAX-NEXT: addi.d $t0, $zero, 0
|
221 |
| -# IE64-NORELAX-NEXT: addi.d $a0, $a0, 1096 |
| 247 | +# IE64-NORELAX-NEXT: nop |
222 | 248 | # IE64-NORELAX-NEXT: addi.d $t0, $t0, 1
|
223 |
| -# IE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
| 249 | +# IE64-NORELAX-NEXT: pcalau12i $a0, 16 |
224 | 250 | # IE64-NORELAX-NEXT: addi.d $t0, $t0, 1
|
225 |
| -# IE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 251 | +# IE64-NORELAX-NEXT: ld.d $a0, $a0, 1032 |
226 | 252 | # IE64-NORELAX-NEXT: add.d $a3, $a0, $tp
|
227 | 253 |
|
228 |
| -## &.got[d]-. = 0x30438+32 - 0x20340: 0x10 pages, page offset 0x458 |
229 |
| -# IE64-NORELAX: 20340: pcalau12i $a0, 16 |
230 |
| -# IE64-NORELAX-NEXT: addi.d $a0, $a0, 1112 |
231 |
| -# IE64-NORELAX-NEXT: ld.d $ra, $a0, 0 |
232 |
| -# IE64-NORELAX-NEXT: jirl $ra, $ra, 0 |
| 254 | +## &.got[d]-. = 0x30408+8 - 0x20318: 0x10 pages, page offset 0x410 |
| 255 | +# IE64-NORELAX: 20310: nop |
| 256 | +# IE64-NORELAX-NEXT: nop |
| 257 | +# IE64-NORELAX-NEXT: pcalau12i $a0, 16 |
| 258 | +# IE64-NORELAX-NEXT: ld.d $a0, $a0, 1040 |
233 | 259 | # IE64-NORELAX-NEXT: add.d $a4, $a0, $tp
|
234 | 260 |
|
235 | 261 | #--- a.s
|
236 | 262 | la.tls.desc $a0, a
|
237 | 263 | add.d $a1, $a0, $tp
|
238 | 264 |
|
239 |
| -# ADDI.D does not have R_LARCH_RELAX. No relaxation. |
| 265 | +# ADDI.D does not have R_LARCH_RELAX. No relaxation when it is not optimized to IE/LE (--shared). |
240 | 266 | pcalau12i $a0, %desc_pc_hi20(b)
|
241 | 267 | .reloc .-4, R_LARCH_RELAX, 0
|
242 | 268 | addi.d $a0, $a0, %desc_pc_lo12(b)
|
|
0 commit comments