|
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: IE/LE relaxation have not yet been implemented, --relax/--no-relax obtain the same results. |
13 | 12 | ## Transition from TLSDESC to IE/LE. Also check --emit-relocs.
|
14 | 13 | # RUN: ld.lld --relax -e 0 -z now --emit-relocs a.64.o c.64.o -o a.64.le
|
15 | 14 | # RUN: llvm-readobj -r -x .got a.64.le 2>&1 | FileCheck --check-prefix=LE64-RELA %s
|
|
73 | 72 | # LE64-RELA: could not find section '.got'
|
74 | 73 |
|
75 | 74 | ## a@tprel = 0x8
|
76 |
| -# LE64: 20158: nop |
| 75 | +# LE64: 20158: ori $a0, $zero, 8 |
77 | 76 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 a
|
78 | 77 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
79 |
| -# LE64-NEXT: nop |
80 | 78 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 a
|
81 | 79 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
82 |
| -# LE64-NEXT: nop |
83 | 80 | # LE64-NEXT: R_LARCH_TLS_DESC_LD a
|
84 | 81 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
85 |
| -# LE64-NEXT: ori $a0, $zero, 8 |
86 | 82 | # LE64-NEXT: R_LARCH_TLS_DESC_CALL a
|
87 | 83 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
88 | 84 | # LE64-NEXT: add.d $a1, $a0, $tp
|
89 | 85 |
|
90 | 86 | ## b@tprel = 0x7ff
|
91 |
| -# LE64: 2016c: nop |
| 87 | +# LE64: 20160: nop |
92 | 88 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 b
|
93 | 89 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
94 |
| -# LE64-NEXT: nop |
95 | 90 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 b
|
96 | 91 | # LE64-NEXT: nop
|
97 | 92 | # LE64-NEXT: R_LARCH_TLS_DESC_LD b
|
|
101 | 96 |
|
102 | 97 | ## c@tprel = 0x800
|
103 | 98 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
104 |
| -# LE64: 20180: nop |
| 99 | +# LE64: 20170: nop |
105 | 100 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 c
|
106 | 101 | # LE64-NEXT: addi.d $t0, $zero, 0
|
107 | 102 | # LE64-NEXT: nop
|
|
115 | 110 | # LE64-NEXT: add.d $a3, $a0, $tp
|
116 | 111 |
|
117 | 112 | ## d@tprel = 0x1000
|
118 |
| -# LE64: 201a0: nop |
| 113 | +# LE64: 20190: lu12i.w $a0, 1 |
119 | 114 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 d
|
120 | 115 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
121 |
| -# LE64-NEXT: nop |
122 | 116 | # LE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 d
|
123 | 117 | # LE64-NEXT: R_LARCH_RELAX *ABS*
|
124 |
| -# LE64-NEXT: lu12i.w $a0, 1 |
125 | 118 | # LE64-NEXT: R_LARCH_TLS_DESC_LD d
|
126 | 119 | # LE64-NEXT: ori $a0, $a0, 0
|
127 | 120 | # LE64-NEXT: R_LARCH_TLS_DESC_CALL d
|
|
160 | 153 | # LE64-NORELAX-NEXT: add.d $a4, $a0, $tp
|
161 | 154 |
|
162 | 155 | # IE64-RELA: .rela.dyn {
|
163 |
| -# IE64-RELA-NEXT: 0x30408 R_LARCH_TLS_TPREL64 c 0x0 |
164 |
| -# IE64-RELA-NEXT: 0x30410 R_LARCH_TLS_TPREL64 d 0x0 |
| 156 | +# IE64-RELA-NEXT: 0x303F0 R_LARCH_TLS_TPREL64 c 0x0 |
| 157 | +# IE64-RELA-NEXT: 0x303F8 R_LARCH_TLS_TPREL64 d 0x0 |
165 | 158 | # IE64-RELA-NEXT: }
|
166 | 159 | # IE64-RELA: Hex dump of section '.got':
|
167 |
| -# IE64-RELA-NEXT: 0x00030408 00000000 00000000 00000000 00000000 . |
| 160 | +# IE64-RELA-NEXT: 0x000303f0 00000000 00000000 00000000 00000000 . |
168 | 161 |
|
169 |
| -# IE64: .got 00000010 0000000000030408 |
| 162 | +# IE64: .got 00000010 00000000000303f0 |
170 | 163 |
|
171 | 164 | ## a and b are optimized to use LE. c and d are optimized to IE.
|
172 | 165 | ## a@tprel = 0x8
|
173 |
| -# IE64: 202c8: nop |
| 166 | +# IE64: 202c8: ori $a0, $zero, 8 |
174 | 167 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 a
|
175 | 168 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
176 |
| -# IE64-NEXT: nop |
177 | 169 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 a
|
178 | 170 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
179 |
| -# IE64-NEXT: nop |
180 | 171 | # IE64-NEXT: R_LARCH_TLS_DESC_LD a
|
181 | 172 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
182 |
| -# IE64-NEXT: ori $a0, $zero, 8 |
183 | 173 | # IE64-NEXT: R_LARCH_TLS_DESC_CALL a
|
184 | 174 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
185 | 175 | # IE64-NEXT: add.d $a1, $a0, $tp
|
186 | 176 |
|
187 | 177 | ## b@tprel = 0x7ff
|
188 |
| -# IE64: 202dc: nop |
| 178 | +# IE64: 202d0: nop |
189 | 179 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 b
|
190 | 180 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
191 |
| -# IE64-NEXT: nop |
192 | 181 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 b
|
193 | 182 | # IE64-NEXT: nop
|
194 | 183 | # IE64-NEXT: R_LARCH_TLS_DESC_LD b
|
195 | 184 | # IE64-NEXT: ori $a0, $zero, 2047
|
196 | 185 | # IE64-NEXT: R_LARCH_TLS_DESC_CALL b
|
197 | 186 | # IE64-NEXT: add.d $a2, $a0, $tp
|
198 | 187 |
|
199 |
| -## &.got[c]-. = 0x30408 - 0x20300: 0x10 pages, page offset 0x408 |
| 188 | +## &.got[c]-. = 0x303f0 - 0x202f0: 0x10 pages, page offset 0x3f0 |
200 | 189 | ## Without R_LARCH_RELAX relocation. No relaxation.
|
201 |
| -# IE64: 202f0: nop |
| 190 | +# IE64: 202e0: nop |
202 | 191 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 c
|
203 | 192 | # IE64-NEXT: addi.d $t0, $zero, 0
|
204 | 193 | # IE64-NEXT: nop
|
|
207 | 196 | # IE64-NEXT: pcalau12i $a0, 16
|
208 | 197 | # IE64-NEXT: R_LARCH_TLS_DESC_LD c
|
209 | 198 | # IE64-NEXT: addi.d $t0, $t0, 1
|
210 |
| -# IE64-NEXT: ld.d $a0, $a0, 1032 |
| 199 | +# IE64-NEXT: ld.d $a0, $a0, 1008 |
211 | 200 | # IE64-NEXT: R_LARCH_TLS_DESC_CALL c
|
212 | 201 | # IE64-NEXT: add.d $a3, $a0, $tp
|
213 | 202 |
|
214 |
| -## &.got[d]-. = 0x30408+8 - 0x20318: 0x10 pages, page offset 0x410 |
215 |
| -# IE64: 20310: nop |
| 203 | +## &.got[d]-. = 0x303f0+8 - 0x20300: 0x10 pages, page offset 0x3f8 |
| 204 | +# IE64: 20300: pcalau12i $a0, 16 |
216 | 205 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_HI20 d
|
217 | 206 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
218 |
| -# IE64-NEXT: nop |
219 | 207 | # IE64-NEXT: R_LARCH_TLS_DESC_PC_LO12 d
|
220 | 208 | # IE64-NEXT: R_LARCH_RELAX *ABS*
|
221 |
| -# IE64-NEXT: pcalau12i $a0, 16 |
222 | 209 | # IE64-NEXT: R_LARCH_TLS_DESC_LD d
|
223 |
| -# IE64-NEXT: ld.d $a0, $a0, 1040 |
| 210 | +# IE64-NEXT: ld.d $a0, $a0, 1016 |
224 | 211 | # IE64-NEXT: R_LARCH_TLS_DESC_CALL d
|
225 | 212 | # IE64-NEXT: add.d $a4, $a0, $tp
|
226 | 213 |
|
|
0 commit comments