Add support for the R_ARM_ABS32 relocation.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Apr 2014 02:27:00 +0000 (02:27 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Apr 2014 02:27:00 +0000 (02:27 +0000)
This should bring the arm buildbots back.

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

include/llvm/Object/RelocVisitor.h
test/DebugInfo/Inputs/arm-relocs.elf-arm [new file with mode: 0644]
test/DebugInfo/arm-relocs.test [new file with mode: 0644]

index c72db2ce412918078952b73f6e1144239bb0c1f9..a3aaf17f1d66fea43b421aa0f0e27614d95f8231 100644 (file)
@@ -153,6 +153,14 @@ public:
         HasError = true;
         return RelocToApply();
       }
+    } else if (FileFormat == "ELF32-arm") {
+      switch (RelocType) {
+      default:
+        HasError = true;
+        return RelocToApply();
+      case llvm::ELF::R_ARM_ABS32:
+        return visitELF_ARM_ABS32(R, Value);
+      }
     }
     HasError = true;
     return RelocToApply();
@@ -325,6 +333,11 @@ private:
     return RelocToApply(Value + Addend, 8);
   }
 
+  RelocToApply visitELF_ARM_ABS32(RelocationRef R, uint64_t Value) {
+    int64_t Addend = getAddend32LE(R);
+    return RelocToApply(Value + Addend, 4);
+  }
+
 };
 
 }
diff --git a/test/DebugInfo/Inputs/arm-relocs.elf-arm b/test/DebugInfo/Inputs/arm-relocs.elf-arm
new file mode 100644 (file)
index 0000000..4864c36
Binary files /dev/null and b/test/DebugInfo/Inputs/arm-relocs.elf-arm differ
diff --git a/test/DebugInfo/arm-relocs.test b/test/DebugInfo/arm-relocs.test
new file mode 100644 (file)
index 0000000..13e11f7
--- /dev/null
@@ -0,0 +1,5 @@
+RUN: llvm-dwarfdump %p/Inputs/arm-relocs.elf-arm | FileCheck %s
+
+; CHECK: debug_info contents
+; CHECK: DW_TAG_enumeration_type
+; CHECK-NEXT: DW_AT_name{{.*}} = "e1"