[llvm] r218393 - Revert "Refactor the RelocVisitor::visit method"

Kaelyn Takata rikka at google.com
Wed Sep 24 10:49:08 PDT 2014


Author: rikka
Date: Wed Sep 24 12:49:07 2014
New Revision: 218393

URL: http://llvm.org/viewvc/llvm-project?rev=218393&view=rev
Log:
Revert "Refactor the RelocVisitor::visit method"

This reverts commit faac033f7364bb4226e22c8079c221c96af10d02.

The test depends on all targets to be enabled in llc in order to pass,
and needs to be rewritten/refactored to not have that dependency.

Removed:
    llvm/trunk/test/DebugInfo/processes-relocations.ll
Modified:
    llvm/trunk/include/llvm/Object/ELFObjectFile.h
    llvm/trunk/include/llvm/Object/RelocVisitor.h
    llvm/trunk/lib/DebugInfo/DWARFContext.cpp

Modified: llvm/trunk/include/llvm/Object/ELFObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFObjectFile.h?rev=218393&r1=218392&r2=218393&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ELFObjectFile.h Wed Sep 24 12:49:07 2014
@@ -925,8 +925,6 @@ unsigned ELFObjectFile<ELFT>::getArch()
     default:
       report_fatal_error("Invalid ELFCLASS!");
     }
-  case ELF::EM_PPC:
-    return Triple::ppc;
   case ELF::EM_PPC64:
     return IsLittleEndian ? Triple::ppc64le : Triple::ppc64;
   case ELF::EM_S390:

Modified: llvm/trunk/include/llvm/Object/RelocVisitor.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/RelocVisitor.h?rev=218393&r1=218392&r2=218393&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/RelocVisitor.h (original)
+++ llvm/trunk/include/llvm/Object/RelocVisitor.h Wed Sep 24 12:49:07 2014
@@ -40,18 +40,16 @@ struct RelocToApply {
 /// @brief Base class for object file relocation visitors.
 class RelocVisitor {
 public:
-  explicit RelocVisitor(ObjectFile &Obj)
-    : ObjToVisit(Obj), HasError(false) {}
+  explicit RelocVisitor(StringRef FileFormat)
+    : FileFormat(FileFormat), HasError(false) {}
 
   // TODO: Should handle multiple applied relocations via either passing in the
   // previously computed value or just count paired relocations as a single
   // visit.
   RelocToApply visit(uint32_t RelocType, RelocationRef R, uint64_t SecAddr = 0,
                      uint64_t Value = 0) {
-    if (ObjToVisit.getBytesInAddress() == 8) { // 64-bit object file
-      switch (ObjToVisit.getArch()) {
-      case Triple::x86_64:
-        switch (RelocType) {
+    if (FileFormat == "ELF64-x86-64") {
+      switch (RelocType) {
         case llvm::ELF::R_X86_64_NONE:
           return visitELF_X86_64_NONE(R);
         case llvm::ELF::R_X86_64_64:
@@ -65,129 +63,113 @@ public:
         default:
           HasError = true;
           return RelocToApply();
-        }
-      case Triple::aarch64:
-        switch (RelocType) {
-        case llvm::ELF::R_AARCH64_ABS32:
-          return visitELF_AARCH64_ABS32(R, Value);
-        case llvm::ELF::R_AARCH64_ABS64:
-          return visitELF_AARCH64_ABS64(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::mips64el:
-      case Triple::mips64:
-        switch (RelocType) {
-        case llvm::ELF::R_MIPS_32:
-          return visitELF_MIPS_32(R, Value);
-        case llvm::ELF::R_MIPS_64:
-          return visitELF_MIPS_64(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::ppc64le:
-      case Triple::ppc64:
-        switch (RelocType) {
-        case llvm::ELF::R_PPC64_ADDR32:
-          return visitELF_PPC64_ADDR32(R, Value);
-        case llvm::ELF::R_PPC64_ADDR64:
-          return visitELF_PPC64_ADDR64(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::systemz:
-        switch (RelocType) {
-        case llvm::ELF::R_390_32:
-          return visitELF_390_32(R, Value);
-        case llvm::ELF::R_390_64:
-          return visitELF_390_64(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::sparcv9:
-        switch (RelocType) {
-        case llvm::ELF::R_SPARC_32:
-        case llvm::ELF::R_SPARC_UA32:
-          return visitELF_SPARCV9_32(R, Value);
-        case llvm::ELF::R_SPARC_64:
-        case llvm::ELF::R_SPARC_UA64:
-          return visitELF_SPARCV9_64(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
+      }
+    } else if (FileFormat == "ELF32-i386") {
+      switch (RelocType) {
+      case llvm::ELF::R_386_NONE:
+        return visitELF_386_NONE(R);
+      case llvm::ELF::R_386_32:
+        return visitELF_386_32(R, Value);
+      case llvm::ELF::R_386_PC32:
+        return visitELF_386_PC32(R, Value, SecAddr);
       default:
         HasError = true;
         return RelocToApply();
       }
-    } else if (ObjToVisit.getBytesInAddress() == 4) { // 32-bit object file
-      switch (ObjToVisit.getArch()) {
-      case Triple::x86:
-        switch (RelocType) {
-        case llvm::ELF::R_386_NONE:
-          return visitELF_386_NONE(R);
-        case llvm::ELF::R_386_32:
-          return visitELF_386_32(R, Value);
-        case llvm::ELF::R_386_PC32:
-          return visitELF_386_PC32(R, Value, SecAddr);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::ppc:
-        switch (RelocType) {
-        case llvm::ELF::R_PPC_ADDR32:
-          return visitELF_PPC_ADDR32(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::arm:
-      case Triple::armeb:
-        switch (RelocType) {
-        default:
-          HasError = true;
-          return RelocToApply();
-        case llvm::ELF::R_ARM_ABS32:
-          return visitELF_ARM_ABS32(R, Value);
-        }
-      case Triple::hexagon:
-        llvm_unreachable("Unimplemented");
-      case Triple::mipsel:
-      case Triple::mips:
-        switch (RelocType) {
-        case llvm::ELF::R_MIPS_32:
-          return visitELF_MIPS_32(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
-      case Triple::sparc:
-        switch (RelocType) {
-        case llvm::ELF::R_SPARC_32:
-        case llvm::ELF::R_SPARC_UA32:
-          return visitELF_SPARC_32(R, Value);
-        default:
-          HasError = true;
-          return RelocToApply();
-        }
+    } else if (FileFormat == "ELF64-ppc64") {
+      switch (RelocType) {
+      case llvm::ELF::R_PPC64_ADDR32:
+        return visitELF_PPC64_ADDR32(R, Value);
+      case llvm::ELF::R_PPC64_ADDR64:
+        return visitELF_PPC64_ADDR64(R, Value);
+      default:
+        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:
+        return visitELF_MIPS_32(R, Value);
+      default:
+        HasError = true;
+        return RelocToApply();
+      }
+    } else if (FileFormat == "ELF64-mips") {
+      switch (RelocType) {
+      case llvm::ELF::R_MIPS_32:
+        return visitELF_MIPS_32(R, Value);
+      case llvm::ELF::R_MIPS_64:
+        return visitELF_MIPS_64(R, Value);
+      default:
+        HasError = true;
+        return RelocToApply();
+      }
+    } else if (FileFormat == "ELF64-aarch64") {
+      switch (RelocType) {
+      case llvm::ELF::R_AARCH64_ABS32:
+        return visitELF_AARCH64_ABS32(R, Value);
+      case llvm::ELF::R_AARCH64_ABS64:
+        return visitELF_AARCH64_ABS64(R, Value);
+      default:
+        HasError = true;
+        return RelocToApply();
+      }
+    } else if (FileFormat == "ELF64-s390") {
+      switch (RelocType) {
+      case llvm::ELF::R_390_32:
+        return visitELF_390_32(R, Value);
+      case llvm::ELF::R_390_64:
+        return visitELF_390_64(R, Value);
+      default:
+        HasError = true;
+        return RelocToApply();
+      }
+    } else if (FileFormat == "ELF32-sparc") {
+      switch (RelocType) {
+      case llvm::ELF::R_SPARC_32:
+      case llvm::ELF::R_SPARC_UA32:
+        return visitELF_SPARC_32(R, Value);
+      default:
+        HasError = true;
+        return RelocToApply();
+      }
+    } else if (FileFormat == "ELF64-sparc") {
+      switch (RelocType) {
+      case llvm::ELF::R_SPARC_32:
+      case llvm::ELF::R_SPARC_UA32:
+        return visitELF_SPARCV9_32(R, Value);
+      case llvm::ELF::R_SPARC_64:
+      case llvm::ELF::R_SPARC_UA64:
+        return visitELF_SPARCV9_64(R, Value);
+      default:
+        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);
       }
-    } else {
-      report_fatal_error("Invalid word size in object file");
     }
+    HasError = true;
+    return RelocToApply();
   }
 
   bool error() { return HasError; }
 
 private:
-  ObjectFile &ObjToVisit;
+  StringRef FileFormat;
   bool HasError;
 
   int64_t getAddend32LE(RelocationRef R) {

Modified: llvm/trunk/lib/DebugInfo/DWARFContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFContext.cpp?rev=218393&r1=218392&r2=218393&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARFContext.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARFContext.cpp Wed Sep 24 12:49:07 2014
@@ -667,7 +667,7 @@ DWARFContextInMemory::DWARFContextInMemo
           Sym->getAddress(SymAddr);
         }
 
-        object::RelocVisitor V(Obj);
+        object::RelocVisitor V(Obj.getFileFormatName());
         // The section address is always 0 for debug sections.
         object::RelocToApply R(V.visit(Type, Reloc, 0, SymAddr));
         if (V.error()) {

Removed: llvm/trunk/test/DebugInfo/processes-relocations.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/processes-relocations.ll?rev=218392&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/processes-relocations.ll (original)
+++ llvm/trunk/test/DebugInfo/processes-relocations.ll (removed)
@@ -1,26 +0,0 @@
-; Make sure that for each supported architecture in RelocVisitor::visit,
-; the visitor does compute the relocation.
-; RUN: llc -filetype=obj -O0 < %s -mtriple x86_64-none-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple i386-none-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple powerpc64-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple powerpc-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple mips-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple mips64-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple arm-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple aarch64-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple s390x-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple sparc-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-; RUN: llc -filetype=obj -O0 < %s -mtriple sparcv9-unknown-linux-eabi | llvm-dwarfdump - 2>&1 | FileCheck %s
-
-; CHECK-NOT: failed to compute relocation
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4}
-!llvm.ident = !{!5}
-
-!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.6.0 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !2, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/a/empty.c] [DW_LANG_C99]
-!1 = metadata !{metadata !"empty.c", metadata !"/a"}
-!2 = metadata !{}
-!3 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
-!4 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}
-!5 = metadata !{metadata !"clang version 3.6.0 "}





More information about the llvm-commits mailing list