summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-04-03 02:27:00 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-04-03 02:27:00 +0000
commit41de905e259cb49cd055806fa87ec787010ee687 (patch)
tree94944a83540113b46a5bbdb21bdb72e3797c8564
parentb0e3b66fa5ef650a0a358a1db6b0067ed351e4ad (diff)
downloadbcm5719-llvm-41de905e259cb49cd055806fa87ec787010ee687.tar.gz
bcm5719-llvm-41de905e259cb49cd055806fa87ec787010ee687.zip
Add support for the R_ARM_ABS32 relocation.
This should bring the arm buildbots back. llvm-svn: 205502
-rw-r--r--llvm/include/llvm/Object/RelocVisitor.h13
-rw-r--r--llvm/test/DebugInfo/Inputs/arm-relocs.elf-armbin0 -> 3012 bytes
-rw-r--r--llvm/test/DebugInfo/arm-relocs.test5
3 files changed, 18 insertions, 0 deletions
diff --git a/llvm/include/llvm/Object/RelocVisitor.h b/llvm/include/llvm/Object/RelocVisitor.h
index c72db2ce412..a3aaf17f1d6 100644
--- a/llvm/include/llvm/Object/RelocVisitor.h
+++ b/llvm/include/llvm/Object/RelocVisitor.h
@@ -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/llvm/test/DebugInfo/Inputs/arm-relocs.elf-arm b/llvm/test/DebugInfo/Inputs/arm-relocs.elf-arm
new file mode 100644
index 00000000000..4864c36256f
--- /dev/null
+++ b/llvm/test/DebugInfo/Inputs/arm-relocs.elf-arm
Binary files differ
diff --git a/llvm/test/DebugInfo/arm-relocs.test b/llvm/test/DebugInfo/arm-relocs.test
new file mode 100644
index 00000000000..13e11f7043f
--- /dev/null
+++ b/llvm/test/DebugInfo/arm-relocs.test
@@ -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"
OpenPOWER on IntegriCloud