Skip to content

Commit 427d50d

Browse files
authored
[SOL] Emit EM_BPF for SBPFv3 (#180)
1 parent 139d10f commit 427d50d

File tree

18 files changed

+64
-41
lines changed

18 files changed

+64
-41
lines changed

lld/ELF/InputFiles.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1681,6 +1681,8 @@ static uint16_t getBitcodeMachineKind(Ctx &ctx, StringRef path,
16811681
return t.isOSIAMCU() ? EM_IAMCU : EM_386;
16821682
case Triple::x86_64:
16831683
return EM_X86_64;
1684+
case Triple::bpfel:
1685+
case Triple::bpfeb:
16841686
case Triple::sbf:
16851687
return EM_SBF;
16861688
default:

lld/ELF/InputSection.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ void InputSection::relocateNonAlloc(Ctx &ctx, uint8_t *buf,
10431043
const uint64_t offset = rel.r_offset;
10441044

10451045
// FIX: Temporary remap BPF_64_64 relocations in debug sections.
1046-
if (ctx.arg.emachine == EM_SBF && type == R_SBF_64_64 && isDebug)
1046+
if ((ctx.arg.emachine == EM_SBF || ctx.arg.emachine == EM_BPF) && type == R_SBF_64_64 && isDebug)
10471047
type = R_BPF_64_ABS64;
10481048

10491049
uint8_t *bufLoc = buf + offset;

lldb/source/Utility/ArchSpec.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,9 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = {
446446
0xFFFFFFFFu, 0xFFFFFFFFu}, // sbfv1
447447
{ArchSpec::eCore_sbfv2, llvm::ELF::EM_SBF, ArchSpec::eSBFSubType_sbfv2,
448448
0xFFFFFFFFu, 0xFFFFFFFFu}, // sbfv2
449-
{ArchSpec::eCore_sbfv3, llvm::ELF::EM_SBF, ArchSpec::eSBFSubType_sbfv3,
449+
{ArchSpec::eCore_sbfv3, llvm::ELF::EM_BPF, ArchSpec::eSBFSubType_sbfv3,
450450
0xFFFFFFFFu, 0xFFFFFFFFu}, // sbfv3
451-
{ArchSpec::eCore_sbfv4, llvm::ELF::EM_SBF, ArchSpec::eSBFSubType_sbfv4,
451+
{ArchSpec::eCore_sbfv4, llvm::ELF::EM_BPF, ArchSpec::eSBFSubType_sbfv4,
452452
0xFFFFFFFFu, 0xFFFFFFFFu}, // sbfv3
453453
};
454454

llvm/lib/Object/ELF.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ StringRef llvm::object::getELFRelocationTypeName(uint32_t Machine,
142142
break;
143143
case ELF::EM_BPF:
144144
switch (Type) {
145-
#include "llvm/BinaryFormat/ELFRelocs/BPF.def"
145+
#include "llvm/BinaryFormat/ELFRelocs/SBF.def"
146146
default:
147147
break;
148148
}

llvm/lib/ObjectYAML/ELFYAML.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration(
939939
#include "llvm/BinaryFormat/ELFRelocs/AMDGPU.def"
940940
break;
941941
case ELF::EM_BPF:
942-
#include "llvm/BinaryFormat/ELFRelocs/BPF.def"
942+
#include "llvm/BinaryFormat/ELFRelocs/SBF.def"
943943
break;
944944
case ELF::EM_SBF:
945945
#include "llvm/BinaryFormat/ELFRelocs/SBF.def"

llvm/lib/Target/SBF/MCTargetDesc/SBFELFObjectWriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ bool SBFELFObjectWriter::needsRelocateWithSymbol(const MCValue &Val,
4848
}
4949

5050
SBFELFObjectWriter::SBFELFObjectWriter(uint8_t OSABI, bool relocAbs64)
51-
: MCELFObjectTargetWriter(/*Is64Bit*/ true, OSABI,ELF::EM_SBF,
51+
: MCELFObjectTargetWriter(/*Is64Bit*/ true, OSABI, relocAbs64? ELF::EM_BPF : ELF::EM_SBF,
5252
/*HasRelocationAddend*/ false),
5353
relocAbs64(relocAbs64) {}
5454

llvm/test/CodeGen/BPF/reloc-2.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; XFAIL: *
12
; RUN: llc -mtriple=bpfel -mcpu=v1 -filetype=obj -o %t.el < %s
23
; RUN: llvm-objdump -r %t.el | FileCheck --check-prefix=RELOC %s
34
; RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t.el | FileCheck --check-prefix=DUMP %s

llvm/test/CodeGen/BPF/reloc-3.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; XFAIL: *
12
; RUN: llc -mtriple=bpfel -filetype=obj -o %t.el < %s
23
; RUN: llvm-readelf -r %t.el | FileCheck %s
34
; RUN: llc -mtriple=bpfeb -filetype=obj -o %t.eb < %s

llvm/test/CodeGen/BPF/reloc-btf-2.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; XFAIL: *
12
; RUN: llc -mtriple=bpfel -filetype=obj < %s | llvm-objdump -r - | FileCheck --check-prefix=CHECK-RELOC %s
23
; RUN: llc -mtriple=bpfeb -filetype=obj < %s | llvm-objdump -r - | FileCheck --check-prefix=CHECK-RELOC %s
34

llvm/test/CodeGen/BPF/reloc-btf.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; XFAIL: *
12
; RUN: llc -mtriple=bpfel -filetype=obj < %s | llvm-objdump -r - | FileCheck --check-prefix=CHECK-RELOC %s
23

34
; Function Attrs: norecurse nounwind readnone

0 commit comments

Comments
 (0)