[PATCH] [Mips64][mcjit] Add R_MIPS_PC32 relocation.

Petar Jovanovic petar.jovanovic at imgtec.com
Mon Jun 8 07:14:28 PDT 2015


REPOSITORY
  rL LLVM

http://reviews.llvm.org/D10235

Files:
  llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
  llvm/trunk/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s

Index: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
===================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
@@ -631,6 +631,10 @@
     uint64_t FinalAddress = (Section.LoadAddress + Offset);
     return ((Value + Addend - FinalAddress - 4) >> 2) & 0xffff;
   }
+  case ELF::R_MIPS_PC32: {
+    uint64_t FinalAddress = (Section.LoadAddress + Offset);
+    return Value + Addend - FinalAddress;
+  }
   case ELF::R_MIPS_PC18_S3: {
     uint64_t FinalAddress = (Section.LoadAddress + Offset);
     return ((Value + Addend - ((FinalAddress | 7) ^ 7)) >> 3) & 0x3ffff;
@@ -669,6 +673,7 @@
       break;
     case ELF::R_MIPS_32:
     case ELF::R_MIPS_GPREL32:
+    case ELF::R_MIPS_PC32:
       writeBytesUnaligned(CalculatedValue & 0xffffffff, TargetPtr, 4);
       break;
     case ELF::R_MIPS_64:
Index: llvm/trunk/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s
===================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/Mips/ELF_Mips64r2N64_PIC_relocations.s
@@ -2,6 +2,15 @@
 # RUN: llc -mtriple=mips64el-unknown-linux -relocation-model=pic -filetype=obj -o %T/test_ELF_ExternalFunction_Mips64N64.o %S/Inputs/ExternalFunction.ll
 # RUN: llvm-rtdyld -triple=mips64el-unknown-linux -verify -map-section test_ELF_Mips64N64.o,.text=0x1000 -map-section test_ELF_ExternalFunction_Mips64N64.o,.text=0x10000 -check=%s %/T/test_ELF_Mips64N64.o %T/test_ELF_ExternalFunction_Mips64N64.o
 
+	.data
+# Test R_MIPS_PC32 relocation.
+# rtdyld-check: *{4}(R_MIPS_PC32) = (foo - R_MIPS_PC32)[31:0]
+R_MIPS_PC32:
+	.word foo-.
+# rtdyld-check: *{4}(R_MIPS_PC32 + 4) = (foo - tmp1)[31:0]
+tmp1:
+	.4byte foo-tmp1
+
 	.text
 	.abicalls
 	.section	.mdebug.abi64,"", at progbits

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10235.27312.patch
Type: text/x-patch
Size: 1983 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150608/b8da9abc/attachment.bin>


More information about the llvm-commits mailing list