Skip to content

Commit 85e6cf7

Browse files
committed
[RISCV] Drop CHERI-RISC-V-specific assembly modifiers and relocations
LLD is now using a normal GOT so all the captable-related names are a misnomer, instead they should be the same as the normal GOT ones. We can also drop various other gratuitously-different relocations and modifiers whilst here. The idea was to make it possible to support mixing integer and capability mode instructions when it comes to instructions that need relocations, but that comes down to the same problem that R_RISCV_RELAX faces when it comes to .option arch, so we shouldn't be doing something special here that leads to a bunch of unnecessary divergence. As far as I know we don't have any assembly in our software stack that uses these modifiers, it all uses the pseudos that hide this detail.
1 parent 78dd597 commit 85e6cf7

32 files changed

+140
-358
lines changed

lld/test/ELF/cheri/riscv/tls.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ _start:
167167

168168
.if PIC == 0
169169
lui a0, %tprel_hi(lvar)
170-
cincoffset ca0, ctp, a0, %tprel_cincoffset(lvar)
170+
cincoffset ca0, ctp, a0, %tprel_add(lvar)
171171
cincoffset ca0, ca0, %tprel_lo(lvar)
172172
.endif
173173

llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp

Lines changed: 19 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,7 @@ class RISCVAsmParser : public MCTargetAsmParser {
229229
ParseStatus parseZeroOffsetMemOp(OperandVector &Operands);
230230
ParseStatus parseOperandWithModifier(OperandVector &Operands);
231231
ParseStatus parseBareSymbol(OperandVector &Operands);
232-
template <bool IsCap = false>
233232
ParseStatus parseCallSymbol(OperandVector &Operands);
234-
template <bool IsCap = false>
235233
ParseStatus parsePseudoJumpSymbol(OperandVector &Operands);
236234
ParseStatus parseJALOffset(OperandVector &Operands);
237235
ParseStatus parseVTypeI(OperandVector &Operands);
@@ -569,16 +567,6 @@ struct RISCVOperand final : public MCParsedAsmOperand {
569567
VK == RISCVMCExpr::VK_RISCV_CALL_PLT);
570568
}
571569

572-
bool isCCallSymbol() const {
573-
int64_t Imm;
574-
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None;
575-
// Must be of 'immediate' type but not a constant.
576-
if (!isImm() || evaluateConstantImm(getImm(), Imm, VK))
577-
return false;
578-
return RISCVAsmParser::classifySymbolRef(getImm(), VK) &&
579-
VK == RISCVMCExpr::VK_RISCV_CCALL;
580-
}
581-
582570
bool isPseudoJumpSymbol() const {
583571
int64_t Imm;
584572
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None;
@@ -589,16 +577,6 @@ struct RISCVOperand final : public MCParsedAsmOperand {
589577
VK == RISCVMCExpr::VK_RISCV_CALL;
590578
}
591579

592-
bool isPseudoCJumpSymbol() const {
593-
int64_t Imm;
594-
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None;
595-
// Must be of 'immediate' type but not a constant.
596-
if (!isImm() || evaluateConstantImm(getImm(), Imm, VK))
597-
return false;
598-
return RISCVAsmParser::classifySymbolRef(getImm(), VK) &&
599-
VK == RISCVMCExpr::VK_RISCV_CCALL;
600-
}
601-
602580
bool isTPRelAddSymbol() const {
603581
int64_t Imm;
604582
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None;
@@ -609,16 +587,6 @@ struct RISCVOperand final : public MCParsedAsmOperand {
609587
VK == RISCVMCExpr::VK_RISCV_TPREL_ADD;
610588
}
611589

612-
bool isTPRelCIncOffsetSymbol() const {
613-
int64_t Imm;
614-
RISCVMCExpr::VariantKind VK = RISCVMCExpr::VK_RISCV_None;
615-
// Must be of 'immediate' type but not a constant.
616-
if (!isImm() || evaluateConstantImm(getImm(), Imm, VK))
617-
return false;
618-
return RISCVAsmParser::classifySymbolRef(getImm(), VK) &&
619-
VK == RISCVMCExpr::VK_RISCV_TPREL_CINCOFFSET;
620-
}
621-
622590
bool isCSRSystemRegister() const { return isSystemRegister(); }
623591

624592
bool isVTypeImm(unsigned N) const {
@@ -1008,19 +976,13 @@ struct RISCVOperand final : public MCParsedAsmOperand {
1008976
return IsValid && (VK == RISCVMCExpr::VK_RISCV_PCREL_HI ||
1009977
VK == RISCVMCExpr::VK_RISCV_GOT_HI ||
1010978
VK == RISCVMCExpr::VK_RISCV_TLS_GOT_HI ||
1011-
VK == RISCVMCExpr::VK_RISCV_TLS_GD_HI ||
1012-
VK == RISCVMCExpr::VK_RISCV_CAPTAB_PCREL_HI ||
1013-
VK == RISCVMCExpr::VK_RISCV_TLS_IE_CAPTAB_PCREL_HI ||
1014-
VK == RISCVMCExpr::VK_RISCV_TLS_GD_CAPTAB_PCREL_HI);
979+
VK == RISCVMCExpr::VK_RISCV_TLS_GD_HI);
1015980
} else {
1016981
return isUInt<20>(Imm) && (VK == RISCVMCExpr::VK_RISCV_None ||
1017982
VK == RISCVMCExpr::VK_RISCV_PCREL_HI ||
1018983
VK == RISCVMCExpr::VK_RISCV_GOT_HI ||
1019984
VK == RISCVMCExpr::VK_RISCV_TLS_GOT_HI ||
1020-
VK == RISCVMCExpr::VK_RISCV_TLS_GD_HI ||
1021-
VK == RISCVMCExpr::VK_RISCV_CAPTAB_PCREL_HI ||
1022-
VK == RISCVMCExpr::VK_RISCV_TLS_IE_CAPTAB_PCREL_HI ||
1023-
VK == RISCVMCExpr::VK_RISCV_TLS_GD_CAPTAB_PCREL_HI);
985+
VK == RISCVMCExpr::VK_RISCV_TLS_GD_HI);
1024986
}
1025987
}
1026988

@@ -1665,24 +1627,18 @@ bool RISCVAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
16651627
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
16661628
return Error(ErrorLoc, "operand must be a bare symbol name");
16671629
}
1668-
case Match_InvalidPseudoJumpSymbol:
1669-
case Match_InvalidPseudoCJumpSymbol: {
1630+
case Match_InvalidPseudoJumpSymbol: {
16701631
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
16711632
return Error(ErrorLoc, "operand must be a valid jump target");
16721633
}
1673-
case Match_InvalidCallSymbol:
1674-
case Match_InvalidCCallSymbol: {
1634+
case Match_InvalidCallSymbol: {
16751635
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
16761636
return Error(ErrorLoc, "operand must be a bare symbol name");
16771637
}
16781638
case Match_InvalidTPRelAddSymbol: {
16791639
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
16801640
return Error(ErrorLoc, "operand must be a symbol with %tprel_add modifier");
16811641
}
1682-
case Match_InvalidTPRelCIncOffsetSymbol: {
1683-
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
1684-
return Error(ErrorLoc, "operand must be a symbol with %tprel_cincoffset modifier");
1685-
}
16861642
case Match_InvalidRTZArg: {
16871643
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
16881644
return Error(ErrorLoc, "operand must be 'rtz' floating-point rounding mode");
@@ -2250,7 +2206,6 @@ ParseStatus RISCVAsmParser::parseBareSymbol(OperandVector &Operands) {
22502206
return ParseStatus::Success;
22512207
}
22522208

2253-
template <bool IsCap>
22542209
ParseStatus RISCVAsmParser::parseCallSymbol(OperandVector &Operands) {
22552210
SMLoc S = getLoc();
22562211
const MCExpr *Res;
@@ -2268,17 +2223,12 @@ ParseStatus RISCVAsmParser::parseCallSymbol(OperandVector &Operands) {
22682223

22692224
SMLoc E = SMLoc::getFromPointer(S.getPointer() + Identifier.size());
22702225

2271-
RISCVMCExpr::VariantKind Kind;
2272-
if (IsCap) {
2273-
Kind = RISCVMCExpr::VK_RISCV_CCALL;
2274-
// Both relocations are the same for RISC-V, so CHERI-RISC-V only provides
2275-
// a single relocation, but be friendly and permit the redundant suffix.
2276-
Identifier.consume_back("@plt");
2277-
} else {
2278-
Kind = RISCVMCExpr::VK_RISCV_CALL;
2279-
if (Identifier.consume_back("@plt"))
2280-
Kind = RISCVMCExpr::VK_RISCV_CALL_PLT;
2281-
}
2226+
RISCVMCExpr::VariantKind Kind = RISCVMCExpr::VK_RISCV_CALL;
2227+
// CHERI-RISC-V always uses the fixed relocation but never prints the suffix.
2228+
// However, we allow the redundant suffix to be provided anyway.
2229+
if (Identifier.consume_back("@plt") &&
2230+
!getSTI().hasFeature(RISCV::FeatureCapMode))
2231+
Kind = RISCVMCExpr::VK_RISCV_CALL_PLT;
22822232

22832233
MCSymbol *Sym = getContext().getOrCreateSymbol(Identifier);
22842234
Res = MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_None, getContext());
@@ -2287,7 +2237,6 @@ ParseStatus RISCVAsmParser::parseCallSymbol(OperandVector &Operands) {
22872237
return ParseStatus::Success;
22882238
}
22892239

2290-
template <bool IsCap>
22912240
ParseStatus RISCVAsmParser::parsePseudoJumpSymbol(OperandVector &Operands) {
22922241
SMLoc S = getLoc();
22932242
SMLoc E;
@@ -2301,9 +2250,7 @@ ParseStatus RISCVAsmParser::parsePseudoJumpSymbol(OperandVector &Operands) {
23012250
MCSymbolRefExpr::VariantKind::VK_PLT)
23022251
return Error(S, "operand must be a valid jump target");
23032252

2304-
RISCVMCExpr::VariantKind Kind =
2305-
IsCap ? RISCVMCExpr::VK_RISCV_CCALL : RISCVMCExpr::VK_RISCV_CALL;
2306-
Res = RISCVMCExpr::create(Res, Kind, getContext());
2253+
Res = RISCVMCExpr::create(Res, RISCVMCExpr::VK_RISCV_CALL, getContext());
23072254
Operands.push_back(RISCVOperand::createImm(Res, S, E, isRV64()));
23082255
return ParseStatus::Success;
23092256
}
@@ -3704,14 +3651,13 @@ void RISCVAsmParser::emitCapLoadGlobalCap(MCInst &Inst, SMLoc IDLoc,
37043651
// captable-indirect addressing of global symbols in the PC-relative ABI:
37053652
// clgc rdest, symbol
37063653
// expands to
3707-
// TmpLabel: AUIPCC cdest, %captab_pcrel_hi(symbol)
3654+
// TmpLabel: AUIPCC cdest, %got_pcrel_hi(symbol)
37083655
// CLC cdest, %pcrel_lo(TmpLabel)(cdest)
37093656
MCOperand DestReg = Inst.getOperand(0);
37103657
const MCExpr *Symbol = Inst.getOperand(1).getExpr();
37113658
unsigned SecondOpcode = isRV64() ? RISCV::CLC_128 : RISCV::CLC_64;
3712-
emitAuipccInstPair(DestReg, DestReg, Symbol,
3713-
RISCVMCExpr::VK_RISCV_CAPTAB_PCREL_HI, SecondOpcode,
3714-
IDLoc, Out);
3659+
emitAuipccInstPair(DestReg, DestReg, Symbol, RISCVMCExpr::VK_RISCV_GOT_HI,
3660+
SecondOpcode, IDLoc, Out);
37153661
}
37163662

37173663
void RISCVAsmParser::emitCapLoadTLSIEAddress(MCInst &Inst, SMLoc IDLoc,
@@ -3720,15 +3666,14 @@ void RISCVAsmParser::emitCapLoadTLSIEAddress(MCInst &Inst, SMLoc IDLoc,
37203666
// in initial-exec TLS model addressing of global symbols:
37213667
// cla.tls.ie rdest, symbol
37223668
// expands to
3723-
// TmpLabel: AUIPCC cdest, %tls_ie_captab_pcrel_hi(symbol)
3669+
// TmpLabel: AUIPCC cdest, %tls_ie_pcrel_hi(symbol)
37243670
// CLx rdest, %pcrel_lo(TmpLabel)(cdest)
37253671
MCOperand DestReg = Inst.getOperand(0);
37263672
MCOperand TmpReg = MCOperand::createReg(convertGPRToGPCR(DestReg.getReg()));
37273673
const MCExpr *Symbol = Inst.getOperand(1).getExpr();
37283674
unsigned SecondOpcode = isRV64() ? RISCV::CLD : RISCV::CLW;
3729-
emitAuipccInstPair(DestReg, TmpReg, Symbol,
3730-
RISCVMCExpr::VK_RISCV_TLS_IE_CAPTAB_PCREL_HI, SecondOpcode,
3731-
IDLoc, Out);
3675+
emitAuipccInstPair(DestReg, TmpReg, Symbol, RISCVMCExpr::VK_RISCV_TLS_GOT_HI,
3676+
SecondOpcode, IDLoc, Out);
37323677
}
37333678

37343679
void RISCVAsmParser::emitCapLoadTLSGDCap(MCInst &Inst, SMLoc IDLoc,
@@ -3741,8 +3686,7 @@ void RISCVAsmParser::emitCapLoadTLSGDCap(MCInst &Inst, SMLoc IDLoc,
37413686
// CINCOFFSET cdest, cdest, %pcrel_lo(TmpLabel)
37423687
MCOperand DestReg = Inst.getOperand(0);
37433688
const MCExpr *Symbol = Inst.getOperand(1).getExpr();
3744-
emitAuipccInstPair(DestReg, DestReg, Symbol,
3745-
RISCVMCExpr::VK_RISCV_TLS_GD_CAPTAB_PCREL_HI,
3689+
emitAuipccInstPair(DestReg, DestReg, Symbol, RISCVMCExpr::VK_RISCV_TLS_GD_HI,
37463690
RISCV::CIncOffsetImm, IDLoc, Out);
37473691
}
37483692

@@ -3754,7 +3698,7 @@ bool RISCVAsmParser::checkPseudoCIncOffsetTPRel(MCInst &Inst,
37543698
if (Inst.getOperand(1).getReg() != RISCV::C4) {
37553699
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[2]).getStartLoc();
37563700
return Error(ErrorLoc, "the first input operand must be ctp/c4 when using "
3757-
"%tprel_cincoffset modifier");
3701+
"%tprel_add modifier");
37583702
}
37593703

37603704
return false;

llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,6 @@ RISCVAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
9494

9595
{"fixup_riscv_set_6b", 2, 6, 0},
9696
{"fixup_riscv_sub_6b", 2, 6, 0},
97-
98-
{"fixup_riscv_captab_pcrel_hi20", 12, 20, MCFixupKindInfo::FKF_IsPCRel},
99-
{"fixup_riscv_tprel_cincoffset", 0, 0, 0},
100-
{"fixup_riscv_tls_ie_captab_pcrel_hi20", 12, 20,
101-
MCFixupKindInfo::FKF_IsPCRel},
102-
{"fixup_riscv_tls_gd_captab_pcrel_hi20", 12, 20,
103-
MCFixupKindInfo::FKF_IsPCRel},
104-
{"fixup_riscv_cjal", 12, 20, MCFixupKindInfo::FKF_IsPCRel},
105-
{"fixup_riscv_ccall", 0, 64, MCFixupKindInfo::FKF_IsPCRel},
106-
{"fixup_riscv_rvc_cjump", 2, 11, MCFixupKindInfo::FKF_IsPCRel},
10797
};
10898
static_assert((std::size(Infos)) == RISCV::NumTargetFixupKinds,
10999
"Not all fixup kinds added to Infos array");
@@ -142,9 +132,6 @@ bool RISCVAsmBackend::shouldForceRelocation(const MCAssembler &Asm,
142132
case RISCV::fixup_riscv_got_hi20:
143133
case RISCV::fixup_riscv_tls_got_hi20:
144134
case RISCV::fixup_riscv_tls_gd_hi20:
145-
case RISCV::fixup_riscv_captab_pcrel_hi20:
146-
case RISCV::fixup_riscv_tls_ie_captab_pcrel_hi20:
147-
case RISCV::fixup_riscv_tls_gd_captab_pcrel_hi20:
148135
return true;
149136
}
150137

@@ -181,7 +168,6 @@ bool RISCVAsmBackend::fixupNeedsRelaxationAdvanced(const MCFixup &Fixup,
181168
// in the range [-256, 254].
182169
return Offset > 254 || Offset < -256;
183170
case RISCV::fixup_riscv_rvc_jump:
184-
case RISCV::fixup_riscv_rvc_cjump:
185171
// For compressed jump instructions the immediate must be
186172
// in the range [-2048, 2046].
187173
return Offset > 2046 || Offset < -2048;
@@ -419,11 +405,8 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
419405
case RISCV::fixup_riscv_got_hi20:
420406
case RISCV::fixup_riscv_tls_got_hi20:
421407
case RISCV::fixup_riscv_tls_gd_hi20:
422-
case RISCV::fixup_riscv_captab_pcrel_hi20:
423408
case FK_Cap_8:
424409
case FK_Cap_16:
425-
case RISCV::fixup_riscv_tls_ie_captab_pcrel_hi20:
426-
case RISCV::fixup_riscv_tls_gd_captab_pcrel_hi20:
427410
llvm_unreachable("Relocation should be unconditionally forced\n");
428411
case RISCV::fixup_riscv_set_8:
429412
case RISCV::fixup_riscv_add_8:
@@ -463,8 +446,7 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
463446
case RISCV::fixup_riscv_tprel_hi20:
464447
// Add 1 if bit 11 is 1, to compensate for low 12 bits being negative.
465448
return ((Value + 0x800) >> 12) & 0xfffff;
466-
case RISCV::fixup_riscv_jal:
467-
case RISCV::fixup_riscv_cjal: {
449+
case RISCV::fixup_riscv_jal: {
468450
if (!isInt<21>(Value))
469451
Ctx.reportError(Fixup.getLoc(), "fixup value out of range");
470452
if (Value & 0x1)
@@ -500,17 +482,15 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
500482
return Value;
501483
}
502484
case RISCV::fixup_riscv_call:
503-
case RISCV::fixup_riscv_call_plt:
504-
case RISCV::fixup_riscv_ccall: {
485+
case RISCV::fixup_riscv_call_plt: {
505486
// Jalr will add UpperImm with the sign-extended 12-bit LowerImm,
506487
// we need to add 0x800ULL before extract upper bits to reflect the
507488
// effect of the sign extension.
508489
uint64_t UpperImm = (Value + 0x800ULL) & 0xfffff000ULL;
509490
uint64_t LowerImm = Value & 0xfffULL;
510491
return UpperImm | ((LowerImm << 20) << 32);
511492
}
512-
case RISCV::fixup_riscv_rvc_jump:
513-
case RISCV::fixup_riscv_rvc_cjump: {
493+
case RISCV::fixup_riscv_rvc_jump: {
514494
// Need to produce offset[11|4|9:8|10|6|7|3:1|5] from the 11-bit Value.
515495
unsigned Bit11 = (Value >> 11) & 0x1;
516496
unsigned Bit4 = (Value >> 4) & 0x1;

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,6 @@ enum {
227227
MO_TPREL_ADD = 10,
228228
MO_TLS_GOT_HI = 11,
229229
MO_TLS_GD_HI = 12,
230-
MO_CAPTAB_PCREL_HI = 13,
231-
MO_TPREL_CINCOFFSET = 14,
232-
MO_TLS_IE_CAPTAB_PCREL_HI = 15,
233-
MO_TLS_GD_CAPTAB_PCREL_HI = 16,
234-
MO_CCALL = 17,
235230

236231
// Used to differentiate between target-specific "direct" flags and "bitmask"
237232
// flags. A machine operand can only have one "direct" flag, but can have

llvm/lib/Target/RISCV/MCTargetDesc/RISCVELFObjectWriter.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,6 @@ unsigned RISCVELFObjectWriter::getRelocType(MCContext &Ctx,
8989
return ELF::R_RISCV_CALL_PLT;
9090
case RISCV::fixup_riscv_call_plt:
9191
return ELF::R_RISCV_CALL_PLT;
92-
case RISCV::fixup_riscv_captab_pcrel_hi20:
93-
return ELF::R_RISCV_CHERI_CAPTAB_PCREL_HI20;
94-
case RISCV::fixup_riscv_tls_ie_captab_pcrel_hi20:
95-
return ELF::R_RISCV_CHERI_TLS_IE_CAPTAB_PCREL_HI20;
96-
case RISCV::fixup_riscv_tls_gd_captab_pcrel_hi20:
97-
return ELF::R_RISCV_CHERI_TLS_GD_CAPTAB_PCREL_HI20;
98-
case RISCV::fixup_riscv_cjal:
99-
return ELF::R_RISCV_CHERI_CJAL;
100-
case RISCV::fixup_riscv_ccall:
101-
return ELF::R_RISCV_CHERI_CCALL;
102-
case RISCV::fixup_riscv_rvc_cjump:
103-
return ELF::R_RISCV_CHERI_RVC_CJUMP;
10492
case RISCV::fixup_riscv_add_8:
10593
return ELF::R_RISCV_ADD8;
10694
case RISCV::fixup_riscv_sub_8:
@@ -169,8 +157,6 @@ unsigned RISCVELFObjectWriter::getRelocType(MCContext &Ctx,
169157
return ELF::R_RISCV_NONE;
170158
}
171159
return ELF::R_RISCV_CHERI_CAPABILITY;
172-
case RISCV::fixup_riscv_tprel_cincoffset:
173-
return ELF::R_RISCV_CHERI_TPREL_CINCOFFSET;
174160
case RISCV::fixup_riscv_set_6b:
175161
return ELF::R_RISCV_SET6;
176162
case RISCV::fixup_riscv_sub_6b:

llvm/lib/Target/RISCV/MCTargetDesc/RISCVFixupKinds.h

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -107,29 +107,6 @@ enum Fixups {
107107
// DWARF CFA.
108108
fixup_riscv_sub_6b,
109109

110-
// fixup_riscv_captab_pcrel_hi20 - 20-bit fixup corresponding to
111-
// captab_pcrel_hi(foo) for instructions like auipcc
112-
fixup_riscv_captab_pcrel_hi20,
113-
// fixup_riscv_tprel_cincoffset - A fixup corresponding to
114-
// %tprel_cincoffset(foo) for the cincoffset_tls instruction. Used to provide
115-
// a hint to the linker.
116-
fixup_riscv_tprel_cincoffset,
117-
// fixup_riscv_tls_ie_captab_pcrel_hi20 - 20-bit fixup corresponding to
118-
// tls_ie_captab_pcrel_hi(foo) for instructions like auipcc
119-
fixup_riscv_tls_ie_captab_pcrel_hi20,
120-
// fixup_riscv_tls_gd_captab_pcrel_hi20 - 20-bit fixup corresponding to
121-
// tls_gd_captab_pcrel_hi(foo) for instructions like auipcc
122-
fixup_riscv_tls_gd_captab_pcrel_hi20,
123-
// fixup_riscv_cjal - 20-bit fixup for symbol references in the cjal
124-
// instruction
125-
fixup_riscv_cjal,
126-
// fixup_riscv_call - A fixup representing a ccall attached to the auipcc
127-
// instruction in a pair composed of adjacent auipcc+cjalr instructions.
128-
fixup_riscv_ccall,
129-
// fixup_riscv_rvc_cjump - 11-bit fixup for symbol references in the
130-
// compressed capability jump instruction
131-
fixup_riscv_rvc_cjump,
132-
133110
// Used as a sentinel, must be the last
134111
fixup_riscv_invalid,
135112
NumTargetFixupKinds = fixup_riscv_invalid - FirstTargetFixupKind

0 commit comments

Comments
 (0)