This should have been fixed yesterday, are you at tot?<br><div class="gmail_quote">On Wed, Feb 11, 2015 at 9:20 AM Adrian Prantl <<a href="mailto:aprantl@apple.com">aprantl@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, I’m getting these warnings now from -Wcovered-switch-default:<br>
<br>
[5/53] Building CXX object lib/DebugInfo/PDB/CMakeFiles/<u></u>LLVMDebugInfoPDB.dir/<u></u>PDBExtras.cpp.o<br>
../lib/DebugInfo/PDB/<u></u>PDBExtras.cpp:110:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]<br>
  default:<br>
  ^<br>
../lib/DebugInfo/PDB/<u></u>PDBExtras.cpp:121:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]<br>
  default:<br>
  ^<br>
../lib/DebugInfo/PDB/<u></u>PDBExtras.cpp:146:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]<br>
  default:<br>
  ^<br>
<br>
-- adrian<br>
<br>
<br>
> On Feb 10, 2015, at 2:43 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
><br>
> Author: zturner<br>
> Date: Tue Feb 10 16:43:25 2015<br>
> New Revision: 228755<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=228755&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=228755&view=rev</a><br>
> Log:<br>
> Rewrite llvm-pdbdump in terms of LLVMDebugInfoPDB.<br>
><br>
> This makes llvm-pdbdump available on all platforms, although it<br>
> will currently fail to create a dumper if there is no PDB reader<br>
> implementation for the current platform.<br>
><br>
> It implements dumping of compilands and children, which is less<br>
> information than was previously available, but it has to be<br>
> rewritten from scratch using the new set of interfaces, so the<br>
> rest of the functionality will be added back in subsequent commits.<br>
><br>
> Added:<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBExtras.h<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>IPDBSourceFile.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBExtras.cpp<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>Makefile<br>
> Removed:<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>COMExtras.h<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>DIAExtras.cpp<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>DIAExtras.h<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>DIASymbol.cpp<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>DIASymbol.h<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>llvm-pdbdump.h<br>
> Modified:<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/DIASession.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBRawSymbol.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSession.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSourceFile.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbol.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolAnnotation.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolBlock.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompiland.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolCustom.<u></u>h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolData.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolExe.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolFunc.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolLabel.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolThunk.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeArray.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypePointer.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUnknown.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.h<br>
>    llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBTypes.h<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>CMakeLists.txt<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIARawSymbol.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIASession.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBInterfaceAnchors.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbol.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolAnnotation.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolBlock.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolCompiland.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolCustom.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolData.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolExe.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolFunc.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolLabel.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolThunk.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeArray.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypePointer.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolUnknown.cpp<br>
>    llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.cpp<br>
>    llvm/trunk/tools/CMakeLists.<u></u>txt<br>
>    llvm/trunk/tools/Makefile<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>CMakeLists.txt<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>LLVMBuild.txt<br>
>    llvm/trunk/tools/llvm-pdbdump/<u></u>llvm-pdbdump.cpp<br>
>    llvm/trunk/unittests/<u></u>DebugInfo/PDB/PDBApiTest.cpp<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h Tue Feb 10 16:43:25 2015<br>
> @@ -19,8 +19,12 @@ class DIARawSymbol : public IPDBRawSymbo<br>
> public:<br>
>   DIARawSymbol(const DIASession &PDBSession, CComPtr<IDiaSymbol> DiaSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
> +  CComPtr<IDiaSymbol> getDiaSymbol() const { return Symbol; }<br>
> +<br>
> +  std::unique_ptr<<u></u>IPDBEnumSymbols><br>
> +  DIARawSymbol::findChildren(<u></u>PDB_SymType Type) const override;<br>
>   std::unique_ptr<<u></u>IPDBEnumSymbols><br>
>   findChildren(PDB_SymType Type, StringRef Name,<br>
>                PDB_NameSearchFlags Flags) const override;<br>
> @@ -54,7 +58,7 @@ public:<br>
>   uint32_t getLiveRangeStartAddressOffset<u></u>() const override;<br>
>   uint32_t getLiveRangeStartAddressSectio<u></u>n() const override;<br>
>   uint32_t getLiveRangeStartRelativeVirtu<u></u>alAddress() const override;<br>
> -  uint32_t getLocalBasePointerRegisterId(<u></u>) const override;<br>
> +  PDB_RegisterId getLocalBasePointerRegisterId(<u></u>) const override;<br>
>   uint32_t getLowerBoundId() const override;<br>
>   uint32_t getMemorySpaceKind() const override;<br>
>   std::string getName() const override;<br>
> @@ -69,7 +73,7 @@ public:<br>
>   uint32_t getOffsetInUdt() const override;<br>
>   PDB_Cpu getPlatform() const override;<br>
>   uint32_t getRank() const override;<br>
> -  uint32_t getRegisterId() const override;<br>
> +  PDB_RegisterId getRegisterId() const override;<br>
>   uint32_t getRegisterType() const override;<br>
>   uint32_t getRelativeVirtualAddress() const override;<br>
>   uint32_t getSamplerSlot() const override;<br>
> @@ -129,6 +133,7 @@ public:<br>
>   bool hasInlAsm() const override;<br>
>   bool hasInlineAttribute() const override;<br>
>   bool hasInterruptReturn() const override;<br>
> +  bool hasFramePointer() const override;<br>
>   bool hasLongJump() const override;<br>
>   bool hasManagedCode() const override;<br>
>   bool hasNestedTypes() const override;<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/DIASession.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/DIA/<u></u>DIASession.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/DIASession.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/DIA/DIASession.h Tue Feb 10 16:43:25 2015<br>
> @@ -25,6 +25,10 @@ public:<br>
>   void setLoadAddress(uint64_t Address) override;<br>
>   std::unique_ptr<PDBSymbolExe> getGlobalScope() const override;<br>
>   std::unique_ptr<PDBSymbol> getSymbolById(uint32_t SymbolId) const override;<br>
> +<br>
> +  std::unique_ptr<<u></u>IPDBEnumSourceFiles> getAllSourceFiles() const override;<br>
> +  std::unique_ptr<<u></u>IPDBEnumSourceFiles> getSourceFilesForCompiland(<br>
> +      const PDBSymbolCompiland &Compiland) const override;<br>
>   std::unique_ptr<<u></u>IPDBSourceFile><br>
>   getSourceFileById(uint32_t FileId) const override;<br>
><br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBRawSymbol.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>IPDBRawSymbol.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBRawSymbol.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBRawSymbol.h Tue Feb 10 16:43:25 2015<br>
> @@ -29,7 +29,10 @@ class IPDBRawSymbol {<br>
> public:<br>
>   virtual ~IPDBRawSymbol();<br>
><br>
> -  virtual void dump(llvm::raw_ostream &OS) const = 0;<br>
> +  virtual void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const = 0;<br>
> +<br>
> +  virtual std::unique_ptr<<u></u>IPDBEnumSymbols><br>
> +  findChildren(PDB_SymType Type) const = 0;<br>
><br>
>   virtual std::unique_ptr<<u></u>IPDBEnumSymbols><br>
>   findChildren(PDB_SymType Type, StringRef Name,<br>
> @@ -64,7 +67,7 @@ public:<br>
>   virtual uint32_t getLiveRangeStartAddressOffset<u></u>() const = 0;<br>
>   virtual uint32_t getLiveRangeStartAddressSectio<u></u>n() const = 0;<br>
>   virtual uint32_t getLiveRangeStartRelativeVirtu<u></u>alAddress() const = 0;<br>
> -  virtual uint32_t getLocalBasePointerRegisterId(<u></u>) const = 0;<br>
> +  virtual PDB_RegisterId getLocalBasePointerRegisterId(<u></u>) const = 0;<br>
>   virtual uint32_t getLowerBoundId() const = 0;<br>
>   virtual uint32_t getMemorySpaceKind() const = 0;<br>
>   virtual std::string getName() const = 0;<br>
> @@ -79,7 +82,7 @@ public:<br>
>   virtual uint32_t getOffsetInUdt() const = 0;<br>
>   virtual PDB_Cpu getPlatform() const = 0;<br>
>   virtual uint32_t getRank() const = 0;<br>
> -  virtual uint32_t getRegisterId() const = 0;<br>
> +  virtual PDB_RegisterId getRegisterId() const = 0;<br>
>   virtual uint32_t getRegisterType() const = 0;<br>
>   virtual uint32_t getRelativeVirtualAddress() const = 0;<br>
>   virtual uint32_t getSamplerSlot() const = 0;<br>
> @@ -136,6 +139,7 @@ public:<br>
>   virtual bool hasDebugInfo() const = 0;<br>
>   virtual bool hasEH() const = 0;<br>
>   virtual bool hasEHa() const = 0;<br>
> +  virtual bool hasFramePointer() const = 0;<br>
>   virtual bool hasInlAsm() const = 0;<br>
>   virtual bool hasInlineAttribute() const = 0;<br>
>   virtual bool hasInterruptReturn() const = 0;<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSession.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>IPDBSession.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSession.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSession.h Tue Feb 10 16:43:25 2015<br>
> @@ -16,6 +16,7 @@<br>
><br>
> namespace llvm {<br>
><br>
> +class PDBSymbolCompiland;<br>
> class PDBSymbolExe;<br>
><br>
> /// IPDBSession defines an interface used to provide a context for querying<br>
> @@ -28,6 +29,10 @@ public:<br>
>   virtual void setLoadAddress(uint64_t Address) = 0;<br>
>   virtual std::unique_ptr<PDBSymbolExe> getGlobalScope() const = 0;<br>
>   virtual std::unique_ptr<PDBSymbol> getSymbolById(uint32_t SymbolId) const = 0;<br>
> +<br>
> +  virtual std::unique_ptr<<u></u>IPDBEnumSourceFiles> getAllSourceFiles() const = 0;<br>
> +  virtual std::unique_ptr<<u></u>IPDBEnumSourceFiles><br>
> +  getSourceFilesForCompiland(<u></u>const PDBSymbolCompiland &Compiland) const = 0;<br>
>   virtual std::unique_ptr<<u></u>IPDBSourceFile><br>
>   getSourceFileById(uint32_t FileId) const = 0;<br>
><br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSourceFile.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>IPDBSourceFile.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSourceFile.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/IPDBSourceFile.h Tue Feb 10 16:43:25 2015<br>
> @@ -17,12 +17,16 @@<br>
><br>
> namespace llvm {<br>
><br>
> +class raw_ostream;<br>
> +<br>
> /// IPDBSourceFile defines an interface used to represent source files whose<br>
> /// information are stored in the PDB.<br>
> class IPDBSourceFile {<br>
> public:<br>
>   virtual ~IPDBSourceFile();<br>
><br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const;<br>
> +<br>
>   virtual std::string getFileName() const = 0;<br>
>   virtual uint32_t getUniqueId() const = 0;<br>
>   virtual std::string getChecksum() const = 0;<br>
><br>
> Added: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBExtras.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBExtras.h?rev=228755&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/PDBExtras.<u></u>h?rev=228755&view=auto</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBExtras.h (added)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBExtras.h Tue Feb 10 16:43:25 2015<br>
> @@ -0,0 +1,39 @@<br>
> +//===- PDBExtras.h - helper functions and classes for PDBs -------*- 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>
> +//===------------------------<u></u>------------------------------<u></u>----------------===//<br>
> +<br>
> +#ifndef LLVM_DEBUGINFO_PDB_PDBEXTRAS_H<br>
> +#define LLVM_DEBUGINFO_PDB_PDBEXTRAS_H<br>
> +<br>
> +#include <unordered_map><br>
> +<br>
> +#include "PDBTypes.h"<br>
> +<br>
> +#include "llvm/Support/raw_ostream.h"<br>
> +<br>
> +namespace llvm {<br>
> +typedef std::unordered_map<PDB_<u></u>SymType, int> TagStats;<br>
> +<br>
> +struct stream_indent {<br>
> +  stream_indent(int IndentWidth) : Width(IndentWidth) {}<br>
> +  int Width;<br>
> +};<br>
> +raw_ostream &operator<<(raw_ostream &OS, const stream_indent &Indent);<br>
> +<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_RegisterId &Reg);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_LocType &Loc);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_ThunkOrdinal &Thunk);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_Checksum &Checksum);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_Lang &Lang);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_SymType &Tag);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const PDB_UniqueId &Id);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const VersionInfo &Version);<br>
> +raw_ostream &operator<<(raw_ostream &OS, const TagStats &Stats);<br>
> +}<br>
> +<br>
> +#endif<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbol.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/PDBSymbol.<u></u>h?rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbol.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbol.h Tue Feb 10 16:43:25 2015<br>
> @@ -11,11 +11,13 @@<br>
> #define LLVM_DEBUGINFO_PDB_IPDBSYMBOL_<u></u>H<br>
><br>
> #include <memory><br>
> +#include <unordered_map><br>
><br>
> #include "llvm/ADT/StringRef.h"<br>
> #include "llvm/Support/Casting.h"<br>
><br>
> #include "IPDBRawSymbol.h"<br>
> +#include "PDBExtras.h"<br>
> #include "PDBTypes.h"<br>
><br>
> #define FORWARD_SYMBOL_METHOD(<u></u>MethodName)                                      \<br>
> @@ -48,10 +50,12 @@ public:<br>
>   /// call dump() on the underlying RawSymbol, which allows us to discover<br>
>   /// unknown properties, but individual implementations of PDBSymbol may<br>
>   /// override the behavior to only dump known fields.<br>
> -  virtual void dump(llvm::raw_ostream &OS) const;<br>
> +  virtual void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const = 0;<br>
> +  void defaultDump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const;<br>
><br>
>   PDB_SymType getSymTag() const;<br>
><br>
> +  std::unique_ptr<<u></u>IPDBEnumSymbols> findChildren(PDB_SymType Type) const;<br>
>   std::unique_ptr<<u></u>IPDBEnumSymbols><br>
>   findChildren(PDB_SymType Type, StringRef Name,<br>
>                PDB_NameSearchFlags Flags) const;<br>
> @@ -61,7 +65,12 @@ public:<br>
>                                                      uint32_t RVA) const;<br>
>   std::unique_ptr<<u></u>IPDBEnumSymbols> findInlineFramesByRVA(uint32_t RVA) const;<br>
><br>
> +  const IPDBRawSymbol &getRawSymbol() const { return *RawSymbol; }<br>
> +  IPDBRawSymbol &getRawSymbol() { return *RawSymbol; }<br>
> +<br>
> protected:<br>
> +  std::unique_ptr<<u></u>IPDBEnumSymbols> getChildStats(TagStats &Stats) const;<br>
> +<br>
>   const IPDBSession &Session;<br>
>   const std::unique_ptr<IPDBRawSymbol> RawSymbol;<br>
> };<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolAnnotation.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolAnnotation.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolAnnotation.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolAnnotation.h Tue Feb 10 16:43:25 2015<br>
> @@ -23,7 +23,7 @@ public:<br>
>   PDBSymbolAnnotation(const IPDBSession &PDBSession,<br>
>                       std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolBlock.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolBlock.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolBlock.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolBlock.h Tue Feb 10 16:43:25 2015<br>
> @@ -23,7 +23,7 @@ public:<br>
>   PDBSymbolBlock(const IPDBSession &PDBSession,<br>
>                  std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompiland.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolCompiland.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompiland.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompiland.h Tue Feb 10 16:43:25 2015<br>
> @@ -23,7 +23,7 @@ public:<br>
>   PDBSymbolCompiland(const IPDBSession &PDBSession,<br>
>                      std::unique_ptr<IPDBRawSymbol> CompilandSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>isEditAndContinueEnabled)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLexicalParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.h?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandDetails.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolCompilandDetails(<u></u>const IPDBSession &PDBSession,<br>
>                             std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   void getFrontEndVersion(VersionInfo &Version) const {<br>
>     RawSymbol->getFrontEndVersion(<u></u>Version);<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolCompilandEnv.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolCompilandEnv(const IPDBSession &PDBSession,<br>
>                         std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLexicalParentId)<br>
>   FORWARD_SYMBOL_METHOD(getName)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolCustom.<u></u>h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolCustom.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolCustom.<u></u>h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolCustom.<u></u>h Tue Feb 10 16:43:25 2015<br>
> @@ -27,7 +27,7 @@ public:<br>
>   PDBSymbolCustom(const IPDBSession &PDBSession,<br>
>                   std::unique_ptr<IPDBRawSymbol> CustomSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   void getDataBytes(llvm::<u></u>SmallVector<uint8_t, 32> &bytes);<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getSymIndexId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolData.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolData.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolData.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolData.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolData(const IPDBSession &PDBSession,<br>
>                 std::unique_ptr<IPDBRawSymbol> DataSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAccess)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolExe.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolExe.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolExe.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolExe.h Tue Feb 10 16:43:25 2015<br>
> @@ -24,7 +24,7 @@ public:<br>
>   PDBSymbolExe(const IPDBSession &PDBSession,<br>
>                std::unique_ptr<IPDBRawSymbol> ExeSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(getAge)<br>
>   FORWARD_SYMBOL_METHOD(getGuid)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolFunc.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolFunc.h?rev=228755&r1=<u></u>228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolFunc.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolFunc.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolFunc(const IPDBSession &PDBSession,<br>
>                 std::unique_ptr<IPDBRawSymbol> FuncSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAccess)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
> @@ -46,8 +46,10 @@ public:<br>
>   FORWARD_SYMBOL_METHOD(<u></u>isStatic)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLength)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLexicalParentId)<br>
> +  FORWARD_SYMBOL_METHOD(<u></u>getLocalBasePointerRegisterId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLocationType)<br>
>   FORWARD_SYMBOL_METHOD(getName)<br>
> +  FORWARD_SYMBOL_METHOD(<u></u>hasFramePointer)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>hasNoInlineAttribute)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>hasNoReturnAttribute)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>isUnreached)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugEnd.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolFuncDebugEnd(const IPDBSession &PDBSession,<br>
>                         std::unique_ptr<IPDBRawSymbol> FuncDebugEndSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolFuncDebugStart.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolFuncDebugStart(const IPDBSession &PDBSession,<br>
>                           std::unique_ptr<IPDBRawSymbol> FuncDebugStartSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolLabel.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolLabel.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolLabel.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolLabel.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolLabel(const IPDBSession &PDBSession,<br>
>                  std::unique_ptr<IPDBRawSymbol> LabelSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolPublicSymbol.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolPublicSymbol(const IPDBSession &PDBSession,<br>
>                         std::unique_ptr<IPDBRawSymbol> PublicSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressSection)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolThunk.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolThunk.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolThunk.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBSymbolThunk.h Tue Feb 10 16:43:25 2015<br>
> @@ -24,7 +24,7 @@ public:<br>
>   PDBSymbolThunk(const IPDBSession &PDBSession,<br>
>                  std::unique_ptr<IPDBRawSymbol> ThunkSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAccess)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAddressOffset)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeArray.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeArray.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeArray.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeArray.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeArray(const IPDBSession &PDBSession,<br>
>                      std::unique_ptr<IPDBRawSymbol> ArrayTypeSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getArrayIndexTypeId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>isConstType)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBaseClass.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeBaseClass(const IPDBSession &PDBSession,<br>
>                          std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getAccess)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeBuiltin.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeBuiltin(const IPDBSession &PDBSession,<br>
>                        std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getBuiltinType)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>isConstType)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeCustom.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeCustom(const IPDBSession &PDBSession,<br>
>                       std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getOemId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getOemSymbolId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeDimension.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeDimension(const IPDBSession &PDBSession,<br>
>                          std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLowerBoundId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getUpperBoundId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeEnum.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeEnum(const IPDBSession &PDBSession,<br>
>                     std::unique_ptr<IPDBRawSymbol> EnumTypeSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getBuiltinType)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFriend.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeFriend(const IPDBSession &PDBSession,<br>
>                       std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
>   FORWARD_SYMBOL_METHOD(getName)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.h?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionArg.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeFunctionArg(const IPDBSession &PDBSession,<br>
>                            std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLexicalParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.h?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeFunctionSig.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeFunctionSig(const IPDBSession &PDBSession,<br>
>                            std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getCallingConvention)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeManaged.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeManaged(const IPDBSession &PDBSession,<br>
>                        std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(getName)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getSymIndexId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypePointer.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypePointer.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypePointer.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypePointer.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypePointer(const IPDBSession &PDBSession,<br>
>                        std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>isConstType)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLength)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeTypedef.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeTypedef(const IPDBSession &PDBSession,<br>
>                        std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getBuiltinType)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeUDT.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeUDT(const IPDBSession &PDBSession,<br>
>                    std::unique_ptr<IPDBRawSymbol> UDTSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>hasConstructor)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTable.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeVTable(const IPDBSession &PDBSession,<br>
>                       std::unique_ptr<IPDBRawSymbol> VtblSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getClassParentId)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>isConstType)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.h?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolTypeVTableShape.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolTypeVTableShape(const IPDBSession &PDBSession,<br>
>                            std::unique_ptr<IPDBRawSymbol> VtblShapeSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>isConstType)<br>
>   FORWARD_SYMBOL_METHOD(<u></u>getCount)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUnknown.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolUnknown.h?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUnknown.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUnknown.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolUnknown(const IPDBSession &PDBSession,<br>
>                    std::unique_ptr<IPDBRawSymbol> UnknownSymbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   static bool classof(const PDBSymbol *S) {<br>
>     return (S->getSymTag() == PDB_SymType::None ||<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.h?rev=<u></u>228755&r1=228754&r2=228755&<u></u>view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/<u></u>PDBSymbolUsingNamespace.h Tue Feb 10 16:43:25 2015<br>
> @@ -22,7 +22,7 @@ public:<br>
>   PDBSymbolUsingNamespace(const IPDBSession &PDBSession,<br>
>                           std::unique_ptr<IPDBRawSymbol> Symbol);<br>
><br>
> -  void dump(llvm::raw_ostream &OS) const override;<br>
> +  void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const override;<br>
><br>
>   FORWARD_SYMBOL_METHOD(<u></u>getLexicalParentId)<br>
>   FORWARD_SYMBOL_METHOD(getName)<br>
><br>
> Modified: llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBTypes.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo/PDB/PDBTypes.h?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBTypes.h (original)<br>
> +++ llvm/trunk/include/llvm/<u></u>DebugInfo/PDB/PDBTypes.h Tue Feb 10 16:43:25 2015<br>
> @@ -11,6 +11,7 @@<br>
> #define LLVM_DEBUGINFO_PDB_PDBTYPES_H<br>
><br>
> #include <stdint.h><br>
> +#include <functional><br>
> #include "llvm/Config/llvm-config.h"<br>
><br>
> namespace llvm {<br>
> @@ -68,6 +69,12 @@ enum class PDB_ReaderType {<br>
>   DIA = 0,<br>
> };<br>
><br>
> +enum class PDB_DumpLevel {<br>
> +  Compact,<br>
> +  Normal,<br>
> +  Detailed,<br>
> +};<br>
> +<br>
> /// Defines a 128-bit unique identifier.  This maps to a GUID on Windows, but<br>
> /// is abstracted here for the purposes of non-Windows platforms that don't have<br>
> /// the GUID structure defined.<br>
> @@ -365,6 +372,58 @@ enum class PDB_BuiltinType {<br>
>   HResult = 31<br>
> };<br>
><br>
> +enum class PDB_RegisterId {<br>
> +  Unknown = 0,<br>
> +  VFrame = 30006,<br>
> +  AL = 1,<br>
> +  CL = 2,<br>
> +  DL = 3,<br>
> +  BL = 4,<br>
> +  AH = 5,<br>
> +  CH = 6,<br>
> +  DH = 7,<br>
> +  BH = 8,<br>
> +  AX = 9,<br>
> +  CX = 10,<br>
> +  DX = 11,<br>
> +  BX = 12,<br>
> +  SP = 13,<br>
> +  BP = 14,<br>
> +  SI = 15,<br>
> +  DI = 16,<br>
> +  EAX = 17,<br>
> +  ECX = 18,<br>
> +  EDX = 19,<br>
> +  EBX = 20,<br>
> +  ESP = 21,<br>
> +  EBP = 22,<br>
> +  ESI = 23,<br>
> +  EDI = 24,<br>
> +  ES = 25,<br>
> +  CS = 26,<br>
> +  SS = 27,<br>
> +  DS = 28,<br>
> +  FS = 29,<br>
> +  GS = 30,<br>
> +  IP = 31,<br>
> +  RAX = 328,<br>
> +  RBX = 329,<br>
> +  RCX = 330,<br>
> +  RDX = 331,<br>
> +  RSI = 332,<br>
> +  RDI = 333,<br>
> +  RBP = 334,<br>
> +  RSP = 335,<br>
> +  R8 = 336,<br>
> +  R9 = 337,<br>
> +  R10 = 338,<br>
> +  R11 = 339,<br>
> +  R12 = 340,<br>
> +  R13 = 341,<br>
> +  R14 = 342,<br>
> +  R15 = 343,<br>
> +};<br>
> +<br>
> enum class PDB_MemberAccess { Private = 1, Protected = 2, Public = 3 };<br>
><br>
> struct VersionInfo {<br>
> @@ -376,4 +435,15 @@ struct VersionInfo {<br>
><br>
> } // namespace llvm<br>
><br>
> +namespace std {<br>
> +template <> struct hash<llvm::PDB_SymType> {<br>
> +  typedef llvm::PDB_SymType argument_type;<br>
> +  typedef std::size_t result_type;<br>
> +<br>
> +  result_type operator()(const argument_type &Arg) const {<br>
> +    return std::hash<int>()(static_cast<<u></u>int>(Arg));<br>
> +  }<br>
> +};<br>
> +}<br>
> +<br>
> #endif<br>
><br>
> Modified: llvm/trunk/lib/DebugInfo/PDB/<u></u>CMakeLists.txt<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>DebugInfo/PDB/CMakeLists.txt?<u></u>rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/lib/DebugInfo/PDB/<u></u>CMakeLists.txt (original)<br>
> +++ llvm/trunk/lib/DebugInfo/PDB/<u></u>CMakeLists.txt Tue Feb 10 16:43:25 2015<br>
> @@ -30,7 +30,9 @@ endif()<br>
> list(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "../../../include/llvm/<u></u>DebugInfo/PDB")<br>
><br>
> add_llvm_library(<u></u>LLVMDebugInfoPDB<br>
> +  IPDBSourceFile.cpp<br>
>   PDB.cpp<br>
> +  PDBExtras.cpp<br>
>   PDBInterfaceAnchors.cpp<br>
>   PDBSymbol.cpp<br>
>   PDBSymbolAnnotation.cpp<br>
><br>
> Modified: llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIARawSymbol.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIARawSymbol.cpp?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>DebugInfo/PDB/DIA/<u></u>DIARawSymbol.cpp?rev=228755&<u></u>r1=228754&r2=228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIARawSymbol.cpp (original)<br>
> +++ llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIARawSymbol.cpp Tue Feb 10 16:43:25 2015<br>
> @@ -7,6 +7,7 @@<br>
> //<br>
> //===-------------------------<u></u>------------------------------<u></u>---------------===//<br>
><br>
> +#include "llvm/DebugInfo/PDB/PDBExtras.<u></u>h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIAEnumSymbols.h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIASession.h"<br>
> @@ -54,13 +55,228 @@ PrivateGetDIAValue(IDiaSymbol *Symbol,<br>
>   ::memcpy(&IdResult, &Result, sizeof(GUID));<br>
>   return IdResult;<br>
> }<br>
> +<br>
> +template <typename ArgType><br>
> +void DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,<br>
> +                  IDiaSymbol *Symbol,<br>
> +                  HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {<br>
> +  ArgType Value;<br>
> +  if (S_OK == (Symbol->*Method)(&Value)) {<br>
> +    OS.indent(Indent);<br>
> +    OS << Name << ": " << Value << "\n";<br>
> +  }<br>
> +}<br>
> +<br>
> +void DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,<br>
> +                  IDiaSymbol *Symbol,<br>
> +                  HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {<br>
> +  BSTR Value = nullptr;<br>
> +  if (S_OK != (Symbol->*Method)(&Value))<br>
> +    return;<br>
> +  const char *Bytes = reinterpret_cast<const char *>(Value);<br>
> +  ArrayRef<char> ByteArray(Bytes, ::SysStringByteLen(Value));<br>
> +  std::string Result;<br>
> +  if (llvm::<u></u>convertUTF16ToUTF8String(<u></u>ByteArray, Result)) {<br>
> +    OS.indent(Indent);<br>
> +    OS << Name << ": " << Result << "\n";<br>
> +  }<br>
> +  ::SysFreeString(Value);<br>
> +}<br>
> +}<br>
> +<br>
> +namespace llvm {<br>
> +raw_ostream &operator<<(raw_ostream &OS, const GUID &Guid) {<br>
> +  const PDB_UniqueId *Id = reinterpret_cast<const PDB_UniqueId *>(&Guid);<br>
> +  OS << *Id;<br>
> +  return OS;<br>
> +}<br>
> }<br>
><br>
> DIARawSymbol::DIARawSymbol(<u></u>const DIASession &PDBSession,<br>
>                            CComPtr<IDiaSymbol> DiaSymbol)<br>
>     : Session(PDBSession), Symbol(DiaSymbol) {}<br>
><br>
> -void DIARawSymbol::dump(llvm::raw_<u></u>ostream &OS) const {}<br>
> +#define RAW_METHOD_DUMP(Stream, Method)                                        \<br>
> +  DumpDIAValue(Stream, Indent, StringRef(#Method), Symbol, &IDiaSymbol::Method);<br>
> +<br>
> +void DIARawSymbol::dump(raw_ostream &OS, int Indent,<br>
> +                        PDB_DumpLevel Level) const {<br>
> +  RAW_METHOD_DUMP(OS, get_access)<br>
> +  RAW_METHOD_DUMP(OS, get_addressOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_addressSection)<br>
> +  RAW_METHOD_DUMP(OS, get_age)<br>
> +  RAW_METHOD_DUMP(OS, get_arrayIndexTypeId)<br>
> +  RAW_METHOD_DUMP(OS, get_backEndMajor)<br>
> +  RAW_METHOD_DUMP(OS, get_backEndMinor)<br>
> +  RAW_METHOD_DUMP(OS, get_backEndBuild)<br>
> +  RAW_METHOD_DUMP(OS, get_backEndQFE)<br>
> +  RAW_METHOD_DUMP(OS, get_baseDataOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_baseDataSlot)<br>
> +  RAW_METHOD_DUMP(OS, get_baseSymbolId)<br>
> +  RAW_METHOD_DUMP(OS, get_builtInKind)<br>
> +  RAW_METHOD_DUMP(OS, get_bitPosition)<br>
> +  RAW_METHOD_DUMP(OS, get_callingConvention)<br>
> +  RAW_METHOD_DUMP(OS, get_classParentId)<br>
> +  RAW_METHOD_DUMP(OS, get_compilerName)<br>
> +  RAW_METHOD_DUMP(OS, get_count)<br>
> +  RAW_METHOD_DUMP(OS, get_countLiveRanges)<br>
> +  RAW_METHOD_DUMP(OS, get_frontEndMajor)<br>
> +  RAW_METHOD_DUMP(OS, get_frontEndMinor)<br>
> +  RAW_METHOD_DUMP(OS, get_frontEndBuild)<br>
> +  RAW_METHOD_DUMP(OS, get_frontEndQFE)<br>
> +  RAW_METHOD_DUMP(OS, get_count)<br>
> +  RAW_METHOD_DUMP(OS, get_lexicalParentId)<br>
> +  RAW_METHOD_DUMP(OS, get_libraryName)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>liveRangeStartAddressOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>liveRangeStartAddressSection)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>liveRangeStartRelativeVirtualA<u></u>ddress)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>localBasePointerRegisterId)<br>
> +  RAW_METHOD_DUMP(OS, get_lowerBoundId)<br>
> +  RAW_METHOD_DUMP(OS, get_memorySpaceKind)<br>
> +  RAW_METHOD_DUMP(OS, get_name)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>numberOfAcceleratorPointerTags<u></u>)<br>
> +  RAW_METHOD_DUMP(OS, get_numberOfColumns)<br>
> +  RAW_METHOD_DUMP(OS, get_numberOfModifiers)<br>
> +  RAW_METHOD_DUMP(OS, get_numberOfRegisterIndices)<br>
> +  RAW_METHOD_DUMP(OS, get_numberOfRows)<br>
> +  RAW_METHOD_DUMP(OS, get_objectFileName)<br>
> +  RAW_METHOD_DUMP(OS, get_oemId)<br>
> +  RAW_METHOD_DUMP(OS, get_oemSymbolId)<br>
> +  RAW_METHOD_DUMP(OS, get_offsetInUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_platform)<br>
> +  RAW_METHOD_DUMP(OS, get_rank)<br>
> +  RAW_METHOD_DUMP(OS, get_registerId)<br>
> +  RAW_METHOD_DUMP(OS, get_registerType)<br>
> +  RAW_METHOD_DUMP(OS, get_relativeVirtualAddress)<br>
> +  RAW_METHOD_DUMP(OS, get_samplerSlot)<br>
> +  RAW_METHOD_DUMP(OS, get_signature)<br>
> +  RAW_METHOD_DUMP(OS, get_sizeInUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_slot)<br>
> +  RAW_METHOD_DUMP(OS, get_sourceFileName)<br>
> +  RAW_METHOD_DUMP(OS, get_stride)<br>
> +  RAW_METHOD_DUMP(OS, get_subTypeId)<br>
> +  RAW_METHOD_DUMP(OS, get_symbolsFileName)<br>
> +  RAW_METHOD_DUMP(OS, get_symIndexId)<br>
> +  RAW_METHOD_DUMP(OS, get_targetOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>targetRelativeVirtualAddress)<br>
> +  RAW_METHOD_DUMP(OS, get_targetVirtualAddress)<br>
> +  RAW_METHOD_DUMP(OS, get_targetSection)<br>
> +  RAW_METHOD_DUMP(OS, get_textureSlot)<br>
> +  RAW_METHOD_DUMP(OS, get_timeStamp)<br>
> +  RAW_METHOD_DUMP(OS, get_token)<br>
> +  RAW_METHOD_DUMP(OS, get_typeId)<br>
> +  RAW_METHOD_DUMP(OS, get_uavSlot)<br>
> +  RAW_METHOD_DUMP(OS, get_undecoratedName)<br>
> +  RAW_METHOD_DUMP(OS, get_unmodifiedTypeId)<br>
> +  RAW_METHOD_DUMP(OS, get_upperBoundId)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualBaseDispIndex)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualBaseOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualTableShapeId)<br>
> +  RAW_METHOD_DUMP(OS, get_dataKind)<br>
> +  RAW_METHOD_DUMP(OS, get_symTag)<br>
> +  RAW_METHOD_DUMP(OS, get_guid)<br>
> +  RAW_METHOD_DUMP(OS, get_offset)<br>
> +  RAW_METHOD_DUMP(OS, get_thisAdjust)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualBasePointerOffset)<br>
> +  RAW_METHOD_DUMP(OS, get_locationType)<br>
> +  RAW_METHOD_DUMP(OS, get_machineType)<br>
> +  RAW_METHOD_DUMP(OS, get_thunkOrdinal)<br>
> +  RAW_METHOD_DUMP(OS, get_length)<br>
> +  RAW_METHOD_DUMP(OS, get_liveRangeLength)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualAddress)<br>
> +  RAW_METHOD_DUMP(OS, get_udtKind)<br>
> +  RAW_METHOD_DUMP(OS, get_constructor)<br>
> +  RAW_METHOD_DUMP(OS, get_customCallingConvention)<br>
> +  RAW_METHOD_DUMP(OS, get_farReturn)<br>
> +  RAW_METHOD_DUMP(OS, get_code)<br>
> +  RAW_METHOD_DUMP(OS, get_compilerGenerated)<br>
> +  RAW_METHOD_DUMP(OS, get_constType)<br>
> +  RAW_METHOD_DUMP(OS, get_editAndContinueEnabled)<br>
> +  RAW_METHOD_DUMP(OS, get_function)<br>
> +  RAW_METHOD_DUMP(OS, get_stride)<br>
> +  RAW_METHOD_DUMP(OS, get_noStackOrdering)<br>
> +  RAW_METHOD_DUMP(OS, get_hasAlloca)<br>
> +  RAW_METHOD_DUMP(OS, get_hasAssignmentOperator)<br>
> +  RAW_METHOD_DUMP(OS, get_isCTypes)<br>
> +  RAW_METHOD_DUMP(OS, get_hasCastOperator)<br>
> +  RAW_METHOD_DUMP(OS, get_hasDebugInfo)<br>
> +  RAW_METHOD_DUMP(OS, get_hasEH)<br>
> +  RAW_METHOD_DUMP(OS, get_hasEHa)<br>
> +  RAW_METHOD_DUMP(OS, get_hasInlAsm)<br>
> +  RAW_METHOD_DUMP(OS, get_framePointerPresent)<br>
> +  RAW_METHOD_DUMP(OS, get_inlSpec)<br>
> +  RAW_METHOD_DUMP(OS, get_interruptReturn)<br>
> +  RAW_METHOD_DUMP(OS, get_hasLongJump)<br>
> +  RAW_METHOD_DUMP(OS, get_hasManagedCode)<br>
> +  RAW_METHOD_DUMP(OS, get_hasNestedTypes)<br>
> +  RAW_METHOD_DUMP(OS, get_noInline)<br>
> +  RAW_METHOD_DUMP(OS, get_noReturn)<br>
> +  RAW_METHOD_DUMP(OS, get_optimizedCodeDebugInfo)<br>
> +  RAW_METHOD_DUMP(OS, get_overloadedOperator)<br>
> +  RAW_METHOD_DUMP(OS, get_hasSEH)<br>
> +  RAW_METHOD_DUMP(OS, get_hasSecurityChecks)<br>
> +  RAW_METHOD_DUMP(OS, get_hasSetJump)<br>
> +  RAW_METHOD_DUMP(OS, get_strictGSCheck)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>isAcceleratorGroupSharedLocal)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>isAcceleratorPointerTagLiveRan<u></u>ge)<br>
> +  RAW_METHOD_DUMP(OS, get_isAcceleratorStubFunction)<br>
> +  RAW_METHOD_DUMP(OS, get_isAggregated)<br>
> +  RAW_METHOD_DUMP(OS, get_intro)<br>
> +  RAW_METHOD_DUMP(OS, get_isCVTCIL)<br>
> +  RAW_METHOD_DUMP(OS, get_isConstructorVirtualBase)<br>
> +  RAW_METHOD_DUMP(OS, get_isCxxReturnUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_isDataAligned)<br>
> +  RAW_METHOD_DUMP(OS, get_isHLSLData)<br>
> +  RAW_METHOD_DUMP(OS, get_isHotpatchable)<br>
> +  RAW_METHOD_DUMP(OS, get_indirectVirtualBaseClass)<br>
> +  RAW_METHOD_DUMP(OS, get_isInterfaceUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_intrinsic)<br>
> +  RAW_METHOD_DUMP(OS, get_isLTCG)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>isLocationControlFlowDependent<u></u>)<br>
> +  RAW_METHOD_DUMP(OS, get_isMSILNetmodule)<br>
> +  RAW_METHOD_DUMP(OS, get_isMatrixRowMajor)<br>
> +  RAW_METHOD_DUMP(OS, get_managed)<br>
> +  RAW_METHOD_DUMP(OS, get_msil)<br>
> +  RAW_METHOD_DUMP(OS, get_isMultipleInheritance)<br>
> +  RAW_METHOD_DUMP(OS, get_isNaked)<br>
> +  RAW_METHOD_DUMP(OS, get_nested)<br>
> +  RAW_METHOD_DUMP(OS, get_isOptimizedAway)<br>
> +  RAW_METHOD_DUMP(OS, get_packed)<br>
> +  RAW_METHOD_DUMP(OS, get_<u></u>isPointerBasedOnSymbolValue)<br>
> +  RAW_METHOD_DUMP(OS, get_isPointerToDataMember)<br>
> +  RAW_METHOD_DUMP(OS, get_isPointerToMemberFunction)<br>
> +  RAW_METHOD_DUMP(OS, get_pure)<br>
> +  RAW_METHOD_DUMP(OS, get_RValueReference)<br>
> +  RAW_METHOD_DUMP(OS, get_isRefUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_reference)<br>
> +  RAW_METHOD_DUMP(OS, get_restrictedType)<br>
> +  RAW_METHOD_DUMP(OS, get_isReturnValue)<br>
> +  RAW_METHOD_DUMP(OS, get_isSafeBuffers)<br>
> +  RAW_METHOD_DUMP(OS, get_scoped)<br>
> +  RAW_METHOD_DUMP(OS, get_isSdl)<br>
> +  RAW_METHOD_DUMP(OS, get_isSingleInheritance)<br>
> +  RAW_METHOD_DUMP(OS, get_isSplitted)<br>
> +  RAW_METHOD_DUMP(OS, get_isStatic)<br>
> +  RAW_METHOD_DUMP(OS, get_isStripped)<br>
> +  RAW_METHOD_DUMP(OS, get_unalignedType)<br>
> +  RAW_METHOD_DUMP(OS, get_notReached)<br>
> +  RAW_METHOD_DUMP(OS, get_isValueUdt)<br>
> +  RAW_METHOD_DUMP(OS, get_virtual)<br>
> +  RAW_METHOD_DUMP(OS, get_virtualBaseClass)<br>
> +  RAW_METHOD_DUMP(OS, get_isVirtualInheritance)<br>
> +  RAW_METHOD_DUMP(OS, get_volatileType)<br>
> +}<br>
> +<br>
> +std::unique_ptr<<u></u>IPDBEnumSymbols><br>
> +DIARawSymbol::findChildren(<u></u>PDB_SymType Type) const {<br>
> +  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);<br>
> +<br>
> +  CComPtr<IDiaEnumSymbols> DiaEnumerator;<br>
> +  if (S_OK != Symbol->findChildren(EnumVal, nullptr, nsNone, &DiaEnumerator))<br>
> +    return nullptr;<br>
> +<br>
> +  return std::make_unique<<u></u>DIAEnumSymbols>(Session, DiaEnumerator);<br>
> +}<br>
><br>
> std::unique_ptr<<u></u>IPDBEnumSymbols><br>
> DIARawSymbol::findChildren(<u></u>PDB_SymType Type, StringRef Name,<br>
> @@ -198,7 +414,7 @@ void DIARawSymbol::<u></u>getFrontEndVersion(Ve<br>
> }<br>
><br>
> PDB_Lang DIARawSymbol::getLanguage() const {<br>
> -  return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_count);<br>
> +  return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_language);<br>
> }<br>
><br>
> uint32_t DIARawSymbol::<u></u>getLexicalParentId() const {<br>
> @@ -224,9 +440,9 @@ uint32_t DIARawSymbol::<u></u>getLiveRangeStart<br>
>       Symbol, &IDiaSymbol::get_<u></u>liveRangeStartRelativeVirtualA<u></u>ddress);<br>
> }<br>
><br>
> -uint32_t DIARawSymbol::<u></u>getLocalBasePointerRegisterId(<u></u>) const {<br>
> -  return PrivateGetDIAValue(Symbol,<br>
> -                            &IDiaSymbol::get_<u></u>localBasePointerRegisterId);<br>
> +PDB_RegisterId DIARawSymbol::<u></u>getLocalBasePointerRegisterId(<u></u>) const {<br>
> +  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(<br>
> +      Symbol, &IDiaSymbol::get_<u></u>localBasePointerRegisterId);<br>
> }<br>
><br>
> uint32_t DIARawSymbol::getLowerBoundId(<u></u>) const {<br>
> @@ -286,8 +502,9 @@ uint32_t DIARawSymbol::getRank() const {<br>
>   return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_rank);<br>
> }<br>
><br>
> -uint32_t DIARawSymbol::getRegisterId() const {<br>
> -  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_registerId);<br>
> +PDB_RegisterId DIARawSymbol::getRegisterId() const {<br>
> +  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(Symbol,<br>
> +                                                   &IDiaSymbol::get_registerId);<br>
> }<br>
><br>
> uint32_t DIARawSymbol::getRegisterType(<u></u>) const {<br>
> @@ -486,7 +703,7 @@ bool DIARawSymbol::isFunction() const {<br>
> }<br>
><br>
> bool DIARawSymbol::getAddressTaken(<u></u>) const {<br>
> -  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_stride);<br>
> +  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressTaken)<u></u>;<br>
> }<br>
><br>
> bool DIARawSymbol::<u></u>getNoStackOrdering() const {<br>
> @@ -533,6 +750,10 @@ bool DIARawSymbol::<u></u>hasInterruptReturn()<br>
>   return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_<u></u>interruptReturn);<br>
> }<br>
><br>
> +bool DIARawSymbol::hasFramePointer(<u></u>) const {<br>
> +  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_<u></u>framePointerPresent);<br>
> +}<br>
> +<br>
> bool DIARawSymbol::hasLongJump() const {<br>
>   return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasLongJump);<br>
> }<br>
><br>
> Modified: llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIASession.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp?rev=228755&r1=228754&r2=228755&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>DebugInfo/PDB/DIA/DIASession.<u></u>cpp?rev=228755&r1=228754&r2=<u></u>228755&view=diff</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIASession.cpp (original)<br>
> +++ llvm/trunk/lib/DebugInfo/PDB/<u></u>DIA/DIASession.cpp Tue Feb 10 16:43:25 2015<br>
> @@ -7,11 +7,14 @@<br>
> //<br>
> //===-------------------------<u></u>------------------------------<u></u>---------------===//<br>
><br>
> +#include "llvm/DebugInfo/PDB/<u></u>PDBSymbolCompiland.h"<br>
> +#include "llvm/DebugInfo/PDB/<u></u>PDBSymbolExe.h"<br>
> +<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIAEnumDebugStreams.h"<br>
> +#include "llvm/DebugInfo/PDB/DIA/<u></u>DIAEnumSourceFiles.h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIARawSymbol.h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIASession.h"<br>
> #include "llvm/DebugInfo/PDB/DIA/<u></u>DIASourceFile.h"<br>
> -#include "llvm/DebugInfo/PDB/<u></u>PDBSymbolExe.h"<br>
> #include "llvm/Support/ConvertUTF.h"<br>
><br>
> using namespace llvm;<br>
> @@ -75,6 +78,27 @@ std::unique_ptr<PDBSymbol> DIASession::g<br>
>   return PDBSymbol::create(*this, std::move(RawSymbol));<br>
> }<br>
><br>
> +std::unique_ptr<<u></u>IPDBEnumSourceFiles> DIASession::getAllSourceFiles(<u></u>) const {<br>
> +  CComPtr<IDiaEnumSourceFiles> Files;<br>
> +  if (S_OK != Session->findFile(nullptr, nullptr, nsNone, &Files))<br>
> +    return nullptr;<br>
> +<br>
> +  return std::make_unique<<u></u>DIAEnumSourceFiles>(*this, Files);<br>
> +}<br>
> +<br>
> +std::unique_ptr<<u></u>IPDBEnumSourceFiles> DIASession::<u></u>getSourceFilesForCompiland(<br>
> +    const PDBSymbolCompiland &Compiland) const {<br>
> +  CComPtr<IDiaEnumSourceFiles> Files;<br>
> +<br>
> +  const DIARawSymbol &RawSymbol =<br>
> +      static_cast<const DIARawSymbol &>(Compiland.getRawSymbol());<br>
> +  if (S_OK !=<br>
> +      Session->findFile(RawSymbol.<u></u>getDiaSymbol(), nullptr, nsNone, &Files))<br>
> +    return nullptr;<br>
> +<br>
> +  return std::make_unique<<u></u>DIAEnumSourceFiles>(*this, Files);<br>
> +}<br>
> +<br>
> std::unique_ptr<<u></u>IPDBSourceFile><br>
> DIASession::getSourceFileById(<u></u>uint32_t FileId) const {<br>
>   CComPtr<IDiaSourceFile> LocatedFile;<br>
><br>
> Added: llvm/trunk/lib/DebugInfo/PDB/<u></u>IPDBSourceFile.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/IPDBSourceFile.cpp?rev=228755&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>DebugInfo/PDB/IPDBSourceFile.<u></u>cpp?rev=228755&view=auto</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/lib/DebugInfo/PDB/<u></u>IPDBSourceFile.cpp (added)<br>
> +++ llvm/trunk/lib/DebugInfo/PDB/<u></u>IPDBSourceFile.cpp Tue Feb 10 16:43:25 2015<br>
> @@ -0,0 +1,34 @@<br>
> +//===- IPDBSourceFile.cpp - base interface for a PDB source file *- 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>
> +//===------------------------<u></u>------------------------------<u></u>----------------===//<br>
> +<br>
> +#include "llvm/DebugInfo/PDB/<u></u>IPDBSourceFile.h"<br>
> +#include "llvm/DebugInfo/PDB/PDBExtras.<u></u>h"<br>
> +#include "llvm/Support/Format.h"<br>
> +#include "llvm/Support/raw_ostream.h"<br>
> +<br>
> +using namespace llvm;<br>
> +<br>
> +IPDBSourceFile::~<u></u>IPDBSourceFile() {}<br>
> +<br>
> +void IPDBSourceFile::dump(raw_<u></u>ostream &OS, int Indent,<br>
> +                          PDB_DumpLevel Level) const {<br>
> +  if (Level == PDB_DumpLevel::Compact) {<br>
> +    OS.indent(Indent);<br>
> +    PDB_Checksum ChecksumType = getChecksumType();<br>
> +    OS << "[";<br>
> +    if (ChecksumType != PDB_Checksum::None) {<br>
> +      OS << ChecksumType << ": ";<br>
> +      std::string Checksum = getChecksum();<br>
> +      for (uint8_t c : Checksum)<br>
> +        OS << format_hex_no_prefix(c, 2, true);<br>
> +    } else<br>
> +      OS << "No checksum";<br>
> +    OS << "] " << getFileName() << "\n";<br>
> +  }<br>
> +}<br>
><br>
> Added: llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBExtras.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBExtras.cpp?rev=228755&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>DebugInfo/PDB/PDBExtras.cpp?<u></u>rev=228755&view=auto</a><br>
> ==============================<u></u>==============================<u></u>==================<br>
> --- llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBExtras.cpp (added)<br>
> +++ llvm/trunk/lib/DebugInfo/PDB/<u></u>PDBExtras.cpp Tue Feb 10 16:43:25 2015<br>
> @@ -0,0 +1,219 @@<br>
> +//===- PDBExtras.cpp - helper functions and classes for PDBs -----*- 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>
> +//===------------------------<u></u>------------------------------<u></u>----------------===//<br>
> +<br>
> +#include "llvm/DebugInfo/PDB/PDBExtras.<u></u>h"<br>
> +#include "llvm/ADT/ArrayRef.h"<br>
> +<br>
> +using namespace llvm;<br>
> +<br>
> +#define CASE_OUTPUT_ENUM_CLASS_STR(<u></u>Class, Value, Str, Stream)                  \<br>
> +  case Class::Value:                                                           \<br>
> +    Stream << Str;                                                             \<br>
> +    break;<br>
> +<br>
> +#define CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>Class, Value, Stream)                      \<br>
> +  CASE_OUTPUT_ENUM_CLASS_STR(<u></u>Class, Value, #Value, Stream)<br>
> +<br>
> +raw_ostream &llvm::operator<<(raw_ostream &OS, const stream_indent &Indent) {<br>
> +  OS.indent(Indent.Width);<br>
> +  return OS;<br>
> +}<br>
> +<br>
> +raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_RegisterId &Reg) {<br>
> +  switch (Reg) {<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, AL, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, CL, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, DL, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, BL, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, AH, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, CH, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, DH, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, BH, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, AX, OS)<br>
> +    CASE_OUTPUT_ENUM_CLASS_NAME(<u></u>PDB_RegisterId, CX, OS)<br>
> +    CASE</blockquote></div>