mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
[mips] Add support for ELF64-mips and the R_MIPS_32/R_MIPS_64 relocs for it.
Summary: This fixes several test failures when building LLVM on a MIPS host. The failures were: LLVM :: DebugInfo/enum.ll LLVM :: DebugInfo/inlined-arguments.ll LLVM :: DebugInfo/member-order.ll LLVM :: DebugInfo/namespace.ll LLVM :: DebugInfo/template-recursive-void.ll LLVM :: DebugInfo/tu-composite.ll LLVM :: DebugInfo/two-cus-from-same-file.ll LLVM :: Linker/type-unique-simple-a.ll LLVM :: Linker/type-unique-simple2.ll Reviewers: jacksprat, matheusalmeida Reviewed By: matheusalmeida Differential Revision: http://llvm-reviews.chandlerc.com/D2721 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
39d8dcb53b
commit
aa43604648
@ -946,6 +946,8 @@ StringRef ELFObjectFile<ELFT>::getFileFormatName() const {
|
|||||||
return "ELF64-s390";
|
return "ELF64-s390";
|
||||||
case ELF::EM_SPARCV9:
|
case ELF::EM_SPARCV9:
|
||||||
return "ELF64-sparc";
|
return "ELF64-sparc";
|
||||||
|
case ELF::EM_MIPS:
|
||||||
|
return "ELF64-mips";
|
||||||
default:
|
default:
|
||||||
return "ELF64-unknown";
|
return "ELF64-unknown";
|
||||||
}
|
}
|
||||||
|
@ -103,6 +103,16 @@ public:
|
|||||||
HasError = true;
|
HasError = true;
|
||||||
return RelocToApply();
|
return RelocToApply();
|
||||||
}
|
}
|
||||||
|
} else if (FileFormat == "ELF64-mips") {
|
||||||
|
switch (RelocType) {
|
||||||
|
case llvm::ELF::R_MIPS_32:
|
||||||
|
return visitELF_MIPS_32(R, Value);
|
||||||
|
case llvm::ELF::R_MIPS_64:
|
||||||
|
return visitELF_MIPS_64(R, Value);
|
||||||
|
default:
|
||||||
|
HasError = true;
|
||||||
|
return RelocToApply();
|
||||||
|
}
|
||||||
} else if (FileFormat == "ELF64-aarch64") {
|
} else if (FileFormat == "ELF64-aarch64") {
|
||||||
switch (RelocType) {
|
switch (RelocType) {
|
||||||
case llvm::ELF::R_AARCH64_ABS32:
|
case llvm::ELF::R_AARCH64_ABS32:
|
||||||
@ -260,6 +270,13 @@ private:
|
|||||||
return RelocToApply(Res, 4);
|
return RelocToApply(Res, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RelocToApply visitELF_MIPS_64(RelocationRef R, uint64_t Value) {
|
||||||
|
int64_t Addend;
|
||||||
|
getELFRelocationAddend(R, Addend);
|
||||||
|
uint64_t Res = (Value + Addend);
|
||||||
|
return RelocToApply(Res, 8);
|
||||||
|
}
|
||||||
|
|
||||||
// AArch64 ELF
|
// AArch64 ELF
|
||||||
RelocToApply visitELF_AARCH64_ABS32(RelocationRef R, uint64_t Value) {
|
RelocToApply visitELF_AARCH64_ABS32(RelocationRef R, uint64_t Value) {
|
||||||
int64_t Addend = getAddend64LE(R);
|
int64_t Addend = getAddend64LE(R);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user