[llvm] 21cf7bd - BPFMCCodeEmitter: Set PCRel at fixup creation
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 4 17:52:48 PDT 2025
Author: Fangrui Song
Date: 2025-07-04T17:52:43-07:00
New Revision: 21cf7bd4ec511a676fcfc07eb33688e93235edcd
URL: https://github.com/llvm/llvm-project/commit/21cf7bd4ec511a676fcfc07eb33688e93235edcd
DIFF: https://github.com/llvm/llvm-project/commit/21cf7bd4ec511a676fcfc07eb33688e93235edcd.diff
LOG: BPFMCCodeEmitter: Set PCRel at fixup creation
Avoid reliance on the MCAssembler::evaluateFixup workaround that checks
MCFixupKindInfo::FKF_IsPCRel. Additionally, standardize how fixups are
appended. This helper will facilitate future fixup data structure
optimizations.
Added:
Modified:
llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
index 4972c51ea8d7e..7a027afb29a13 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
@@ -44,7 +44,7 @@ class BPFAsmBackend : public MCAsmBackend {
MCFixupKindInfo BPFAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
const static MCFixupKindInfo Infos[BPF::NumTargetFixupKinds] = {
- { "FK_BPF_PCRel_4", 0, 32, MCFixupKindInfo::FKF_IsPCRel },
+ {"FK_BPF_PCRel_4", 0, 32, 0},
};
if (Kind < FirstTargetFixupKind)
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
index bd9d2de58c8b2..03bccb5f4c1d7 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
@@ -77,6 +77,11 @@ MCCodeEmitter *llvm::createBPFbeMCCodeEmitter(const MCInstrInfo &MCII,
return new BPFMCCodeEmitter(MCII, *Ctx.getRegisterInfo(), false, Ctx);
}
+static void addFixup(SmallVectorImpl<MCFixup> &Fixups, uint32_t Offset,
+ const MCExpr *Value, uint16_t Kind, bool PCRel = false) {
+ Fixups.push_back(MCFixup::create(Offset, Value, Kind, PCRel));
+}
+
unsigned BPFMCCodeEmitter::getMachineOpValue(const MCInst &MI,
const MCOperand &MO,
SmallVectorImpl<MCFixup> &Fixups,
@@ -102,14 +107,14 @@ unsigned BPFMCCodeEmitter::getMachineOpValue(const MCInst &MI,
if (MI.getOpcode() == BPF::JAL)
// func call name
- Fixups.push_back(MCFixup::create(0, Expr, FK_PCRel_4));
+ addFixup(Fixups, 0, Expr, FK_PCRel_4, true);
else if (MI.getOpcode() == BPF::LD_imm64)
- Fixups.push_back(MCFixup::create(0, Expr, FK_SecRel_8));
+ addFixup(Fixups, 0, Expr, FK_SecRel_8);
else if (MI.getOpcode() == BPF::JMPL)
- Fixups.push_back(MCFixup::create(0, Expr, (MCFixupKind)BPF::FK_BPF_PCRel_4));
+ addFixup(Fixups, 0, Expr, BPF::FK_BPF_PCRel_4, true);
else
// bb label
- Fixups.push_back(MCFixup::create(0, Expr, FK_PCRel_2));
+ addFixup(Fixups, 0, Expr, FK_PCRel_2, true);
return 0;
}
More information about the llvm-commits
mailing list