[llvm] a26f8f2 - BPF: Replace deprecated FK_PCRel_ with FK_Data_ fixup and PCRel flag
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 4 22:30:28 PDT 2025
Author: Fangrui Song
Date: 2025-07-04T22:30:23-07:00
New Revision: a26f8f234843965f7e5c15ae14c599c7ab457da1
URL: https://github.com/llvm/llvm-project/commit/a26f8f234843965f7e5c15ae14c599c7ab457da1
DIFF: https://github.com/llvm/llvm-project/commit/a26f8f234843965f7e5c15ae14c599c7ab457da1.diff
LOG: BPF: Replace deprecated FK_PCRel_ with FK_Data_ fixup and PCRel flag
We will unify the generic fixup kinds FK_Data_ and FK_PCRel_. A
FK_PCRel_ kind is essentially the corresponding FK_Data_ fixup with the
PCRel flag set.
Added:
Modified:
llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.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 7a027afb29a13..9c536f729352b 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
@@ -78,11 +78,11 @@ void BPFAsmBackend::applyFixup(const MCFragment &F, const MCFixup &Fixup,
support::endian::write<uint32_t>(&Data[Fixup.getOffset() + 4],
static_cast<uint32_t>(Value),
Endian);
- } else if (Fixup.getKind() == FK_Data_4) {
+ } else if (Fixup.getKind() == FK_Data_4 && !Fixup.isPCRel()) {
support::endian::write<uint32_t>(&Data[Fixup.getOffset()], Value, Endian);
} else if (Fixup.getKind() == FK_Data_8) {
support::endian::write<uint64_t>(&Data[Fixup.getOffset()], Value, Endian);
- } else if (Fixup.getKind() == FK_PCRel_4) {
+ } else if (Fixup.getKind() == FK_Data_4 && Fixup.isPCRel()) {
Value = (uint32_t)((Value - 8) / 8);
if (Endian == llvm::endianness::little) {
Data[Fixup.getOffset() + 1] = 0x10;
@@ -97,7 +97,7 @@ void BPFAsmBackend::applyFixup(const MCFragment &F, const MCFixup &Fixup,
support::endian::write<uint32_t>(&Data[Fixup.getOffset() + 4], Value,
Endian);
} else {
- assert(Fixup.getKind() == FK_PCRel_2);
+ assert(Fixup.getKind() == FK_Data_2 && Fixup.isPCRel());
int64_t ByteOff = (int64_t)Value - 8;
if (ByteOff > INT16_MAX * 8 || ByteOff < INT16_MIN * 8)
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
index 5d653eed1755c..827e928b9b660 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
@@ -45,12 +45,11 @@ unsigned BPFELFObjectWriter::getRelocType(const MCFixup &Fixup,
case FK_SecRel_8:
// LD_imm64 instruction.
return ELF::R_BPF_64_64;
- case FK_PCRel_4:
- // CALL instruction.
- return ELF::R_BPF_64_32;
case FK_Data_8:
return ELF::R_BPF_64_ABS64;
case FK_Data_4:
+ if (Fixup.isPCRel()) // CALL instruction
+ return ELF::R_BPF_64_32;
if (const auto *A = Target.getAddSym()) {
const MCSymbol &Sym = *A;
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
index 03bccb5f4c1d7..cd32e7d16fcac 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
@@ -107,14 +107,14 @@ unsigned BPFMCCodeEmitter::getMachineOpValue(const MCInst &MI,
if (MI.getOpcode() == BPF::JAL)
// func call name
- addFixup(Fixups, 0, Expr, FK_PCRel_4, true);
+ addFixup(Fixups, 0, Expr, FK_Data_4, true);
else if (MI.getOpcode() == BPF::LD_imm64)
addFixup(Fixups, 0, Expr, FK_SecRel_8);
else if (MI.getOpcode() == BPF::JMPL)
addFixup(Fixups, 0, Expr, BPF::FK_BPF_PCRel_4, true);
else
// bb label
- addFixup(Fixups, 0, Expr, FK_PCRel_2, true);
+ addFixup(Fixups, 0, Expr, FK_Data_2, true);
return 0;
}
More information about the llvm-commits
mailing list