OSDN Git Service

Mips relocation R_MIPS_64 relocates a 64 bit double word.
authorJack Carter <jcarter@mips.com>
Tue, 7 Aug 2012 00:01:14 +0000 (00:01 +0000)
committerJack Carter <jcarter@mips.com>
Tue, 7 Aug 2012 00:01:14 +0000 (00:01 +0000)
I hit this in a very large program (spirit.cpp), but
have not figured out how to make a small make check
test for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161366 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp

index f679b6f..18961fd 100644 (file)
@@ -35,6 +35,7 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
     return 0;
   case FK_GPRel_4:
   case FK_Data_4:
+  case FK_Data_8:
   case Mips::fixup_Mips_LO16:
   case Mips::fixup_Mips_GPOFF_HI:
   case Mips::fixup_Mips_GPOFF_LO:
index 1ff3044..8e84b3f 100644 (file)
@@ -103,6 +103,9 @@ unsigned MipsELFObjectWriter::GetRelocType(const MCValue &Target,
   case FK_Data_4:
     Type = ELF::R_MIPS_32;
     break;
+  case FK_Data_8:
+    Type = ELF::R_MIPS_64;
+    break;
   case FK_GPRel_4:
     Type = ELF::R_MIPS_GPREL32;
     break;