<p dir="ltr">For what it is worth, it would be nice for this to be in lib/Object if we can figure out how to avoid the code duplication. </p>
<p dir="ltr">Thanks, <br>
Rafael </p>
<div class="gmail_quote">On Jun 23, 2015 4:19 PM, "Sanjoy Das" <<a href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: sanjoy<br>
Date: Tue Jun 23 15:09:03 2015<br>
New Revision: 240448<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240448-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=nbliRYVLjyX4F06A9Zdr6lw2QLsqeG8XF4CbWuN8QLI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=240448&view=rev</a><br>
Log:<br>
Revert "[FaultMaps] Move FaultMapParser to Object/"<br>
<br>
This reverts commit r240364 (git c49542e5bb186).  The issue r240364 was<br>
trying to fix was fixed independently in r240362.<br>
<br>
Removed:<br>
    llvm/trunk/include/llvm/Object/FaultMapParser.h<br>
    llvm/trunk/lib/Object/FaultMapParser.cpp<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/FaultMaps.h<br>
    llvm/trunk/lib/CodeGen/FaultMaps.cpp<br>
    llvm/trunk/lib/Object/CMakeLists.txt<br>
    llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/FaultMaps.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_CodeGen_FaultMaps.h-3Frev-3D240448-26r1-3D240447-26r2-3D240448-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=osAS04fAELrVN4SDtgQuG_pGe1yx0OWbL6blewozuRM&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/FaultMaps.h?rev=240448&r1=240447&r2=240448&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/FaultMaps.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/FaultMaps.h Tue Jun 23 15:09:03 2015<br>
@@ -12,6 +12,8 @@<br>
<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/MC/MCSymbol.h"<br>
+#include "llvm/Support/Endian.h"<br>
+#include "llvm/Support/Format.h"<br>
<br>
 #include <vector><br>
 #include <map><br>
@@ -69,6 +71,150 @@ private:<br>
   void emitFunctionInfo(const MCSymbol *FnLabel, const FunctionFaultInfos &FFI);<br>
 };<br>
<br>
-}<br>
+/// A parser for the __llvm_faultmaps section generated by the FaultMaps class<br>
+/// above.  This parser is version locked with with the __llvm_faultmaps section<br>
+/// generated by the version of LLVM that includes it.  No guarantees are made<br>
+/// with respect to forward or backward compatibility.<br>
+class FaultMapParser {<br>
+  typedef uint8_t FaultMapVersionType;<br>
+  static const size_t FaultMapVersionOffset = 0;<br>
+<br>
+  typedef uint8_t Reserved0Type;<br>
+  static const size_t Reserved0Offset =<br>
+      FaultMapVersionOffset + sizeof(FaultMapVersionType);<br>
+<br>
+  typedef uint16_t Reserved1Type;<br>
+  static const size_t Reserved1Offset = Reserved0Offset + sizeof(Reserved0Type);<br>
+<br>
+  typedef uint32_t NumFunctionsType;<br>
+  static const size_t NumFunctionsOffset =<br>
+      Reserved1Offset + sizeof(Reserved1Type);<br>
+<br>
+  static const size_t FunctionInfosOffset =<br>
+      NumFunctionsOffset + sizeof(NumFunctionsType);<br>
+<br>
+  const uint8_t *P;<br>
+  const uint8_t *E;<br>
+<br>
+  template <typename T> static T read(const uint8_t *P, const uint8_t *E) {<br>
+    assert(P + sizeof(T) <= E && "out of bounds read!");<br>
+    return support::endian::read<T, support::little, 1>(P);<br>
+  }<br>
+<br>
+public:<br>
+  class FunctionFaultInfoAccessor {<br>
+    typedef uint32_t FaultKindType;<br>
+    static const size_t FaultKindOffset = 0;<br>
+<br>
+    typedef uint32_t FaultingPCOffsetType;<br>
+    static const size_t FaultingPCOffsetOffset =<br>
+        FaultKindOffset + sizeof(FaultKindType);<br>
+<br>
+    typedef uint32_t HandlerPCOffsetType;<br>
+    static const size_t HandlerPCOffsetOffset =<br>
+        FaultingPCOffsetOffset + sizeof(FaultingPCOffsetType);<br>
+<br>
+    const uint8_t *P;<br>
+    const uint8_t *E;<br>
+<br>
+  public:<br>
+    static const size_t Size =<br>
+        HandlerPCOffsetOffset + sizeof(HandlerPCOffsetType);<br>
+<br>
+    explicit FunctionFaultInfoAccessor(const uint8_t *P, const uint8_t *E)<br>
+        : P(P), E(E) {}<br>
+<br>
+    FaultKindType getFaultKind() const {<br>
+      return read<FaultKindType>(P + FaultKindOffset, E);<br>
+    }<br>
+<br>
+    FaultingPCOffsetType getFaultingPCOffset() const {<br>
+      return read<FaultingPCOffsetType>(P + FaultingPCOffsetOffset, E);<br>
+    }<br>
+<br>
+    HandlerPCOffsetType getHandlerPCOffset() const {<br>
+      return read<HandlerPCOffsetType>(P + HandlerPCOffsetOffset, E);<br>
+    }<br>
+  };<br>
+<br>
+  class FunctionInfoAccessor {<br>
+    typedef uint64_t FunctionAddrType;<br>
+    static const size_t FunctionAddrOffset = 0;<br>
+<br>
+    typedef uint32_t NumFaultingPCsType;<br>
+    static const size_t NumFaultingPCsOffset =<br>
+        FunctionAddrOffset + sizeof(FunctionAddrType);<br>
+<br>
+    typedef uint32_t ReservedType;<br>
+    static const size_t ReservedOffset =<br>
+        NumFaultingPCsOffset + sizeof(NumFaultingPCsType);<br>
+<br>
+    static const size_t FunctionFaultInfosOffset =<br>
+        ReservedOffset + sizeof(ReservedType);<br>
+<br>
+    static const size_t FunctionInfoHeaderSize = FunctionFaultInfosOffset;<br>
+<br>
+    const uint8_t *P;<br>
+    const uint8_t *E;<br>
+<br>
+  public:<br>
+    FunctionInfoAccessor() : P(nullptr), E(nullptr) {}<br>
+<br>
+    explicit FunctionInfoAccessor(const uint8_t *P, const uint8_t *E)<br>
+        : P(P), E(E) {}<br>
+<br>
+    FunctionAddrType getFunctionAddr() const {<br>
+      return read<FunctionAddrType>(P + FunctionAddrOffset, E);<br>
+    }<br>
+<br>
+    NumFaultingPCsType getNumFaultingPCs() const {<br>
+      return read<NumFaultingPCsType>(P + NumFaultingPCsOffset, E);<br>
+    }<br>
+<br>
+    FunctionFaultInfoAccessor getFunctionFaultInfoAt(uint32_t Index) const {<br>
+      assert(Index < getNumFaultingPCs() && "index out of bounds!");<br>
+      const uint8_t *Begin = P + FunctionFaultInfosOffset +<br>
+                             FunctionFaultInfoAccessor::Size * Index;<br>
+      return FunctionFaultInfoAccessor(Begin, E);<br>
+    }<br>
+<br>
+    FunctionInfoAccessor getNextFunctionInfo() const {<br>
+      size_t MySize = FunctionInfoHeaderSize +<br>
+                      getNumFaultingPCs() * FunctionFaultInfoAccessor::Size;<br>
+<br>
+      const uint8_t *Begin = P + MySize;<br>
+      assert(Begin < E && "out of bounds!");<br>
+      return FunctionInfoAccessor(Begin, E);<br>
+    }<br>
+  };<br>
+<br>
+  explicit FaultMapParser(const uint8_t *Begin, const uint8_t *End)<br>
+      : P(Begin), E(End) {}<br>
+<br>
+  FaultMapVersionType getFaultMapVersion() const {<br>
+    auto Version = read<FaultMapVersionType>(P + FaultMapVersionOffset, E);<br>
+    assert(Version == 1 && "only version 1 supported!");<br>
+    return Version;<br>
+  }<br>
+<br>
+  NumFunctionsType getNumFunctions() const {<br>
+    return read<NumFunctionsType>(P + NumFunctionsOffset, E);<br>
+  }<br>
+<br>
+  FunctionInfoAccessor getFirstFunctionInfo() const {<br>
+    const uint8_t *Begin = P + FunctionInfosOffset;<br>
+    return FunctionInfoAccessor(Begin, E);<br>
+  }<br>
+};<br>
+<br>
+raw_ostream &<br>
+operator<<(raw_ostream &OS, const FaultMapParser::FunctionFaultInfoAccessor &);<br>
+<br>
+raw_ostream &operator<<(raw_ostream &OS,<br>
+                        const FaultMapParser::FunctionInfoAccessor &);<br>
+<br>
+raw_ostream &operator<<(raw_ostream &OS, const FaultMapParser &);<br>
+<br>
+} // namespace llvm<br>
<br>
 #endif<br>
<br>
Removed: llvm/trunk/include/llvm/Object/FaultMapParser.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_Object_FaultMapParser.h-3Frev-3D240447-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=XeM-BaJDC4idk1Cu8qSkdeygI6lTZYugYkHRmZmiGos&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/FaultMapParser.h?rev=240447&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Object/FaultMapParser.h (original)<br>
+++ llvm/trunk/include/llvm/Object/FaultMapParser.h (removed)<br>
@@ -1,167 +0,0 @@<br>
-//===-- FaultMapParser.h - Parser for the  "FaultMaps" section --*- C++ -*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#include "llvm/Support/Endian.h"<br>
-#include "llvm/Support/raw_ostream.h"<br>
-<br>
-#ifndef LLVM_OBJECT_FAULTMAPPARSER_H<br>
-#define LLVM_OBJECT_FAULTMAPPARSER_H<br>
-<br>
-namespace llvm {<br>
-<br>
-/// A parser for the __llvm_faultmaps section generated by the FaultMaps class<br>
-/// declared in llvm/CodeGen/FaultMaps.h.  This parser is version locked with<br>
-/// with the __llvm_faultmaps section generated by the version of LLVM that<br>
-/// includes it.  No guarantees are made with respect to forward or backward<br>
-/// compatibility.<br>
-class FaultMapParser {<br>
-  typedef uint8_t FaultMapVersionType;<br>
-  static const size_t FaultMapVersionOffset = 0;<br>
-<br>
-  typedef uint8_t Reserved0Type;<br>
-  static const size_t Reserved0Offset =<br>
-      FaultMapVersionOffset + sizeof(FaultMapVersionType);<br>
-<br>
-  typedef uint16_t Reserved1Type;<br>
-  static const size_t Reserved1Offset = Reserved0Offset + sizeof(Reserved0Type);<br>
-<br>
-  typedef uint32_t NumFunctionsType;<br>
-  static const size_t NumFunctionsOffset =<br>
-      Reserved1Offset + sizeof(Reserved1Type);<br>
-<br>
-  static const size_t FunctionInfosOffset =<br>
-      NumFunctionsOffset + sizeof(NumFunctionsType);<br>
-<br>
-  const uint8_t *P;<br>
-  const uint8_t *E;<br>
-<br>
-  template <typename T> static T read(const uint8_t *P, const uint8_t *E) {<br>
-    assert(P + sizeof(T) <= E && "out of bounds read!");<br>
-    return support::endian::read<T, support::little, 1>(P);<br>
-  }<br>
-<br>
-public:<br>
-  enum FaultKind { FaultingLoad = 1, FaultKindMax };<br>
-<br>
-  class FunctionFaultInfoAccessor {<br>
-    typedef uint32_t FaultKindType;<br>
-    static const size_t FaultKindOffset = 0;<br>
-<br>
-    typedef uint32_t FaultingPCOffsetType;<br>
-    static const size_t FaultingPCOffsetOffset =<br>
-        FaultKindOffset + sizeof(FaultKindType);<br>
-<br>
-    typedef uint32_t HandlerPCOffsetType;<br>
-    static const size_t HandlerPCOffsetOffset =<br>
-        FaultingPCOffsetOffset + sizeof(FaultingPCOffsetType);<br>
-<br>
-    const uint8_t *P;<br>
-    const uint8_t *E;<br>
-<br>
-  public:<br>
-    static const size_t Size =<br>
-        HandlerPCOffsetOffset + sizeof(HandlerPCOffsetType);<br>
-<br>
-    explicit FunctionFaultInfoAccessor(const uint8_t *P, const uint8_t *E)<br>
-        : P(P), E(E) {}<br>
-<br>
-    FaultKindType getFaultKind() const {<br>
-      return read<FaultKindType>(P + FaultKindOffset, E);<br>
-    }<br>
-<br>
-    FaultingPCOffsetType getFaultingPCOffset() const {<br>
-      return read<FaultingPCOffsetType>(P + FaultingPCOffsetOffset, E);<br>
-    }<br>
-<br>
-    HandlerPCOffsetType getHandlerPCOffset() const {<br>
-      return read<HandlerPCOffsetType>(P + HandlerPCOffsetOffset, E);<br>
-    }<br>
-  };<br>
-<br>
-  class FunctionInfoAccessor {<br>
-    typedef uint64_t FunctionAddrType;<br>
-    static const size_t FunctionAddrOffset = 0;<br>
-<br>
-    typedef uint32_t NumFaultingPCsType;<br>
-    static const size_t NumFaultingPCsOffset =<br>
-        FunctionAddrOffset + sizeof(FunctionAddrType);<br>
-<br>
-    typedef uint32_t ReservedType;<br>
-    static const size_t ReservedOffset =<br>
-        NumFaultingPCsOffset + sizeof(NumFaultingPCsType);<br>
-<br>
-    static const size_t FunctionFaultInfosOffset =<br>
-        ReservedOffset + sizeof(ReservedType);<br>
-<br>
-    static const size_t FunctionInfoHeaderSize = FunctionFaultInfosOffset;<br>
-<br>
-    const uint8_t *P;<br>
-    const uint8_t *E;<br>
-<br>
-  public:<br>
-    FunctionInfoAccessor() : P(nullptr), E(nullptr) {}<br>
-<br>
-    explicit FunctionInfoAccessor(const uint8_t *P, const uint8_t *E)<br>
-        : P(P), E(E) {}<br>
-<br>
-    FunctionAddrType getFunctionAddr() const {<br>
-      return read<FunctionAddrType>(P + FunctionAddrOffset, E);<br>
-    }<br>
-<br>
-    NumFaultingPCsType getNumFaultingPCs() const {<br>
-      return read<NumFaultingPCsType>(P + NumFaultingPCsOffset, E);<br>
-    }<br>
-<br>
-    FunctionFaultInfoAccessor getFunctionFaultInfoAt(uint32_t Index) const {<br>
-      assert(Index < getNumFaultingPCs() && "index out of bounds!");<br>
-      const uint8_t *Begin = P + FunctionFaultInfosOffset +<br>
-                             FunctionFaultInfoAccessor::Size * Index;<br>
-      return FunctionFaultInfoAccessor(Begin, E);<br>
-    }<br>
-<br>
-    FunctionInfoAccessor getNextFunctionInfo() const {<br>
-      size_t MySize = FunctionInfoHeaderSize +<br>
-                      getNumFaultingPCs() * FunctionFaultInfoAccessor::Size;<br>
-<br>
-      const uint8_t *Begin = P + MySize;<br>
-      assert(Begin < E && "out of bounds!");<br>
-      return FunctionInfoAccessor(Begin, E);<br>
-    }<br>
-  };<br>
-<br>
-  explicit FaultMapParser(const uint8_t *Begin, const uint8_t *End)<br>
-      : P(Begin), E(End) {}<br>
-<br>
-  FaultMapVersionType getFaultMapVersion() const {<br>
-    auto Version = read<FaultMapVersionType>(P + FaultMapVersionOffset, E);<br>
-    assert(Version == 1 && "only version 1 supported!");<br>
-    return Version;<br>
-  }<br>
-<br>
-  NumFunctionsType getNumFunctions() const {<br>
-    return read<NumFunctionsType>(P + NumFunctionsOffset, E);<br>
-  }<br>
-<br>
-  FunctionInfoAccessor getFirstFunctionInfo() const {<br>
-    const uint8_t *Begin = P + FunctionInfosOffset;<br>
-    return FunctionInfoAccessor(Begin, E);<br>
-  }<br>
-};<br>
-<br>
-raw_ostream &<br>
-operator<<(raw_ostream &OS, const FaultMapParser::FunctionFaultInfoAccessor &);<br>
-<br>
-raw_ostream &operator<<(raw_ostream &OS,<br>
-                        const FaultMapParser::FunctionInfoAccessor &);<br>
-<br>
-raw_ostream &operator<<(raw_ostream &OS, const FaultMapParser &);<br>
-<br>
-} // namespace llvm<br>
-<br>
-#endif<br>
<br>
Modified: llvm/trunk/lib/CodeGen/FaultMaps.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_FaultMaps.cpp-3Frev-3D240448-26r1-3D240447-26r2-3D240448-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=ja4gUWalMveACN1tQ0RIWNwXjJvy9_v6eh_LvKEStRU&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/FaultMaps.cpp?rev=240448&r1=240447&r2=240448&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/FaultMaps.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/FaultMaps.cpp Tue Jun 23 15:09:03 2015<br>
@@ -112,3 +112,39 @@ const char *FaultMaps::faultTypeToString<br>
     return "FaultingLoad";<br>
   }<br>
 }<br>
+<br>
+raw_ostream &llvm::<br>
+operator<<(raw_ostream &OS,<br>
+           const FaultMapParser::FunctionFaultInfoAccessor &FFI) {<br>
+  OS << "Fault kind: "<br>
+     << FaultMaps::faultTypeToString((FaultMaps::FaultKind)FFI.getFaultKind())<br>
+     << ", faulting PC offset: " << FFI.getFaultingPCOffset()<br>
+     << ", handling PC offset: " << FFI.getHandlerPCOffset();<br>
+  return OS;<br>
+}<br>
+<br>
+raw_ostream &llvm::<br>
+operator<<(raw_ostream &OS, const FaultMapParser::FunctionInfoAccessor &FI) {<br>
+  OS << "FunctionAddress: " << format_hex(FI.getFunctionAddr(), 8)<br>
+     << ", NumFaultingPCs: " << FI.getNumFaultingPCs() << "\n";<br>
+  for (unsigned i = 0, e = FI.getNumFaultingPCs(); i != e; ++i)<br>
+    OS << FI.getFunctionFaultInfoAt(i) << "\n";<br>
+  return OS;<br>
+}<br>
+<br>
+raw_ostream &llvm::operator<<(raw_ostream &OS, const FaultMapParser &FMP) {<br>
+  OS << "Version: " << format_hex(FMP.getFaultMapVersion(), 2) << "\n";<br>
+  OS << "NumFunctions: " << FMP.getNumFunctions() << "\n";<br>
+<br>
+  if (FMP.getNumFunctions() == 0)<br>
+    return OS;<br>
+<br>
+  FaultMapParser::FunctionInfoAccessor FI;<br>
+<br>
+  for (unsigned i = 0, e = FMP.getNumFunctions(); i != e; ++i) {<br>
+    FI = (i == 0) ? FMP.getFirstFunctionInfo() : FI.getNextFunctionInfo();<br>
+    OS << FI;<br>
+  }<br>
+<br>
+  return OS;<br>
+}<br>
<br>
Modified: llvm/trunk/lib/Object/CMakeLists.txt<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Object_CMakeLists.txt-3Frev-3D240448-26r1-3D240447-26r2-3D240448-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=Mol2hUZtGnVuzPdnd6KvGvTpAP73T1B_2f9Fc-UIEJs&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/CMakeLists.txt?rev=240448&r1=240447&r2=240448&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Object/CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/Object/CMakeLists.txt Tue Jun 23 15:09:03 2015<br>
@@ -8,7 +8,6 @@ add_llvm_library(LLVMObject<br>
   ELFObjectFile.cpp<br>
   ELFYAML.cpp<br>
   Error.cpp<br>
-  FaultMapParser.cpp<br>
   IRObjectFile.cpp<br>
   MachOObjectFile.cpp<br>
   MachOUniversal.cpp<br>
<br>
Removed: llvm/trunk/lib/Object/FaultMapParser.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Object_FaultMapParser.cpp-3Frev-3D240447-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=rSCHgLdKJEq-Gv_Tiajbk1LwuMMw3qXtSqzBQcW3Qt0&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/FaultMapParser.cpp?rev=240447&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Object/FaultMapParser.cpp (original)<br>
+++ llvm/trunk/lib/Object/FaultMapParser.cpp (removed)<br>
@@ -1,61 +0,0 @@<br>
-//===----------------------- FaultMapParser.cpp ---------------------------===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#include "llvm/Object/FaultMapParser.h"<br>
-<br>
-#include "llvm/Support/ErrorHandling.h"<br>
-#include "llvm/Support/Format.h"<br>
-<br>
-using namespace llvm;<br>
-<br>
-static const char *faultKindToString(FaultMapParser::FaultKind FT) {<br>
-  switch (FT) {<br>
-  default:<br>
-    llvm_unreachable("unhandled fault type!");<br>
-<br>
-  case FaultMapParser::FaultingLoad:<br>
-    return "FaultingLoad";<br>
-  }<br>
-}<br>
-<br>
-raw_ostream &llvm::<br>
-operator<<(raw_ostream &OS,<br>
-           const FaultMapParser::FunctionFaultInfoAccessor &FFI) {<br>
-  OS << "Fault kind: "<br>
-     << faultKindToString((FaultMapParser::FaultKind)FFI.getFaultKind())<br>
-     << ", faulting PC offset: " << FFI.getFaultingPCOffset()<br>
-     << ", handling PC offset: " << FFI.getHandlerPCOffset();<br>
-  return OS;<br>
-}<br>
-<br>
-raw_ostream &llvm::<br>
-operator<<(raw_ostream &OS, const FaultMapParser::FunctionInfoAccessor &FI) {<br>
-  OS << "FunctionAddress: " << format_hex(FI.getFunctionAddr(), 8)<br>
-     << ", NumFaultingPCs: " << FI.getNumFaultingPCs() << "\n";<br>
-  for (unsigned i = 0, e = FI.getNumFaultingPCs(); i != e; ++i)<br>
-    OS << FI.getFunctionFaultInfoAt(i) << "\n";<br>
-  return OS;<br>
-}<br>
-<br>
-raw_ostream &llvm::operator<<(raw_ostream &OS, const FaultMapParser &FMP) {<br>
-  OS << "Version: " << format_hex(FMP.getFaultMapVersion(), 2) << "\n";<br>
-  OS << "NumFunctions: " << FMP.getNumFunctions() << "\n";<br>
-<br>
-  if (FMP.getNumFunctions() == 0)<br>
-    return OS;<br>
-<br>
-  FaultMapParser::FunctionInfoAccessor FI;<br>
-<br>
-  for (unsigned i = 0, e = FMP.getNumFunctions(); i != e; ++i) {<br>
-    FI = (i == 0) ? FMP.getFirstFunctionInfo() : FI.getNextFunctionInfo();<br>
-    OS << FI;<br>
-  }<br>
-<br>
-  return OS;<br>
-}<br>
<br>
Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_llvm-2Dobjdump_llvm-2Dobjdump.cpp-3Frev-3D240448-26r1-3D240447-26r2-3D240448-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R0XIlxk-YwsAboQ0WaRD_b5hytDTbLuIBWQ_IBjqzJs&s=JHPXJCBhVkENdCDMEbXQBHOq6d1bFMas8aC1zEWzxLY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=240448&r1=240447&r2=240448&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Tue Jun 23 15:09:03 2015<br>
@@ -21,6 +21,7 @@<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/ADT/StringExtras.h"<br>
 #include "llvm/ADT/Triple.h"<br>
+#include "llvm/CodeGen/FaultMaps.h"<br>
 #include "llvm/MC/MCAsmInfo.h"<br>
 #include "llvm/MC/MCContext.h"<br>
 #include "llvm/MC/MCDisassembler.h"<br>
@@ -34,7 +35,6 @@<br>
 #include "llvm/MC/MCSubtargetInfo.h"<br>
 #include "llvm/Object/Archive.h"<br>
 #include "llvm/Object/ELFObjectFile.h"<br>
-#include "llvm/Object/FaultMapParser.h"<br>
 #include "llvm/Object/COFF.h"<br>
 #include "llvm/Object/MachO.h"<br>
 #include "llvm/Object/ObjectFile.h"<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>