]> granicus.if.org Git - llvm/commitdiff
AMDGPU/RelocVisitor: Handle R_AMDGPU_ABS64
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Mon, 13 Mar 2017 06:03:11 +0000 (06:03 +0000)
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Mon, 13 Mar 2017 06:03:11 +0000 (06:03 +0000)
Test is in the separate patch.

Differential Revision: https://reviews.llvm.org/D30027

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

include/llvm/Object/RelocVisitor.h

index 3510d293d73d7c4a7ffa9e686ec332c6014b5007..3a0a62d9283b3b3fb049b1de6c29d4aac05914cd 100644 (file)
@@ -155,6 +155,8 @@ private:
         switch (RelocType) {
         case llvm::ELF::R_AMDGPU_ABS32:
           return visitELF_AMDGPU_ABS32(R, Value);
+        case llvm::ELF::R_AMDGPU_ABS64:
+          return visitELF_AMDGPU_ABS64(R, Value);
         default:
           HasError = true;
           return RelocToApply();
@@ -450,6 +452,11 @@ private:
     return RelocToApply(Value + Addend, 4);
   }
 
+  RelocToApply visitELF_AMDGPU_ABS64(RelocationRef R, uint64_t Value) {
+    int64_t Addend = getELFAddend(R);
+    return RelocToApply(Value + Addend, 8);
+  }
+
   /// I386 COFF
   RelocToApply visitCOFF_I386_SECREL(RelocationRef R, uint64_t Value) {
     return RelocToApply(static_cast<uint32_t>(Value), /*Width=*/4);