Skip to content

Commit 04996a2

Browse files
authored
[ELF] Rename target-specific RelExpr enumerators
RelExpr enumerators are named `R_*`, which can be confused with ELF relocation type names. Rename the target-specific ones to `RE_*` to avoid confusion. For consistency, the target-independent ones can be renamed as well, but that's not urgent. The relocation processing mechanism with RelExpr has non-trivial overhead compared with mold's approach, and we might make more code into Arch/*.cpp files and decrease the enumerators. Pull Request: llvm#118424
1 parent afe75b4 commit 04996a2

11 files changed

+159
-158
lines changed

lld/ELF/Arch/AArch64.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ RelExpr AArch64::getRelExpr(RelType type, const Symbol &s,
154154
case R_AARCH64_MOVW_UABS_G3:
155155
return R_ABS;
156156
case R_AARCH64_AUTH_ABS64:
157-
return R_AARCH64_AUTH;
157+
return RE_AARCH64_AUTH;
158158
case R_AARCH64_TLSDESC_ADR_PAGE21:
159-
return R_AARCH64_TLSDESC_PAGE;
159+
return RE_AARCH64_TLSDESC_PAGE;
160160
case R_AARCH64_TLSDESC_LD64_LO12:
161161
case R_AARCH64_TLSDESC_ADD_LO12:
162162
return R_TLSDESC;
@@ -198,15 +198,15 @@ RelExpr AArch64::getRelExpr(RelType type, const Symbol &s,
198198
return R_PC;
199199
case R_AARCH64_ADR_PREL_PG_HI21:
200200
case R_AARCH64_ADR_PREL_PG_HI21_NC:
201-
return R_AARCH64_PAGE_PC;
201+
return RE_AARCH64_PAGE_PC;
202202
case R_AARCH64_LD64_GOT_LO12_NC:
203203
case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC:
204204
return R_GOT;
205205
case R_AARCH64_LD64_GOTPAGE_LO15:
206-
return R_AARCH64_GOT_PAGE;
206+
return RE_AARCH64_GOT_PAGE;
207207
case R_AARCH64_ADR_GOT_PAGE:
208208
case R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
209-
return R_AARCH64_GOT_PAGE_PC;
209+
return RE_AARCH64_GOT_PAGE_PC;
210210
case R_AARCH64_GOTPCREL32:
211211
case R_AARCH64_GOT_LD_PREL19:
212212
return R_GOT_PC;
@@ -222,7 +222,7 @@ RelExpr AArch64::getRelExpr(RelType type, const Symbol &s,
222222
RelExpr AArch64::adjustTlsExpr(RelType type, RelExpr expr) const {
223223
if (expr == R_RELAX_TLS_GD_TO_IE) {
224224
if (type == R_AARCH64_TLSDESC_ADR_PAGE21)
225-
return R_AARCH64_RELAX_TLS_GD_TO_IE_PAGE_PC;
225+
return RE_AARCH64_RELAX_TLS_GD_TO_IE_PAGE_PC;
226226
return R_RELAX_TLS_GD_TO_IE_ABS;
227227
}
228228
return expr;
@@ -877,7 +877,7 @@ bool AArch64Relaxer::tryRelaxAdrpLdr(const Relocation &adrpRel,
877877
if (val != llvm::SignExtend64(val, 33))
878878
return false;
879879

880-
Relocation adrpSymRel = {R_AARCH64_PAGE_PC, R_AARCH64_ADR_PREL_PG_HI21,
880+
Relocation adrpSymRel = {RE_AARCH64_PAGE_PC, R_AARCH64_ADR_PREL_PG_HI21,
881881
adrpRel.offset, /*addend=*/0, &sym};
882882
Relocation addRel = {R_ABS, R_AARCH64_ADD_ABS_LO12_NC, ldrRel.offset,
883883
/*addend=*/0, &sym};
@@ -922,21 +922,21 @@ void AArch64::relocateAlloc(InputSectionBase &sec, uint8_t *buf) const {
922922
}
923923

924924
switch (rel.expr) {
925-
case R_AARCH64_GOT_PAGE_PC:
925+
case RE_AARCH64_GOT_PAGE_PC:
926926
if (i + 1 < size &&
927927
relaxer.tryRelaxAdrpLdr(rel, sec.relocs()[i + 1], secAddr, buf)) {
928928
++i;
929929
continue;
930930
}
931931
break;
932-
case R_AARCH64_PAGE_PC:
932+
case RE_AARCH64_PAGE_PC:
933933
if (i + 1 < size &&
934934
relaxer.tryRelaxAdrpAdd(rel, sec.relocs()[i + 1], secAddr, buf)) {
935935
++i;
936936
continue;
937937
}
938938
break;
939-
case R_AARCH64_RELAX_TLS_GD_TO_IE_PAGE_PC:
939+
case RE_AARCH64_RELAX_TLS_GD_TO_IE_PAGE_PC:
940940
case R_RELAX_TLS_GD_TO_IE_ABS:
941941
relaxTlsGdToIe(loc, rel, val);
942942
continue;

lld/ELF/Arch/ARM.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ RelExpr ARM::getRelExpr(RelType type, const Symbol &s,
136136
// GOT(S) + A - P
137137
return R_GOT_PC;
138138
case R_ARM_SBREL32:
139-
return R_ARM_SBREL;
139+
return RE_ARM_SBREL;
140140
case R_ARM_TARGET1:
141141
return ctx.arg.target1Rel ? R_PC : R_ABS;
142142
case R_ARM_TARGET2:
@@ -176,14 +176,14 @@ RelExpr ARM::getRelExpr(RelType type, const Symbol &s,
176176
case R_ARM_THM_ALU_PREL_11_0:
177177
case R_ARM_THM_PC8:
178178
case R_ARM_THM_PC12:
179-
return R_ARM_PCA;
179+
return RE_ARM_PCA;
180180
case R_ARM_MOVW_BREL_NC:
181181
case R_ARM_MOVW_BREL:
182182
case R_ARM_MOVT_BREL:
183183
case R_ARM_THM_MOVW_BREL_NC:
184184
case R_ARM_THM_MOVW_BREL:
185185
case R_ARM_THM_MOVT_BREL:
186-
return R_ARM_SBREL;
186+
return RE_ARM_SBREL;
187187
case R_ARM_NONE:
188188
return R_NONE;
189189
case R_ARM_TLS_LE32:

lld/ELF/Arch/LoongArch.cpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ RelExpr LoongArch::getRelExpr(const RelType type, const Symbol &s,
428428
case R_LARCH_SUB_ULEB128:
429429
// The LoongArch add/sub relocs behave like the RISCV counterparts; reuse
430430
// the RelExpr to avoid code duplication.
431-
return R_RISCV_ADD;
431+
return RE_RISCV_ADD;
432432
case R_LARCH_32_PCREL:
433433
case R_LARCH_64_PCREL:
434434
case R_LARCH_PCREL20_S2:
@@ -444,17 +444,17 @@ RelExpr LoongArch::getRelExpr(const RelType type, const Symbol &s,
444444
case R_LARCH_TLS_IE_PC_HI20:
445445
case R_LARCH_TLS_IE64_PC_LO20:
446446
case R_LARCH_TLS_IE64_PC_HI12:
447-
return R_LOONGARCH_GOT_PAGE_PC;
447+
return RE_LOONGARCH_GOT_PAGE_PC;
448448
case R_LARCH_GOT_PC_LO12:
449449
case R_LARCH_TLS_IE_PC_LO12:
450-
return R_LOONGARCH_GOT;
450+
return RE_LOONGARCH_GOT;
451451
case R_LARCH_TLS_LD_PC_HI20:
452452
case R_LARCH_TLS_GD_PC_HI20:
453-
return R_LOONGARCH_TLSGD_PAGE_PC;
453+
return RE_LOONGARCH_TLSGD_PAGE_PC;
454454
case R_LARCH_PCALA_HI20:
455-
// Why not R_LOONGARCH_PAGE_PC, majority of references don't go through PLT
456-
// anyway so why waste time checking only to get everything relaxed back to
457-
// it?
455+
// Why not RE_LOONGARCH_PAGE_PC, majority of references don't go through
456+
// PLT anyway so why waste time checking only to get everything relaxed back
457+
// to it?
458458
//
459459
// This is again due to the R_LARCH_PCALA_LO12 on JIRL case, where we want
460460
// both the HI20 and LO12 to potentially refer to the PLT. But in reality
@@ -474,12 +474,12 @@ RelExpr LoongArch::getRelExpr(const RelType type, const Symbol &s,
474474
//
475475
// So, unfortunately we have to again workaround this quirk the same way as
476476
// BFD: assuming every R_LARCH_PCALA_HI20 is potentially PLT-needing, only
477-
// relaxing back to R_LOONGARCH_PAGE_PC if it's known not so at a later
477+
// relaxing back to RE_LOONGARCH_PAGE_PC if it's known not so at a later
478478
// stage.
479-
return R_LOONGARCH_PLT_PAGE_PC;
479+
return RE_LOONGARCH_PLT_PAGE_PC;
480480
case R_LARCH_PCALA64_LO20:
481481
case R_LARCH_PCALA64_HI12:
482-
return R_LOONGARCH_PAGE_PC;
482+
return RE_LOONGARCH_PAGE_PC;
483483
case R_LARCH_GOT_HI20:
484484
case R_LARCH_GOT_LO12:
485485
case R_LARCH_GOT64_LO20:
@@ -501,7 +501,7 @@ RelExpr LoongArch::getRelExpr(const RelType type, const Symbol &s,
501501
case R_LARCH_TLS_DESC_PC_HI20:
502502
case R_LARCH_TLS_DESC64_PC_LO20:
503503
case R_LARCH_TLS_DESC64_PC_HI12:
504-
return R_LOONGARCH_TLSDESC_PAGE_PC;
504+
return RE_LOONGARCH_TLSDESC_PAGE_PC;
505505
case R_LARCH_TLS_DESC_PC_LO12:
506506
case R_LARCH_TLS_DESC_LD:
507507
case R_LARCH_TLS_DESC_HI20:

lld/ELF/Arch/Mips.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ RelExpr MIPS<ELFT>::getRelExpr(RelType type, const Symbol &s,
105105
case R_MIPS_GPREL32:
106106
case R_MICROMIPS_GPREL16:
107107
case R_MICROMIPS_GPREL7_S2:
108-
return R_MIPS_GOTREL;
108+
return RE_MIPS_GOTREL;
109109
case R_MIPS_26:
110110
case R_MICROMIPS_26_S1:
111111
return R_PLT;
@@ -122,9 +122,9 @@ RelExpr MIPS<ELFT>::getRelExpr(RelType type, const Symbol &s,
122122
// equal to the start of .got section. In that case we consider these
123123
// relocations as relative.
124124
if (&s == ctx.sym.mipsGpDisp)
125-
return R_MIPS_GOT_GP_PC;
125+
return RE_MIPS_GOT_GP_PC;
126126
if (&s == ctx.sym.mipsLocalGp)
127-
return R_MIPS_GOT_GP;
127+
return RE_MIPS_GOT_GP;
128128
[[fallthrough]];
129129
case R_MIPS_32:
130130
case R_MIPS_64:
@@ -163,14 +163,14 @@ RelExpr MIPS<ELFT>::getRelExpr(RelType type, const Symbol &s,
163163
case R_MIPS_GOT16:
164164
case R_MICROMIPS_GOT16:
165165
if (s.isLocal())
166-
return R_MIPS_GOT_LOCAL_PAGE;
166+
return RE_MIPS_GOT_LOCAL_PAGE;
167167
[[fallthrough]];
168168
case R_MIPS_CALL16:
169169
case R_MIPS_GOT_DISP:
170170
case R_MIPS_TLS_GOTTPREL:
171171
case R_MICROMIPS_CALL16:
172172
case R_MICROMIPS_TLS_GOTTPREL:
173-
return R_MIPS_GOT_OFF;
173+
return RE_MIPS_GOT_OFF;
174174
case R_MIPS_CALL_HI16:
175175
case R_MIPS_CALL_LO16:
176176
case R_MIPS_GOT_HI16:
@@ -179,15 +179,15 @@ RelExpr MIPS<ELFT>::getRelExpr(RelType type, const Symbol &s,
179179
case R_MICROMIPS_CALL_LO16:
180180
case R_MICROMIPS_GOT_HI16:
181181
case R_MICROMIPS_GOT_LO16:
182-
return R_MIPS_GOT_OFF32;
182+
return RE_MIPS_GOT_OFF32;
183183
case R_MIPS_GOT_PAGE:
184-
return R_MIPS_GOT_LOCAL_PAGE;
184+
return RE_MIPS_GOT_LOCAL_PAGE;
185185
case R_MIPS_TLS_GD:
186186
case R_MICROMIPS_TLS_GD:
187-
return R_MIPS_TLSGD;
187+
return RE_MIPS_TLSGD;
188188
case R_MIPS_TLS_LDM:
189189
case R_MICROMIPS_TLS_LDM:
190-
return R_MIPS_TLSLD;
190+
return RE_MIPS_TLSLD;
191191
case R_MIPS_NONE:
192192
return R_NONE;
193193
default:

lld/ELF/Arch/PPC.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ RelExpr PPC::getRelExpr(RelType type, const Symbol &s,
250250
case R_PPC_REL24:
251251
return R_PLT_PC;
252252
case R_PPC_PLTREL24:
253-
return R_PPC32_PLTREL;
253+
return RE_PPC32_PLTREL;
254254
case R_PPC_GOT_TLSGD16:
255255
return R_TLSGD_GOT;
256256
case R_PPC_GOT_TLSLD16:

lld/ELF/Arch/PPC64.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -1029,12 +1029,12 @@ RelExpr PPC64::getRelExpr(RelType type, const Symbol &s,
10291029
return R_GOT_PC;
10301030
case R_PPC64_TOC16_HA:
10311031
case R_PPC64_TOC16_LO_DS:
1032-
return ctx.arg.tocOptimize ? R_PPC64_RELAX_TOC : R_GOTREL;
1032+
return ctx.arg.tocOptimize ? RE_PPC64_RELAX_TOC : R_GOTREL;
10331033
case R_PPC64_TOC:
1034-
return R_PPC64_TOCBASE;
1034+
return RE_PPC64_TOCBASE;
10351035
case R_PPC64_REL14:
10361036
case R_PPC64_REL24:
1037-
return R_PPC64_CALL_PLT;
1037+
return RE_PPC64_CALL_PLT;
10381038
case R_PPC64_REL24_NOTOC:
10391039
return R_PLT_PC;
10401040
case R_PPC64_REL16_LO:
@@ -1452,7 +1452,7 @@ bool PPC64::needsThunk(RelExpr expr, RelType type, const InputFile *file,
14521452

14531453
// If the offset exceeds the range of the branch type then it will need
14541454
// a range-extending thunk.
1455-
// See the comment in getRelocTargetVA() about R_PPC64_CALL.
1455+
// See the comment in getRelocTargetVA() about RE_PPC64_CALL.
14561456
return !inBranchRange(
14571457
type, branchAddr,
14581458
s.getVA(ctx, a) + getPPC64GlobalEntryToLocalEntryOffset(ctx, s.stOther));
@@ -1490,7 +1490,7 @@ RelExpr PPC64::adjustGotPcExpr(RelType type, int64_t addend,
14901490
// It only makes sense to optimize pld since paddi means that the address
14911491
// of the object in the GOT is required rather than the object itself.
14921492
if ((readPrefixedInst(ctx, loc) & 0xfc000000) == 0xe4000000)
1493-
return R_PPC64_RELAX_GOT_PC;
1493+
return RE_PPC64_RELAX_GOT_PC;
14941494
}
14951495
return R_GOT_PC;
14961496
}
@@ -1574,7 +1574,7 @@ void PPC64::relocateAlloc(InputSectionBase &sec, uint8_t *buf) const {
15741574
uint8_t *loc = buf + rel.offset;
15751575
const uint64_t val = sec.getRelocTargetVA(ctx, rel, secAddr + rel.offset);
15761576
switch (rel.expr) {
1577-
case R_PPC64_RELAX_GOT_PC: {
1577+
case RE_PPC64_RELAX_GOT_PC: {
15781578
// The R_PPC64_PCREL_OPT relocation must appear immediately after
15791579
// R_PPC64_GOT_PCREL34 in the relocations table at the same offset.
15801580
// We can only relax R_PPC64_PCREL_OPT if we have also relaxed
@@ -1588,7 +1588,7 @@ void PPC64::relocateAlloc(InputSectionBase &sec, uint8_t *buf) const {
15881588
relaxGot(loc, rel, val);
15891589
break;
15901590
}
1591-
case R_PPC64_RELAX_TOC:
1591+
case RE_PPC64_RELAX_TOC:
15921592
// rel.sym refers to the STT_SECTION symbol associated to the .toc input
15931593
// section. If an R_PPC64_TOC16_LO (.toc + addend) references the TOC
15941594
// entry, there may be R_PPC64_TOC16_HA not paired with
@@ -1598,7 +1598,7 @@ void PPC64::relocateAlloc(InputSectionBase &sec, uint8_t *buf) const {
15981598
!tryRelaxPPC64TocIndirection(ctx, rel, loc))
15991599
relocate(loc, rel, val);
16001600
break;
1601-
case R_PPC64_CALL:
1601+
case RE_PPC64_CALL:
16021602
// If this is a call to __tls_get_addr, it may be part of a TLS
16031603
// sequence that has been relaxed and turned into a nop. In this
16041604
// case, we don't want to handle it as a call.

lld/ELF/Arch/RISCV.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ RelExpr RISCV::getRelExpr(const RelType type, const Symbol &s,
282282
case R_RISCV_SUB16:
283283
case R_RISCV_SUB32:
284284
case R_RISCV_SUB64:
285-
return R_RISCV_ADD;
285+
return RE_RISCV_ADD;
286286
case R_RISCV_JAL:
287287
case R_RISCV_BRANCH:
288288
case R_RISCV_PCREL_HI20:
@@ -299,7 +299,7 @@ RelExpr RISCV::getRelExpr(const RelType type, const Symbol &s,
299299
return R_GOT_PC;
300300
case R_RISCV_PCREL_LO12_I:
301301
case R_RISCV_PCREL_LO12_S:
302-
return R_RISCV_PC_INDIRECT;
302+
return RE_RISCV_PC_INDIRECT;
303303
case R_RISCV_TLSDESC_HI20:
304304
case R_RISCV_TLSDESC_LOAD_LO12:
305305
case R_RISCV_TLSDESC_ADD_LO12:
@@ -321,7 +321,7 @@ RelExpr RISCV::getRelExpr(const RelType type, const Symbol &s,
321321
return ctx.arg.relax ? R_RELAX_HINT : R_NONE;
322322
case R_RISCV_SET_ULEB128:
323323
case R_RISCV_SUB_ULEB128:
324-
return R_RISCV_LEB128;
324+
return RE_RISCV_LEB128;
325325
default:
326326
Err(ctx) << getErrorLoc(ctx, loc) << "unknown relocation (" << type.v
327327
<< ") against symbol " << &s;
@@ -650,7 +650,7 @@ void RISCV::relocateAlloc(InputSectionBase &sec, uint8_t *buf) const {
650650
else
651651
tlsdescToIe(ctx, loc, rel, val);
652652
continue;
653-
case R_RISCV_LEB128:
653+
case RE_RISCV_LEB128:
654654
if (i + 1 < size) {
655655
const Relocation &rel1 = relocs[i + 1];
656656
if (rel.type == R_RISCV_SET_ULEB128 &&

0 commit comments

Comments
 (0)