[llvm] r182194 - Add basic support for ELF32-ppc relocations to llvm-dwarfdump.
Benjamin Kramer
benny.kra at googlemail.com
Sat May 18 09:00:35 PDT 2013
Author: d0k
Date: Sat May 18 11:00:35 2013
New Revision: 182194
URL: http://llvm.org/viewvc/llvm-project?rev=182194&view=rev
Log:
Add basic support for ELF32-ppc relocations to llvm-dwarfdump.
Should help the ppc32 buildbot.
Modified:
llvm/trunk/include/llvm/Object/ELF.h
llvm/trunk/include/llvm/Object/RelocVisitor.h
Modified: llvm/trunk/include/llvm/Object/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELF.h?rev=182194&r1=182193&r2=182194&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELF.h (original)
+++ llvm/trunk/include/llvm/Object/ELF.h Sat May 18 11:00:35 2013
@@ -2697,6 +2697,8 @@ StringRef ELFObjectFile<ELFT>::getFileFo
return "ELF32-hexagon";
case ELF::EM_MIPS:
return "ELF32-mips";
+ case ELF::EM_PPC:
+ return "ELF32-ppc";
default:
return "ELF32-unknown";
}
Modified: llvm/trunk/include/llvm/Object/RelocVisitor.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/RelocVisitor.h?rev=182194&r1=182193&r2=182194&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/RelocVisitor.h (original)
+++ llvm/trunk/include/llvm/Object/RelocVisitor.h Sat May 18 11:00:35 2013
@@ -85,6 +85,14 @@ public:
HasError = true;
return RelocToApply();
}
+ } else if (FileFormat == "ELF32-ppc") {
+ switch (RelocType) {
+ case llvm::ELF::R_PPC_ADDR32:
+ return visitELF_PPC_ADDR32(R, Value);
+ default:
+ HasError = true;
+ return RelocToApply();
+ }
} else if (FileFormat == "ELF32-mips") {
switch (RelocType) {
case llvm::ELF::R_MIPS_32:
@@ -209,6 +217,13 @@ private:
uint32_t Res = (Value + Addend) & 0xFFFFFFFF;
return RelocToApply(Res, 4);
}
+
+ /// PPC32 ELF
+ RelocToApply visitELF_PPC_ADDR32(RelocationRef R, uint64_t Value) {
+ int64_t Addend = getAddend32BE(R);
+ uint32_t Res = (Value + Addend) & 0xFFFFFFFF;
+ return RelocToApply(Res, 4);
+ }
/// MIPS ELF
RelocToApply visitELF_MIPS_32(RelocationRef R, uint64_t Value) {
More information about the llvm-commits
mailing list