@@ -132,175 +132,42 @@ LoongArchMCCodeEmitter::getExprOpValue(const MCInst &MI, const MCOperand &MO,
132
132
unsigned FixupKind = LoongArch::fixup_loongarch_invalid;
133
133
if (Kind == MCExpr::Target) {
134
134
const LoongArchMCExpr *LAExpr = cast<LoongArchMCExpr>(Expr);
135
-
135
+ FixupKind = LAExpr-> getSpecifier ();
136
136
RelaxCandidate = LAExpr->getRelaxHint ();
137
- switch (LAExpr->getSpecifier ()) {
137
+ switch (uint16_t ( LAExpr->getSpecifier () )) {
138
138
case LoongArchMCExpr::VK_None:
139
139
llvm_unreachable (" Unhandled fixup kind!" );
140
- case LoongArchMCExpr::VK_TLS_LE_ADD_R :
141
- llvm_unreachable (" VK_TLS_LE_ADD_R should not represent an "
140
+ case ELF::R_LARCH_TLS_LE_ADD_R :
141
+ llvm_unreachable (" ELF::R_LARCH_TLS_LE_ADD_R should not represent an "
142
142
" instruction operand" );
143
- case LoongArchMCExpr::VK_B16 :
143
+ case ELF::R_LARCH_B16 :
144
144
FixupKind = LoongArch::fixup_loongarch_b16;
145
145
break ;
146
- case LoongArchMCExpr::VK_B21 :
146
+ case ELF::R_LARCH_B21 :
147
147
FixupKind = LoongArch::fixup_loongarch_b21;
148
148
break ;
149
- case LoongArchMCExpr::VK_B26 :
149
+ case ELF::R_LARCH_B26 :
150
150
case LoongArchMCExpr::VK_CALL:
151
151
case LoongArchMCExpr::VK_CALL_PLT:
152
152
FixupKind = LoongArch::fixup_loongarch_b26;
153
153
break ;
154
- case LoongArchMCExpr::VK_ABS_HI20 :
154
+ case ELF::R_LARCH_ABS_HI20 :
155
155
FixupKind = LoongArch::fixup_loongarch_abs_hi20;
156
156
break ;
157
- case LoongArchMCExpr::VK_ABS_LO12 :
157
+ case ELF::R_LARCH_ABS_LO12 :
158
158
FixupKind = LoongArch::fixup_loongarch_abs_lo12;
159
159
break ;
160
- case LoongArchMCExpr::VK_ABS64_LO20 :
160
+ case ELF::R_LARCH_ABS64_LO20 :
161
161
FixupKind = LoongArch::fixup_loongarch_abs64_lo20;
162
162
break ;
163
- case LoongArchMCExpr::VK_ABS64_HI12 :
163
+ case ELF::R_LARCH_ABS64_HI12 :
164
164
FixupKind = LoongArch::fixup_loongarch_abs64_hi12;
165
165
break ;
166
- case LoongArchMCExpr::VK_PCALA_HI20:
167
- FixupKind = ELF::R_LARCH_PCALA_HI20;
168
- break ;
169
- case LoongArchMCExpr::VK_PCALA_LO12:
170
- FixupKind = ELF::R_LARCH_PCALA_LO12;
171
- break ;
172
- case LoongArchMCExpr::VK_PCALA64_LO20:
173
- FixupKind = ELF::R_LARCH_PCALA64_LO20;
174
- break ;
175
- case LoongArchMCExpr::VK_PCALA64_HI12:
176
- FixupKind = ELF::R_LARCH_PCALA64_HI12;
177
- break ;
178
- case LoongArchMCExpr::VK_GOT_PC_HI20:
179
- FixupKind = ELF::R_LARCH_GOT_PC_HI20;
180
- break ;
181
- case LoongArchMCExpr::VK_GOT_PC_LO12:
182
- FixupKind = ELF::R_LARCH_GOT_PC_LO12;
183
- break ;
184
- case LoongArchMCExpr::VK_GOT64_PC_LO20:
185
- FixupKind = ELF::R_LARCH_GOT64_PC_LO20;
186
- break ;
187
- case LoongArchMCExpr::VK_GOT64_PC_HI12:
188
- FixupKind = ELF::R_LARCH_GOT64_PC_HI12;
189
- break ;
190
- case LoongArchMCExpr::VK_GOT_HI20:
191
- FixupKind = ELF::R_LARCH_GOT_HI20;
192
- break ;
193
- case LoongArchMCExpr::VK_GOT_LO12:
194
- FixupKind = ELF::R_LARCH_GOT_LO12;
195
- break ;
196
- case LoongArchMCExpr::VK_GOT64_LO20:
197
- FixupKind = ELF::R_LARCH_GOT64_LO20;
198
- break ;
199
- case LoongArchMCExpr::VK_GOT64_HI12:
200
- FixupKind = ELF::R_LARCH_GOT64_HI12;
201
- break ;
202
- case LoongArchMCExpr::VK_TLS_LE_HI20:
203
- FixupKind = ELF::R_LARCH_TLS_LE_HI20;
204
- break ;
205
- case LoongArchMCExpr::VK_TLS_LE_LO12:
206
- FixupKind = ELF::R_LARCH_TLS_LE_LO12;
207
- break ;
208
- case LoongArchMCExpr::VK_TLS_LE64_LO20:
209
- FixupKind = ELF::R_LARCH_TLS_LE64_LO20;
210
- break ;
211
- case LoongArchMCExpr::VK_TLS_LE64_HI12:
212
- FixupKind = ELF::R_LARCH_TLS_LE64_HI12;
213
- break ;
214
- case LoongArchMCExpr::VK_TLS_IE_PC_HI20:
215
- FixupKind = ELF::R_LARCH_TLS_IE_PC_HI20;
216
- break ;
217
- case LoongArchMCExpr::VK_TLS_IE_PC_LO12:
218
- FixupKind = ELF::R_LARCH_TLS_IE_PC_LO12;
219
- break ;
220
- case LoongArchMCExpr::VK_TLS_IE64_PC_LO20:
221
- FixupKind = ELF::R_LARCH_TLS_IE64_PC_LO20;
222
- break ;
223
- case LoongArchMCExpr::VK_TLS_IE64_PC_HI12:
224
- FixupKind = ELF::R_LARCH_TLS_IE64_PC_HI12;
225
- break ;
226
- case LoongArchMCExpr::VK_TLS_IE_HI20:
227
- FixupKind = ELF::R_LARCH_TLS_IE_HI20;
228
- break ;
229
- case LoongArchMCExpr::VK_TLS_IE_LO12:
230
- FixupKind = ELF::R_LARCH_TLS_IE_LO12;
231
- break ;
232
- case LoongArchMCExpr::VK_TLS_IE64_LO20:
233
- FixupKind = ELF::R_LARCH_TLS_IE64_LO20;
234
- break ;
235
- case LoongArchMCExpr::VK_TLS_IE64_HI12:
236
- FixupKind = ELF::R_LARCH_TLS_IE64_HI12;
237
- break ;
238
- case LoongArchMCExpr::VK_TLS_LD_PC_HI20:
239
- FixupKind = ELF::R_LARCH_TLS_LD_PC_HI20;
240
- break ;
241
- case LoongArchMCExpr::VK_TLS_LD_HI20:
242
- FixupKind = ELF::R_LARCH_TLS_LD_HI20;
243
- break ;
244
- case LoongArchMCExpr::VK_TLS_GD_PC_HI20:
245
- FixupKind = ELF::R_LARCH_TLS_GD_PC_HI20;
246
- break ;
247
- case LoongArchMCExpr::VK_TLS_GD_HI20:
248
- FixupKind = ELF::R_LARCH_TLS_GD_HI20;
249
- break ;
250
- case LoongArchMCExpr::VK_CALL36:
251
- FixupKind = ELF::R_LARCH_CALL36;
166
+ case ELF::R_LARCH_CALL36:
167
+ case ELF::R_LARCH_TLS_LE_HI20_R:
168
+ case ELF::R_LARCH_TLS_LE_LO12_R:
252
169
RelaxCandidate = true ;
253
170
break ;
254
- case LoongArchMCExpr::VK_TLS_DESC_PC_HI20:
255
- FixupKind = ELF::R_LARCH_TLS_DESC_PC_HI20;
256
- break ;
257
- case LoongArchMCExpr::VK_TLS_DESC_PC_LO12:
258
- FixupKind = ELF::R_LARCH_TLS_DESC_PC_LO12;
259
- break ;
260
- case LoongArchMCExpr::VK_TLS_DESC64_PC_LO20:
261
- FixupKind = ELF::R_LARCH_TLS_DESC64_PC_LO20;
262
- break ;
263
- case LoongArchMCExpr::VK_TLS_DESC64_PC_HI12:
264
- FixupKind = ELF::R_LARCH_TLS_DESC64_PC_HI12;
265
- break ;
266
- case LoongArchMCExpr::VK_TLS_DESC_HI20:
267
- FixupKind = ELF::R_LARCH_TLS_DESC_HI20;
268
- break ;
269
- case LoongArchMCExpr::VK_TLS_DESC_LO12:
270
- FixupKind = ELF::R_LARCH_TLS_DESC_LO12;
271
- break ;
272
- case LoongArchMCExpr::VK_TLS_DESC64_LO20:
273
- FixupKind = ELF::R_LARCH_TLS_DESC64_LO20;
274
- break ;
275
- case LoongArchMCExpr::VK_TLS_DESC64_HI12:
276
- FixupKind = ELF::R_LARCH_TLS_DESC64_HI12;
277
- break ;
278
- case LoongArchMCExpr::VK_TLS_DESC_LD:
279
- FixupKind = ELF::R_LARCH_TLS_DESC_LD;
280
- break ;
281
- case LoongArchMCExpr::VK_TLS_DESC_CALL:
282
- FixupKind = ELF::R_LARCH_TLS_DESC_CALL;
283
- break ;
284
- case LoongArchMCExpr::VK_TLS_LE_HI20_R:
285
- FixupKind = ELF::R_LARCH_TLS_LE_HI20_R;
286
- RelaxCandidate = true ;
287
- break ;
288
- case LoongArchMCExpr::VK_TLS_LE_LO12_R:
289
- FixupKind = ELF::R_LARCH_TLS_LE_LO12_R;
290
- RelaxCandidate = true ;
291
- break ;
292
- case LoongArchMCExpr::VK_PCREL20_S2:
293
- FixupKind = ELF::R_LARCH_PCREL20_S2;
294
- break ;
295
- case LoongArchMCExpr::VK_TLS_LD_PCREL20_S2:
296
- FixupKind = ELF::R_LARCH_TLS_LD_PCREL20_S2;
297
- break ;
298
- case LoongArchMCExpr::VK_TLS_GD_PCREL20_S2:
299
- FixupKind = ELF::R_LARCH_TLS_GD_PCREL20_S2;
300
- break ;
301
- case LoongArchMCExpr::VK_TLS_DESC_PCREL20_S2:
302
- FixupKind = ELF::R_LARCH_TLS_DESC_PCREL20_S2;
303
- break ;
304
171
}
305
172
} else if (Kind == MCExpr::SymbolRef &&
306
173
cast<MCSymbolRefExpr>(Expr)->getKind () ==
@@ -385,7 +252,7 @@ void LoongArchMCCodeEmitter::expandAddTPRel(const MCInst &MI,
385
252
" Expected expression as third input to TP-relative add" );
386
253
387
254
const LoongArchMCExpr *Expr = dyn_cast<LoongArchMCExpr>(Symbol.getExpr ());
388
- assert (Expr && Expr->getSpecifier () == LoongArchMCExpr::VK_TLS_LE_ADD_R &&
255
+ assert (Expr && Expr->getSpecifier () == ELF::R_LARCH_TLS_LE_ADD_R &&
389
256
" Expected %le_add_r relocation on TP-relative symbol" );
390
257
391
258
// Emit the correct %le_add_r relocation for the symbol.
0 commit comments