[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