If we're searching for a symbol reference to pretty-print a scattered relocation...
authorOwen Anderson <resistor@mac.com>
Thu, 27 Oct 2011 21:53:50 +0000 (21:53 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 27 Oct 2011 21:53:50 +0000 (21:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143151 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/MachOObjectFile.cpp

index 099ac2c37f930a6c89366abc44159e4ce4c43397..65ce5f882a06bc055a6b11480bf757ba21f32e82 100644 (file)
@@ -821,6 +821,24 @@ void MachOObjectFile::printRelocationTargetName(
       return;
     }
 
+    // If we couldn't find a symbol that this relocation refers to, try
+    // to find a section beginning instead.
+    for (section_iterator SI = begin_sections(), SE = end_sections(); SI != SE;
+         SI.increment(ec)) {
+      if (ec) report_fatal_error(ec.message());
+
+      uint64_t Addr;
+      StringRef Name;
+
+      if ((ec = SI->getAddress(Addr)))
+        report_fatal_error(ec.message());
+      if (Addr != Val) continue;
+      if ((ec = SI->getName(Name)))
+        report_fatal_error(ec.message());
+      fmt << Name;
+      return;
+    }
+
     fmt << format("0x%x", Val);
     return;
   }