mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
BPF: Use official ELF e_machine value
The same value for EM_BPF is being propagated to glibc, elfutils, and binutils. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Alexei Starovoitov <ast@kernel.org> llvm-svn: 275633
This commit is contained in:
parent
0ef2903abf
commit
cd643a03d0
@ -886,6 +886,8 @@ StringRef ELFObjectFile<ELFT>::getFileFormatName() const {
|
|||||||
return (EF.getHeader()->e_ident[ELF::EI_OSABI] == ELF::ELFOSABI_AMDGPU_HSA
|
return (EF.getHeader()->e_ident[ELF::EI_OSABI] == ELF::ELFOSABI_AMDGPU_HSA
|
||||||
&& IsLittleEndian) ?
|
&& IsLittleEndian) ?
|
||||||
"ELF64-amdgpu-hsacobj" : "ELF64-amdgpu";
|
"ELF64-amdgpu-hsacobj" : "ELF64-amdgpu";
|
||||||
|
case ELF::EM_BPF:
|
||||||
|
return "ELF64-BPF";
|
||||||
default:
|
default:
|
||||||
return "ELF64-unknown";
|
return "ELF64-unknown";
|
||||||
}
|
}
|
||||||
@ -948,6 +950,9 @@ unsigned ELFObjectFile<ELFT>::getArch() const {
|
|||||||
&& IsLittleEndian) ?
|
&& IsLittleEndian) ?
|
||||||
Triple::amdgcn : Triple::UnknownArch;
|
Triple::amdgcn : Triple::UnknownArch;
|
||||||
|
|
||||||
|
case ELF::EM_BPF:
|
||||||
|
return IsLittleEndian ? Triple::bpfel : Triple::bpfeb;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return Triple::UnknownArch;
|
return Triple::UnknownArch;
|
||||||
}
|
}
|
||||||
|
@ -311,6 +311,7 @@ enum {
|
|||||||
EM_CSR_KALIMBA = 219, // CSR Kalimba architecture family
|
EM_CSR_KALIMBA = 219, // CSR Kalimba architecture family
|
||||||
EM_AMDGPU = 224, // AMD GPU architecture
|
EM_AMDGPU = 224, // AMD GPU architecture
|
||||||
EM_LANAI = 244, // Lanai 32-bit processor
|
EM_LANAI = 244, // Lanai 32-bit processor
|
||||||
|
EM_BPF = 247, // Linux kernel bpf virtual machine
|
||||||
|
|
||||||
// A request has been made to the maintainer of the official registry for
|
// A request has been made to the maintainer of the official registry for
|
||||||
// such numbers for an official value for WebAssembly. As soon as one is
|
// such numbers for an official value for WebAssembly. As soon as one is
|
||||||
@ -616,6 +617,11 @@ enum {
|
|||||||
#include "ELFRelocs/AMDGPU.def"
|
#include "ELFRelocs/AMDGPU.def"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ELF Relocation types for BPF
|
||||||
|
enum {
|
||||||
|
#include "ELFRelocs/BPF.def"
|
||||||
|
};
|
||||||
|
|
||||||
#undef ELF_RELOC
|
#undef ELF_RELOC
|
||||||
|
|
||||||
// Section header.
|
// Section header.
|
||||||
|
9
include/llvm/Support/ELFRelocs/BPF.def
Normal file
9
include/llvm/Support/ELFRelocs/BPF.def
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef ELF_RELOC
|
||||||
|
#error "ELF_RELOC must be defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// No relocation
|
||||||
|
ELF_RELOC(R_BPF_NONE, 0)
|
||||||
|
// Map index in "maps" section to file descriptor
|
||||||
|
// within ld_64 instruction.
|
||||||
|
ELF_RELOC(R_BPF_MAP_FD, 1)
|
@ -111,6 +111,12 @@ StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ELF::EM_BPF:
|
||||||
|
switch (Type) {
|
||||||
|
#include "llvm/Support/ELFRelocs/BPF.def"
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -195,6 +195,7 @@ ScalarEnumerationTraits<ELFYAML::ELF_EM>::enumeration(IO &IO,
|
|||||||
ECase(EM_56800EX)
|
ECase(EM_56800EX)
|
||||||
ECase(EM_AMDGPU)
|
ECase(EM_AMDGPU)
|
||||||
ECase(EM_LANAI)
|
ECase(EM_LANAI)
|
||||||
|
ECase(EM_BPF)
|
||||||
#undef ECase
|
#undef ECase
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,6 +535,9 @@ void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration(
|
|||||||
case ELF::EM_AMDGPU:
|
case ELF::EM_AMDGPU:
|
||||||
#include "llvm/Support/ELFRelocs/AMDGPU.def"
|
#include "llvm/Support/ELFRelocs/AMDGPU.def"
|
||||||
break;
|
break;
|
||||||
|
case ELF::EM_BPF:
|
||||||
|
#include "llvm/Support/ELFRelocs/BPF.def"
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("Unsupported architecture");
|
llvm_unreachable("Unsupported architecture");
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
BPFELFObjectWriter::BPFELFObjectWriter(uint8_t OSABI)
|
BPFELFObjectWriter::BPFELFObjectWriter(uint8_t OSABI)
|
||||||
: MCELFObjectTargetWriter(/*Is64Bit*/ true, OSABI, ELF::EM_NONE,
|
: MCELFObjectTargetWriter(/*Is64Bit*/ true, OSABI, ELF::EM_BPF,
|
||||||
/*HasRelocationAddend*/ false) {}
|
/*HasRelocationAddend*/ false) {}
|
||||||
|
|
||||||
BPFELFObjectWriter::~BPFELFObjectWriter() {}
|
BPFELFObjectWriter::~BPFELFObjectWriter() {}
|
||||||
|
@ -589,6 +589,7 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj,
|
|||||||
case ELF::EM_ARM:
|
case ELF::EM_ARM:
|
||||||
case ELF::EM_HEXAGON:
|
case ELF::EM_HEXAGON:
|
||||||
case ELF::EM_MIPS:
|
case ELF::EM_MIPS:
|
||||||
|
case ELF::EM_BPF:
|
||||||
res = Target;
|
res = Target;
|
||||||
break;
|
break;
|
||||||
case ELF::EM_WEBASSEMBLY:
|
case ELF::EM_WEBASSEMBLY:
|
||||||
|
@ -956,6 +956,7 @@ static const EnumEntry<unsigned> ElfMachineType[] = {
|
|||||||
ENUM_ENT(EM_AMDGPU, "EM_AMDGPU"),
|
ENUM_ENT(EM_AMDGPU, "EM_AMDGPU"),
|
||||||
ENUM_ENT(EM_WEBASSEMBLY, "EM_WEBASSEMBLY"),
|
ENUM_ENT(EM_WEBASSEMBLY, "EM_WEBASSEMBLY"),
|
||||||
ENUM_ENT(EM_LANAI, "EM_LANAI"),
|
ENUM_ENT(EM_LANAI, "EM_LANAI"),
|
||||||
|
ENUM_ENT(EM_BPF, "EM_BPF"),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const EnumEntry<unsigned> ElfSymbolBindings[] = {
|
static const EnumEntry<unsigned> ElfSymbolBindings[] = {
|
||||||
|
Loading…
Reference in New Issue
Block a user