[llvm] r228755 - Rewrite llvm-pdbdump in terms of LLVMDebugInfoPDB.

Zachary Turner zturner at google.com
Wed Feb 11 09:21:43 PST 2015


This should have been fixed yesterday, are you at tot?
On Wed, Feb 11, 2015 at 9:20 AM Adrian Prantl <aprantl at apple.com> wrote:

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


More information about the llvm-commits mailing list