Some cleanup for libpdb.
authorZachary Turner <zturner@google.com>
Sun, 8 Feb 2015 00:29:29 +0000 (00:29 +0000)
committerZachary Turner <zturner@google.com>
Sun, 8 Feb 2015 00:29:29 +0000 (00:29 +0000)
This patch implements a few of the optional suggestions from the
initial patch comitting libpdb.  In particular, it implements a
virtual function out of line for each of the concrete classes.

A few other minor cleanups exist as well, such as using override
instead of virtual, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228516 91177308-0d34-0410-b5e6-96231b3b80d8

68 files changed:
include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
include/llvm/DebugInfo/PDB/PDBSymbol.h
include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
include/llvm/DebugInfo/PDB/PDBSymbolData.h
include/llvm/DebugInfo/PDB/PDBSymbolExe.h
include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
include/llvm/DebugInfo/PDB/PDBTypes.h
lib/DebugInfo/PDB/CMakeLists.txt
lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolBlock.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolCompiland.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp
lib/DebugInfo/PDB/PDBSymbolCustom.cpp
lib/DebugInfo/PDB/PDBSymbolData.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolExe.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolFunc.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolLabel.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolThunk.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolUnknown.cpp [new file with mode: 0644]
lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp [new file with mode: 0644]
unittests/DebugInfo/PDB/PDBApiTest.cpp

index 3ec1220c8b2d60e519b714f490f2f9700f8770a7..960821d6ad696527cb8752e4fe24a5f7f9b98f35 100644 (file)
 
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringRef.h"
-#include "llvm/Support/COFF.h"
-#include "llvm/Support/raw_ostream.h"
 #include "PDBTypes.h"
 
 namespace llvm {
 
+class raw_ostream;
+
 /// IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
 /// It exposes a monolithic interface consisting of accessors for the union of
 /// all properties that are valid for any symbol type.  This interface is then
@@ -41,14 +41,12 @@ public:
   findInlineFramesByRVA(uint32_t RVA) const = 0;
 
   virtual void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const = 0;
+  virtual void getBackEndVersion(VersionInfo &Version) const = 0;
   virtual PDB_MemberAccess getAccess() const = 0;
   virtual uint32_t getAddressOffset() const = 0;
   virtual uint32_t getAddressSection() const = 0;
   virtual uint32_t getAge() const = 0;
   virtual uint32_t getArrayIndexTypeId() const = 0;
-  virtual uint32_t getBackEndBuild() const = 0;
-  virtual uint32_t getBackEndMajor() const = 0;
-  virtual uint32_t getBackEndMinor() const = 0;
   virtual uint32_t getBaseDataOffset() const = 0;
   virtual uint32_t getBaseDataSlot() const = 0;
   virtual uint32_t getBaseSymbolId() const = 0;
@@ -59,9 +57,7 @@ public:
   virtual std::string getCompilerName() const = 0;
   virtual uint32_t getCount() const = 0;
   virtual uint32_t getCountLiveRanges() const = 0;
-  virtual uint32_t getFrontEndBuild() const = 0;
-  virtual uint32_t getFrontEndMajor() const = 0;
-  virtual uint32_t getFrontEndMinor() const = 0;
+  virtual void getFrontEndVersion(VersionInfo &Version) const = 0;
   virtual PDB_Lang getLanguage() const = 0;
   virtual uint32_t getLexicalParentId() const = 0;
   virtual std::string getLibraryName() const = 0;
@@ -117,7 +113,7 @@ public:
   virtual int32_t getThisAdjust() const = 0;
   virtual int32_t getVirtualBasePointerOffset() const = 0;
   virtual PDB_LocType getLocationType() const = 0;
-  virtual COFF::MachineTypes getMachineType() const = 0;
+  virtual PDB_Machine getMachineType() const = 0;
   virtual PDB_ThunkOrdinal getThunkOrdinal() const = 0;
   virtual uint64_t getLength() const = 0;
   virtual uint64_t getLiveRangeLength() const = 0;
index 38c578e2c24a03496144ff039ea907742255d128..8033e476657db2630b37bfcff5dd69396e0e8b23 100644 (file)
@@ -13,7 +13,6 @@
 #include <memory>
 
 #include "llvm/ADT/StringRef.h"
-#include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/Casting.h"
 
 #include "IPDBRawSymbol.h"
@@ -27,6 +26,7 @@
 namespace llvm {
 
 class IPDBRawSymbol;
+class raw_ostream;
 
 /// PDBSymbol defines the base of the inheritance hierarchy for concrete symbol
 /// types (e.g. functions, executables, vtables, etc).  All concrete symbol
index 9c7fca1617f1f2c5a038f10c0ec630e7f339a8e1..44a6105487209f782c6a5c0e9b90620394f9a3b7 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolAnnotation : public PDBSymbol {
 public:
   PDBSymbolAnnotation(std::unique_ptr<IPDBRawSymbol> AnnotationSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(getDataKind)
index 8be30460ae21115fca063009756fdb7201376c53..becc0c3d41b7307102c470f6e879a1804ce9dab7 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolBlock : public PDBSymbol {
 public:
   PDBSymbolBlock(std::unique_ptr<IPDBRawSymbol> BlockSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(getLength)
index efa0e81aab519a603c005a1bdb3b3769b212c9c1..e12e933ebbbbcca8f56e2d3bc3cacf3e0b46c436 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolCompiland : public PDBSymbol {
 public:
   PDBSymbolCompiland(std::unique_ptr<IPDBRawSymbol> CompilandSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(isEditAndContinueEnabled)
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
   FORWARD_SYMBOL_METHOD(getLibraryName)
index 56dfc7352e9af6930cd22f954887261dc944295a..1b04bdbc71ca2421724df45312cc7ad5f863f2db 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolCompilandDetails : public PDBSymbol {
 public:
   PDBSymbolCompilandDetails(std::unique_ptr<IPDBRawSymbol> DetailsSymbol);
 
-  FORWARD_SYMBOL_METHOD(getBackEndBuild)
-  FORWARD_SYMBOL_METHOD(getBackEndMajor)
-  FORWARD_SYMBOL_METHOD(getBackEndMinor)
+  void dump(llvm::raw_ostream &OS) const override;
+
+  void getFrontEndVersion(VersionInfo &Version) const {
+    RawSymbol->getFrontEndVersion(Version);
+  }
+
+  void getBackEndVersion(VersionInfo &Version) const {
+    RawSymbol->getBackEndVersion(Version);
+  }
+
   FORWARD_SYMBOL_METHOD(getCompilerName)
   FORWARD_SYMBOL_METHOD(isEditAndContinueEnabled)
-  FORWARD_SYMBOL_METHOD(getFrontEndBuild)
-  FORWARD_SYMBOL_METHOD(getFrontEndMajor)
-  FORWARD_SYMBOL_METHOD(getFrontEndMinor)
   FORWARD_SYMBOL_METHOD(hasDebugInfo)
   FORWARD_SYMBOL_METHOD(hasManagedCode)
   FORWARD_SYMBOL_METHOD(hasSecurityChecks)
index dd833bd01d077a477ae0767fc85c78d89d573243..c4c45ec5a6090c57e2fec59bce700ff890c90782 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolCompilandEnv : public PDBSymbol {
 public:
   PDBSymbolCompilandEnv(std::unique_ptr<IPDBRawSymbol> CompilandEnvSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
   FORWARD_SYMBOL_METHOD(getName)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index 0d95b879ebc1c1ac3c639c9d27f156428d535b86..e6952d8693c670cbd46205b7de3e8610102eb0c5 100644 (file)
@@ -17,6 +17,8 @@
 
 namespace llvm {
 
+class raw_ostream;
+
 /// PDBSymbolCustom represents symbols that are compiler-specific and do not
 /// fit anywhere else in the lexical hierarchy.
 /// https://msdn.microsoft.com/en-us/library/d88sf09h.aspx
@@ -24,8 +26,9 @@ class PDBSymbolCustom : public PDBSymbol {
 public:
   PDBSymbolCustom(std::unique_ptr<IPDBRawSymbol> CustomSymbol);
 
-  void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes);
+  void dump(llvm::raw_ostream &OS) const override;
 
+  void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes);
   FORWARD_SYMBOL_METHOD(getSymIndexId)
 
   static bool classof(const PDBSymbol *S) {
index 64f0f76c08eba0c82a34d2f515b9430c0ba84ba4..850365730e1baf2582018485825d61651b15fb55 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolData : public PDBSymbol {
 public:
   PDBSymbolData(std::unique_ptr<IPDBRawSymbol> DataSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAccess)
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
index 0a3d5a7b16968766c91d16b157714fadb50e4171..79413fa7d8e5803d853a67db27c4c8b18e462940 100644 (file)
@@ -6,6 +6,7 @@
 // License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
+
 #ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H
 #define LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H
 
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolExe : public PDBSymbol {
 public:
   PDBSymbolExe(std::unique_ptr<IPDBRawSymbol> ExeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAge)
   FORWARD_SYMBOL_METHOD(getGuid)
   FORWARD_SYMBOL_METHOD(hasCTypes)
index dac7e258118ddc4f01ca6f8d330dfb2e5e231a94..0213ace8387ad3bb0974fec60393c582e3327995 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolFunc : public PDBSymbol {
 public:
   PDBSymbolFunc(std::unique_ptr<IPDBRawSymbol> FuncSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAccess)
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
index 989ce2f5a02a186d7339bb5662e9bd8ba762148c..0155e0b7cfc8430266ef31bb19f1a8dc7f7ed813 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolFuncDebugEnd : public PDBSymbol {
 public:
   PDBSymbolFuncDebugEnd(std::unique_ptr<IPDBRawSymbol> FuncDebugEndSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)
index 82e0caa0d3acd4c24648ed2deb30bee1863c1ceb..35716349a83b8036d5cc3558fc4f8cb1059ac298 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolFuncDebugStart : public PDBSymbol {
 public:
   PDBSymbolFuncDebugStart(std::unique_ptr<IPDBRawSymbol> FuncDebugStartSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)
index 0502fa916a3a9f076cafe8e8d149d9ba0bce34a8..f0c44617220536b857b2f38bb771aaba670425ad 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolLabel : public PDBSymbol {
 public:
   PDBSymbolLabel(std::unique_ptr<IPDBRawSymbol> LabelSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)
index 30c307a3b10885dfbba56581128522430b923f73..5acce3232211914cebaebb257f9baf2be879b10f 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolPublicSymbol : public PDBSymbol {
 public:
   PDBSymbolPublicSymbol(std::unique_ptr<IPDBRawSymbol> PublicSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
   FORWARD_SYMBOL_METHOD(isCode)
index ab8c731d2d254ce45b299a05db30fc1036096c0e..24392fb21749fcceb97d059d2ecd6e1078e6d3ce 100644 (file)
@@ -6,6 +6,7 @@
 // License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
+
 #ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H
 #define LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H
 
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolThunk : public PDBSymbol {
 public:
   PDBSymbolThunk(std::unique_ptr<IPDBRawSymbol> ThunkSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAccess)
   FORWARD_SYMBOL_METHOD(getAddressOffset)
   FORWARD_SYMBOL_METHOD(getAddressSection)
index 92a02ea1811368894a877d5114e66c40a7a8e6ed..19a5a4311d77ddb2f85b193f93801d2c673b7269 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeArray : public PDBSymbol {
 public:
   PDBSymbolTypeArray(std::unique_ptr<IPDBRawSymbol> ArrayTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getArrayIndexTypeId)
   FORWARD_SYMBOL_METHOD(isConstType)
   FORWARD_SYMBOL_METHOD(getCount)
index faab9bee319b06fe5d060aa7bf85b4075de97e0b..324175b92e7279d028a5314fe489b1da6b2adec6 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeBaseClass : public PDBSymbol {
 public:
   PDBSymbolTypeBaseClass(std::unique_ptr<IPDBRawSymbol> BaseClassTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getAccess)
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(hasConstructor)
index 33406e0d24e67319ee95ee1c9a399b382d67d137..f5063ecce041770e057bf89a68ac0424629ac7d8 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeBuiltin : public PDBSymbol {
 public:
   PDBSymbolTypeBuiltin(std::unique_ptr<IPDBRawSymbol> BuiltinTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getBuiltinType)
   FORWARD_SYMBOL_METHOD(isConstType)
   FORWARD_SYMBOL_METHOD(getLength)
index 3c79c662c5590ee65f9891c1d7b30557b93712b0..fdf5b2b40c347ee9e8dcc92d314a43d6bd5e590e 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeCustom : public PDBSymbol {
 public:
   PDBSymbolTypeCustom(std::unique_ptr<IPDBRawSymbol> CustomTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getOemId)
   FORWARD_SYMBOL_METHOD(getOemSymbolId)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index 562937e45d545d67db80c58f29fb117e69b512f1..8eb32fdbc94310c6fd592a568da303034ef50fb3 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeDimension : public PDBSymbol {
 public:
   PDBSymbolTypeDimension(std::unique_ptr<IPDBRawSymbol> DimensionTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getLowerBoundId)
   FORWARD_SYMBOL_METHOD(getUpperBoundId)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index 2a4d904828e1ef0c725031076c5ed8de4b944b66..75030a9ca081f6a0a82a70985b5d06b81c58ae09 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeEnum : public PDBSymbol {
 public:
   PDBSymbolTypeEnum(std::unique_ptr<IPDBRawSymbol> EnumTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getBuiltinType)
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(hasConstructor)
index 547e9401f9b8f1fc0f66a74cea44a9d85854c296..7194bc4ceaa913102abbacce1481b05060ccaef4 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeFriend : public PDBSymbol {
 public:
   PDBSymbolTypeFriend(std::unique_ptr<IPDBRawSymbol> FriendTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(getName)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index 89c33ab780dca81f6b0a73a770958c159383042b..3af0984ab9eaee1b4973838ba2ca18e2774196d7 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeFunctionArg : public PDBSymbol {
 public:
   PDBSymbolTypeFunctionArg(std::unique_ptr<IPDBRawSymbol> FuncArgTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index 69c3f203bdf832352e8754a14e26d8c12f301946..d68d8288433351361222c4e36873b199bf3b24af 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeFunctionSig : public PDBSymbol {
 public:
   PDBSymbolTypeFunctionSig(std::unique_ptr<IPDBRawSymbol> FuncSigTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getCallingConvention)
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(isConstType)
index f10491ba681686f42e95795b6d52bc2900ab4afe..10bf19092e7ebf6e35475b8eb8c6d858f9b1777d 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeManaged : public PDBSymbol {
 public:
   PDBSymbolTypeManaged(std::unique_ptr<IPDBRawSymbol> ManagedTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getName)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
 
index ddf84138e674c43b49cd71a8f6eae3cc17835bf0..ffc7b6393124b9882a8d7fbdc37fcb890ad4a585 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypePointer : public PDBSymbol {
 public:
   PDBSymbolTypePointer(std::unique_ptr<IPDBRawSymbol> PointerTypeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(isConstType)
   FORWARD_SYMBOL_METHOD(getLength)
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
index de8d7f989dc40585166d3b5f9fcd864e9716b07c..3d31e73fbb58094dd4856a8713b4784314c8992f 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeTypedef : public PDBSymbol {
 public:
   PDBSymbolTypeTypedef(std::unique_ptr<IPDBRawSymbol> TypedefSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getBuiltinType)
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(hasConstructor)
index 876a75692df416249a5b285f55aa6cf98831e2e8..d26f866d74d240033f3a295eb74009f9c582390c 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeUDT : public PDBSymbol {
 public:
   PDBSymbolTypeUDT(std::unique_ptr<IPDBRawSymbol> UDTSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(hasConstructor)
   FORWARD_SYMBOL_METHOD(isConstType)
index 4e3aff8aaa32e4a8e3b960a0ab6f395a011165bd..1d966bf33c5dfcd5e0ffdf98789bd24cf1598065 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeVTable : public PDBSymbol {
 public:
   PDBSymbolTypeVTable(std::unique_ptr<IPDBRawSymbol> VtblSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getClassParentId)
   FORWARD_SYMBOL_METHOD(isConstType)
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
index b3cb8a24f33cd1918f05f88440b6924044a685df..d1fd758ed5c85516ca58e2bc118ac1090d63180f 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolTypeVTableShape : public PDBSymbol {
 public:
   PDBSymbolTypeVTableShape(std::unique_ptr<IPDBRawSymbol> VtblShapeSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(isConstType)
   FORWARD_SYMBOL_METHOD(getCount)
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
index 11637d337857ba862ed824618c0e30e4547ee83c..7ba190076f4f101a5995d2ad0ad63a72f57ca7ac 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolUnknown : public PDBSymbol {
 public:
   PDBSymbolUnknown(std::unique_ptr<IPDBRawSymbol> UnknownSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   static bool classof(const PDBSymbol *S) {
     return (S->getSymTag() == PDB_SymType::None ||
             S->getSymTag() >= PDB_SymType::Max);
index 7f192b61a20feadbd66b153142c81f12fc12e5b9..92d6ace8938a5cd3accbd94eb70a8eda5a5ea954 100644 (file)
 
 namespace llvm {
 
+class raw_ostream;
+
 class PDBSymbolUsingNamespace : public PDBSymbol {
 public:
   PDBSymbolUsingNamespace(std::unique_ptr<IPDBRawSymbol> UsingSymbol);
 
+  void dump(llvm::raw_ostream &OS) const override;
+
   FORWARD_SYMBOL_METHOD(getLexicalParentId)
   FORWARD_SYMBOL_METHOD(getName)
   FORWARD_SYMBOL_METHOD(getSymIndexId)
index d9ed672c73a16a41f37290a0cdd6af7e96c7aa1a..9f4e54cd40d71b07d3f124602b67ca19d3254164 100644 (file)
@@ -25,7 +25,7 @@ class IPDBRawSymbol;
 class IPDBSession;
 class IPDBSourceFile;
 
-typedef IPDBEnumChildren<IPDBRawSymbol> IPDBEnumSymbols;
+typedef IPDBEnumChildren<PDBSymbol> IPDBEnumSymbols;
 typedef IPDBEnumChildren<IPDBSourceFile> IPDBEnumSourceFiles;
 typedef IPDBEnumChildren<IPDBDataStream> IPDBEnumDataStreams;
 typedef IPDBEnumChildren<PDBSymbolCompiland> IPDBEnumCompilands;
@@ -171,6 +171,31 @@ enum class PDB_Cpu {
   D3D11_Shader = 0x100,
 };
 
+enum class PDB_Machine {
+  Invalid = 0xffff,
+  Unknown = 0x0,
+  Am33 = 0x13,
+  Amd64 = 0x8664,
+  Arm = 0x1C0,
+  Armnt = 0x1C4,
+  Ebc = 0xEBC,
+  I386 = 0x14C,
+  Ia64 = 0x200,
+  M32r = 0x9041,
+  Mips16 = 0x266,
+  MipsFPU = 0x366,
+  MipsFPU16 = 0x466,
+  PowerPC = 0x1F0,
+  PowerPCFP = 0x1F1,
+  R4000 = 0x166,
+  SH3 = 0x1A2,
+  SH3DSP = 0x1A3,
+  SH4 = 0x1A6,
+  SH5 = 0x1A8,
+  Thumb = 0x1C2,
+  WceMipsV2 = 0x169
+};
+
 /// These values correspond to the CV_call_e enumeration, and are documented
 /// at the following locations:
 ///   https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx
@@ -345,6 +370,13 @@ enum class PDB_BuiltinType {
 
 enum class PDB_MemberAccess { Private = 1, Protected = 2, Public = 3 };
 
+struct VersionInfo {
+  uint32_t Major;
+  uint32_t Minor;
+  uint32_t Build;
+  uint32_t QFE;
+};
+
 } // namespace llvm
 
 #endif
index 5d24bdb60a4e9f730789e9eacbd0d62cd6ab39e5..2cb958cc5e6b604d179774db5303a6a44de36832 100644 (file)
@@ -2,6 +2,35 @@ add_llvm_library(LLVMDebugInfoPDB
   PDB.cpp
   PDBInterfaceAnchors.cpp
   PDBSymbol.cpp
+  PDBSymbolAnnotation.cpp
+  PDBSymbolBlock.cpp
+  PDBSymbolCompiland.cpp
+  PDBSymbolCompilandDetails.cpp
   PDBSymbolCompilandEnv.cpp
   PDBSymbolCustom.cpp
+  PDBSymbolData.cpp
+  PDBSymbolExe.cpp
+  PDBSymbolFunc.cpp
+  PDBSymbolFuncDebugEnd.cpp
+  PDBSymbolFuncDebugStart.cpp
+  PDBSymbolLabel.cpp
+  PDBSymbolPublicSymbol.cpp
+  PDBSymbolThunk.cpp
+  PDBSymbolTypeArray.cpp
+  PDBSymbolTypeBaseClass.cpp
+  PDBSymbolTypeBuiltin.cpp
+  PDBSymbolTypeCustom.cpp
+  PDBSymbolTypeDimension.cpp
+  PDBSymbolTypeEnum.cpp
+  PDBSymbolTypeFriend.cpp
+  PDBSymbolTypeFunctionArg.cpp
+  PDBSymbolTypeFunctionSig.cpp
+  PDBSymbolTypeManaged.cpp
+  PDBSymbolTypePointer.cpp
+  PDBSymbolTypeTypedef.cpp
+  PDBSymbolTypeUDT.cpp
+  PDBSymbolTypeVTable.cpp
+  PDBSymbolTypeVTableShape.cpp
+  PDBSymbolUnknown.cpp
+  PDBSymbolUsingNamespace.cpp
   )
index 1d6c90198df2859eb7cd4b60a51cf440e5e39418..8b430cf71037e9117b0f8f0f17172578a562ec8e 100644 (file)
 #include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
 
-#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolData.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"
-#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"
-
 using namespace llvm;
 
 IPDBSession::~IPDBSession() {}
@@ -60,42 +28,3 @@ IPDBRawSymbol::~IPDBRawSymbol() {}
 IPDBSourceFile::~IPDBSourceFile() {}
 
 IPDBLineNumber::~IPDBLineNumber() {}
-
-// All of the concrete symbol types have their methods declared inline through
-// the use of a forwarding macro, so the constructor should be declared out of
-// line to get the vtable in this file.
-#define FORWARD_SYMBOL_CONSTRUCTOR(ClassName)                                  \
-  ClassName::ClassName(std::unique_ptr<IPDBRawSymbol> Symbol)                  \
-      : PDBSymbol(std::move(Symbol)) {}
-
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolAnnotation)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolBlock)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompiland)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandDetails)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandEnv)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCustom)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolData)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolExe)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFunc)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugEnd)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugStart)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolLabel)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolPublicSymbol)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolThunk)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeArray)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBaseClass)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBuiltin)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeCustom)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeDimension)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeEnum)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFriend)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionArg)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionSig)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeManaged)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypePointer)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeTypedef)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeUDT)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTable)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTableShape)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUnknown)
-FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUsingNamespace)
diff --git a/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp b/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp
new file mode 100644 (file)
index 0000000..7fc2af3
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolAnnotation.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"
+
+using namespace llvm;
+
+PDBSymbolAnnotation::PDBSymbolAnnotation(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolAnnotation::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolBlock.cpp b/lib/DebugInfo/PDB/PDBSymbolBlock.cpp
new file mode 100644 (file)
index 0000000..9306688
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolBlock.cpp - -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"
+
+using namespace llvm;
+
+PDBSymbolBlock::PDBSymbolBlock(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolBlock::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp b/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp
new file mode 100644 (file)
index 0000000..d349241
--- /dev/null
@@ -0,0 +1,24 @@
+//===- PDBSymbolCompiland.cpp - compiland details --------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+PDBSymbolCompiland::PDBSymbolCompiland(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolCompiland::dump(llvm::raw_ostream &OS) const {
+}
diff --git a/lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp b/lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp
new file mode 100644 (file)
index 0000000..44131b9
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolCompilandDetails.cpp - compiland details --------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"
+
+using namespace llvm;
+
+PDBSymbolCompilandDetails::PDBSymbolCompilandDetails(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolCompilandDetails::dump(llvm::raw_ostream &OS) const {}
index 762c2238926898a6ffd2359c81e1781ffc7536f9..f026dc9ba8a5e336ded5cca2e1283f97a461481a 100644 (file)
 
 using namespace llvm;
 
+PDBSymbolCompilandEnv::PDBSymbolCompilandEnv(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
 std::string PDBSymbolCompilandEnv::getValue() const {
   // call RawSymbol->getValue() and convert the result to an std::string.
   return std::string();
 }
+
+void PDBSymbolCompilandEnv::dump(llvm::raw_ostream &OS) const {}
index aa1a8ed6e0bcfb8aec40fba753c41863a66ecccf..449151d8393b62914677fb5ab3bf6891bb80804a 100644 (file)
 
 using namespace llvm;
 
+PDBSymbolCustom::PDBSymbolCustom(std::unique_ptr<IPDBRawSymbol> CustomSymbol)
+    : PDBSymbol(std::move(CustomSymbol)) {}
+
 void PDBSymbolCustom::getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) {
   RawSymbol->getDataBytes(bytes);
 }
+
+void PDBSymbolCustom::dump(llvm::raw_ostream &OS) const {}
\ No newline at end of file
diff --git a/lib/DebugInfo/PDB/PDBSymbolData.cpp b/lib/DebugInfo/PDB/PDBSymbolData.cpp
new file mode 100644 (file)
index 0000000..5777a69
--- /dev/null
@@ -0,0 +1,17 @@
+//===- PDBSymbolData.cpp - PDB data (e.g. variable) accessors ---*- 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/PDBSymbolData.h"
+
+using namespace llvm;
+
+PDBSymbolData::PDBSymbolData(std::unique_ptr<IPDBRawSymbol> DataSymbol)
+    : PDBSymbol(std::move(DataSymbol)) {}
+
+void PDBSymbolData::dump(llvm::raw_ostream &OS) const {}
\ No newline at end of file
diff --git a/lib/DebugInfo/PDB/PDBSymbolExe.cpp b/lib/DebugInfo/PDB/PDBSymbolExe.cpp
new file mode 100644 (file)
index 0000000..cf7dc80
--- /dev/null
@@ -0,0 +1,45 @@
+//===- PDBSymbolExe.cpp - ---------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
+#include "llvm/Support/ConvertUTF.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/raw_ostream.h"
+
+#if defined(_WIN32)
+#include <windows.h>
+#endif
+
+using namespace llvm;
+
+namespace {
+std::string GuidToString(PDB_UniqueId *Id) {
+#if defined(_WIN32)
+  GUID *Guid = reinterpret_cast<GUID *>(Id);
+  OLECHAR GuidBuf[40];
+  int Result = StringFromGUID2(*Guid, GuidBuf, 39);
+  const char *InputBytes = reinterpret_cast<const char *>(GuidBuf);
+  std::string ResultString;
+  convertUTF16ToUTF8String(ArrayRef<char>(InputBytes, Result * 2),
+                           ResultString);
+  return ResultString;
+#else
+  return std::string();
+#endif
+}
+}
+
+PDBSymbolExe::PDBSymbolExe(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolExe::dump(llvm::raw_ostream &OS) const {
+}
diff --git a/lib/DebugInfo/PDB/PDBSymbolFunc.cpp b/lib/DebugInfo/PDB/PDBSymbolFunc.cpp
new file mode 100644 (file)
index 0000000..9c34418
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolFunc.cpp - --------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
+
+using namespace llvm;
+
+PDBSymbolFunc::PDBSymbolFunc(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolFunc::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp b/lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp
new file mode 100644 (file)
index 0000000..03e60c1
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolFuncDebugEnd.cpp - ------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"
+
+using namespace llvm;
+
+PDBSymbolFuncDebugEnd::PDBSymbolFuncDebugEnd(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolFuncDebugEnd::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp b/lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp
new file mode 100644 (file)
index 0000000..ffa1268
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolFuncDebugStart.cpp - ----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"
+
+using namespace llvm;
+
+PDBSymbolFuncDebugStart::PDBSymbolFuncDebugStart(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolFuncDebugStart::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolLabel.cpp b/lib/DebugInfo/PDB/PDBSymbolLabel.cpp
new file mode 100644 (file)
index 0000000..490919f
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolLabel.cpp - -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"
+
+using namespace llvm;
+
+PDBSymbolLabel::PDBSymbolLabel(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolLabel::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp b/lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp
new file mode 100644 (file)
index 0000000..147ac44
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolPublicSymbol.cpp - ------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"
+
+using namespace llvm;
+
+PDBSymbolPublicSymbol::PDBSymbolPublicSymbol(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolPublicSymbol::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolThunk.cpp b/lib/DebugInfo/PDB/PDBSymbolThunk.cpp
new file mode 100644 (file)
index 0000000..76001ca
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolThunk.cpp - -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"
+
+using namespace llvm;
+
+PDBSymbolThunk::PDBSymbolThunk(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolThunk::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp
new file mode 100644 (file)
index 0000000..0f56574
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeArray.cpp - ---------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"
+
+using namespace llvm;
+
+PDBSymbolTypeArray::PDBSymbolTypeArray(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeArray::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp
new file mode 100644 (file)
index 0000000..0decf47
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolTypeBaseClass.cpp - -----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"
+
+using namespace llvm;
+
+PDBSymbolTypeBaseClass::PDBSymbolTypeBaseClass(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeBaseClass::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp
new file mode 100644 (file)
index 0000000..7156435
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolTypeBuiltin.cpp - ------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
+
+using namespace llvm;
+
+PDBSymbolTypeBuiltin::PDBSymbolTypeBuiltin(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeBuiltin::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp
new file mode 100644 (file)
index 0000000..6afbc84
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeCustom.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"
+
+using namespace llvm;
+
+PDBSymbolTypeCustom::PDBSymbolTypeCustom(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeCustom::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp
new file mode 100644 (file)
index 0000000..03d4b92
--- /dev/null
@@ -0,0 +1,22 @@
+//===- PDBSymbolTypeDimension.cpp - --------------------------------*- C++
+//-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"
+
+using namespace llvm;
+
+PDBSymbolTypeDimension::PDBSymbolTypeDimension(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeDimension::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp
new file mode 100644 (file)
index 0000000..e903ffe
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeEnum.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
+
+using namespace llvm;
+
+PDBSymbolTypeEnum::PDBSymbolTypeEnum(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeEnum::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp
new file mode 100644 (file)
index 0000000..240a3c1
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeFriend.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"
+
+using namespace llvm;
+
+PDBSymbolTypeFriend::PDBSymbolTypeFriend(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeFriend::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp
new file mode 100644 (file)
index 0000000..c4415b4
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolTypeFunctionArg.cpp - --------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"
+
+using namespace llvm;
+
+PDBSymbolTypeFunctionArg::PDBSymbolTypeFunctionArg(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeFunctionArg::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp
new file mode 100644 (file)
index 0000000..7ad6c5c
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolTypeFunctionSig.cpp - --------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
+
+using namespace llvm;
+
+PDBSymbolTypeFunctionSig::PDBSymbolTypeFunctionSig(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeFunctionSig::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp
new file mode 100644 (file)
index 0000000..3f372fa
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymboTypelManaged.cpp - ------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"
+
+using namespace llvm;
+
+PDBSymbolTypeManaged::PDBSymbolTypeManaged(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeManaged::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp b/lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp
new file mode 100644 (file)
index 0000000..d7a8a63
--- /dev/null
@@ -0,0 +1,22 @@
+//===- PDBSymbolTypePointer.cpp - --------------------------------*- C++
+//-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
+
+using namespace llvm;
+
+PDBSymbolTypePointer::PDBSymbolTypePointer(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypePointer::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp
new file mode 100644 (file)
index 0000000..bd42eff
--- /dev/null
@@ -0,0 +1,22 @@
+//===- PDBSymbolTypeTypedef.cpp - --------------------------------*- C++
+//-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"
+
+using namespace llvm;
+
+PDBSymbolTypeTypedef::PDBSymbolTypeTypedef(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeTypedef::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp
new file mode 100644 (file)
index 0000000..d8a83af
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeUDT.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
+
+using namespace llvm;
+
+PDBSymbolTypeUDT::PDBSymbolTypeUDT(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeUDT::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp
new file mode 100644 (file)
index 0000000..bc780e1
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolTypeVTable.cpp - --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"
+
+using namespace llvm;
+
+PDBSymbolTypeVTable::PDBSymbolTypeVTable(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeVTable::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp b/lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp
new file mode 100644 (file)
index 0000000..fb448ea
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolTypeVTableShape.cpp - ---------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"
+
+using namespace llvm;
+
+PDBSymbolTypeVTableShape::PDBSymbolTypeVTableShape(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolTypeVTableShape::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolUnknown.cpp b/lib/DebugInfo/PDB/PDBSymbolUnknown.cpp
new file mode 100644 (file)
index 0000000..4c29618
--- /dev/null
@@ -0,0 +1,20 @@
+//===- PDBSymbolUnknown.cpp - -----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"
+
+using namespace llvm;
+
+PDBSymbolUnknown::PDBSymbolUnknown(std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolUnknown::dump(llvm::raw_ostream &OS) const {}
diff --git a/lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp b/lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp
new file mode 100644 (file)
index 0000000..73cfd5c
--- /dev/null
@@ -0,0 +1,21 @@
+//===- PDBSymbolUsingNamespace.cpp - ------------------- --------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <utility>
+
+#include "llvm/DebugInfo/PDB/PDBSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"
+
+using namespace llvm;
+
+PDBSymbolUsingNamespace::PDBSymbolUsingNamespace(
+    std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(std::move(Symbol)) {}
+
+void PDBSymbolUsingNamespace::dump(llvm::raw_ostream &OS) const {}
index 87d4197776cfbed903521c2beaa93667dfe3273e..5a86d4ca7a5a45d9ad5e45452b59c4adcbb4e350 100644 (file)
@@ -88,6 +88,8 @@ public:
   }
 
   void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const override {}
+  void getFrontEndVersion(VersionInfo &Version) const override {}
+  void getBackEndVersion(VersionInfo &Version) const override {}
 
   PDB_SymType getSymTag() const override { return Type; }
 
@@ -96,9 +98,6 @@ public:
   MOCK_SYMBOL_ACCESSOR(getAddressSection)
   MOCK_SYMBOL_ACCESSOR(getAge)
   MOCK_SYMBOL_ACCESSOR(getArrayIndexTypeId)
-  MOCK_SYMBOL_ACCESSOR(getBackEndBuild)
-  MOCK_SYMBOL_ACCESSOR(getBackEndMajor)
-  MOCK_SYMBOL_ACCESSOR(getBackEndMinor)
   MOCK_SYMBOL_ACCESSOR(getBaseDataOffset)
   MOCK_SYMBOL_ACCESSOR(getBaseDataSlot)
   MOCK_SYMBOL_ACCESSOR(getBaseSymbolId)
@@ -109,9 +108,6 @@ public:
   MOCK_SYMBOL_ACCESSOR(getCompilerName)
   MOCK_SYMBOL_ACCESSOR(getCount)
   MOCK_SYMBOL_ACCESSOR(getCountLiveRanges)
-  MOCK_SYMBOL_ACCESSOR(getFrontEndBuild)
-  MOCK_SYMBOL_ACCESSOR(getFrontEndMajor)
-  MOCK_SYMBOL_ACCESSOR(getFrontEndMinor)
   MOCK_SYMBOL_ACCESSOR(getLanguage)
   MOCK_SYMBOL_ACCESSOR(getLexicalParentId)
   MOCK_SYMBOL_ACCESSOR(getLibraryName)