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 f679b6f909953639dda18148ecc20b3b30aacf87..18961fdd785e0d7b778b787e92d4df1c9e41bfbb 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 1ff304494e7e5145d7992781a1591687e14681cf..8e84b3f99f4239f5539be39c0486765c073792d4 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;