DebugInfoPDB: Make the symbol base case hold an IPDBSession ref.
authorZachary Turner <zturner@google.com>
Sun, 8 Feb 2015 20:58:09 +0000 (20:58 +0000)
committerZachary Turner <zturner@google.com>
Sun, 8 Feb 2015 20:58:09 +0000 (20:58 +0000)
Dumping a symbol often requires access to data that isn't inside
the symbol hierarchy, but which is only accessible through the
top-level session.  This patch is a pure interface change to give
symbols a reference to the session.

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

65 files changed:
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
lib/DebugInfo/PDB/PDBSymbol.cpp
lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp
lib/DebugInfo/PDB/PDBSymbolBlock.cpp
lib/DebugInfo/PDB/PDBSymbolCompiland.cpp
lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp
lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp
lib/DebugInfo/PDB/PDBSymbolCustom.cpp
lib/DebugInfo/PDB/PDBSymbolData.cpp
lib/DebugInfo/PDB/PDBSymbolExe.cpp
lib/DebugInfo/PDB/PDBSymbolFunc.cpp
lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp
lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp
lib/DebugInfo/PDB/PDBSymbolLabel.cpp
lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp
lib/DebugInfo/PDB/PDBSymbolThunk.cpp
lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp
lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp
lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp
lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp
lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp
lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp
lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp
lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp
lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp
lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp
lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp
lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp
lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp
lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp
lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp
lib/DebugInfo/PDB/PDBSymbolUnknown.cpp
lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp
unittests/DebugInfo/PDB/PDBApiTest.cpp

index 8033e476657db2630b37bfcff5dd69396e0e8b23..b65089dd028b6ceeb46d21b2f5fc9b0f9206d9d9 100644 (file)
@@ -36,11 +36,11 @@ class raw_ostream;
 /// https://msdn.microsoft.com/en-us/library/370hs6k4.aspx
 class PDBSymbol {
 protected:
-  PDBSymbol(std::unique_ptr<IPDBRawSymbol> Symbol);
+  PDBSymbol(IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol);
 
 public:
   static std::unique_ptr<PDBSymbol>
-  create(std::unique_ptr<IPDBRawSymbol> Symbol);
+  create(IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol);
 
   virtual ~PDBSymbol();
 
@@ -62,6 +62,7 @@ public:
   std::unique_ptr<IPDBEnumSymbols> findInlineFramesByRVA(uint32_t RVA) const;
 
 protected:
+  IPDBSession &Session;
   const std::unique_ptr<IPDBRawSymbol> RawSymbol;
 };
 
index 44a6105487209f782c6a5c0e9b90620394f9a3b7..4bc488f8590b917f7b28d21792c955d5331c7f80 100644 (file)
@@ -20,7 +20,8 @@ class raw_ostream;
 
 class PDBSymbolAnnotation : public PDBSymbol {
 public:
-  PDBSymbolAnnotation(std::unique_ptr<IPDBRawSymbol> AnnotationSymbol);
+  PDBSymbolAnnotation(IPDBSession &PDBSession,
+                      std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index becc0c3d41b7307102c470f6e879a1804ce9dab7..1ea5000ead0d07bb4cfb00766d6f85314ff2d339 100644 (file)
@@ -20,7 +20,8 @@ class raw_ostream;
 
 class PDBSymbolBlock : public PDBSymbol {
 public:
-  PDBSymbolBlock(std::unique_ptr<IPDBRawSymbol> BlockSymbol);
+  PDBSymbolBlock(IPDBSession &PDBSession,
+                 std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index e12e933ebbbbcca8f56e2d3bc3cacf3e0b46c436..07c5340f13532ea7f60a9a10b6da2ed759441046 100644 (file)
@@ -20,7 +20,8 @@ class raw_ostream;
 
 class PDBSymbolCompiland : public PDBSymbol {
 public:
-  PDBSymbolCompiland(std::unique_ptr<IPDBRawSymbol> CompilandSymbol);
+  PDBSymbolCompiland(IPDBSession &PDBSession,
+                     std::unique_ptr<IPDBRawSymbol> CompilandSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 1b04bdbc71ca2421724df45312cc7ad5f863f2db..22e26ba7c898c2c28afc27f64855d4ba4f258561 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolCompilandDetails : public PDBSymbol {
 public:
-  PDBSymbolCompilandDetails(std::unique_ptr<IPDBRawSymbol> DetailsSymbol);
+  PDBSymbolCompilandDetails(IPDBSession &PDBSession,
+                            std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index c4c45ec5a6090c57e2fec59bce700ff890c90782..255b1181f3baf9cee960e92c04123c435b56b819 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolCompilandEnv : public PDBSymbol {
 public:
-  PDBSymbolCompilandEnv(std::unique_ptr<IPDBRawSymbol> CompilandEnvSymbol);
+  PDBSymbolCompilandEnv(IPDBSession &PDBSession,
+                        std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index e6952d8693c670cbd46205b7de3e8610102eb0c5..6304fa5d039badb5d51ddf268e6ecd655406c117 100644 (file)
@@ -24,7 +24,8 @@ class raw_ostream;
 /// https://msdn.microsoft.com/en-us/library/d88sf09h.aspx
 class PDBSymbolCustom : public PDBSymbol {
 public:
-  PDBSymbolCustom(std::unique_ptr<IPDBRawSymbol> CustomSymbol);
+  PDBSymbolCustom(IPDBSession &PDBSession,
+                  std::unique_ptr<IPDBRawSymbol> CustomSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 850365730e1baf2582018485825d61651b15fb55..62dc92f78f245f28db99507872064f52f5d66582 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolData : public PDBSymbol {
 public:
-  PDBSymbolData(std::unique_ptr<IPDBRawSymbol> DataSymbol);
+  PDBSymbolData(IPDBSession &PDBSession,
+                std::unique_ptr<IPDBRawSymbol> DataSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 79413fa7d8e5803d853a67db27c4c8b18e462940..3ca82137b75da45de34c592fdc3de8ab2ac0bf92 100644 (file)
@@ -23,7 +23,8 @@ class raw_ostream;
 
 class PDBSymbolExe : public PDBSymbol {
 public:
-  PDBSymbolExe(std::unique_ptr<IPDBRawSymbol> ExeSymbol);
+  PDBSymbolExe(IPDBSession &PDBSession,
+               std::unique_ptr<IPDBRawSymbol> ExeSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 0213ace8387ad3bb0974fec60393c582e3327995..61a5fe984b77cac9256bbd5ed696c43ffe4c57ea 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolFunc : public PDBSymbol {
 public:
-  PDBSymbolFunc(std::unique_ptr<IPDBRawSymbol> FuncSymbol);
+  PDBSymbolFunc(IPDBSession &PDBSession,
+                std::unique_ptr<IPDBRawSymbol> FuncSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 0155e0b7cfc8430266ef31bb19f1a8dc7f7ed813..3de0d48733aa0e9f37c041aba9a5a147eafeeca1 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolFuncDebugEnd : public PDBSymbol {
 public:
-  PDBSymbolFuncDebugEnd(std::unique_ptr<IPDBRawSymbol> FuncDebugEndSymbol);
+  PDBSymbolFuncDebugEnd(IPDBSession &PDBSession,
+                        std::unique_ptr<IPDBRawSymbol> FuncDebugEndSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 35716349a83b8036d5cc3558fc4f8cb1059ac298..36b37e793b4f8bd3b0f61d9c393e0028fc3cbd4c 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolFuncDebugStart : public PDBSymbol {
 public:
-  PDBSymbolFuncDebugStart(std::unique_ptr<IPDBRawSymbol> FuncDebugStartSymbol);
+  PDBSymbolFuncDebugStart(IPDBSession &PDBSession,
+                          std::unique_ptr<IPDBRawSymbol> FuncDebugStartSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index f0c44617220536b857b2f38bb771aaba670425ad..fac931239b3d2ce2df92bd6d30860a79f1581ef8 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolLabel : public PDBSymbol {
 public:
-  PDBSymbolLabel(std::unique_ptr<IPDBRawSymbol> LabelSymbol);
+  PDBSymbolLabel(IPDBSession &PDBSession,
+                 std::unique_ptr<IPDBRawSymbol> LabelSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 5acce3232211914cebaebb257f9baf2be879b10f..afe74144728efb8defcf6c233bcf964e522f4e78 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolPublicSymbol : public PDBSymbol {
 public:
-  PDBSymbolPublicSymbol(std::unique_ptr<IPDBRawSymbol> PublicSymbol);
+  PDBSymbolPublicSymbol(IPDBSession &PDBSession,
+                        std::unique_ptr<IPDBRawSymbol> PublicSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 24392fb21749fcceb97d059d2ecd6e1078e6d3ce..cd98c46497ebfb000e20a639efa7eac2220cf543 100644 (file)
@@ -21,7 +21,8 @@ class raw_ostream;
 
 class PDBSymbolThunk : public PDBSymbol {
 public:
-  PDBSymbolThunk(std::unique_ptr<IPDBRawSymbol> ThunkSymbol);
+  PDBSymbolThunk(IPDBSession &PDBSession,
+                 std::unique_ptr<IPDBRawSymbol> ThunkSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 19a5a4311d77ddb2f85b193f93801d2c673b7269..eb475260123d9420eb544dc363155792bf0f1139 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeArray : public PDBSymbol {
 public:
-  PDBSymbolTypeArray(std::unique_ptr<IPDBRawSymbol> ArrayTypeSymbol);
+  PDBSymbolTypeArray(IPDBSession &PDBSession,
+                     std::unique_ptr<IPDBRawSymbol> ArrayTypeSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 324175b92e7279d028a5314fe489b1da6b2adec6..39c605a7155c199ccf08d06bada0f6f0e09770ed 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeBaseClass : public PDBSymbol {
 public:
-  PDBSymbolTypeBaseClass(std::unique_ptr<IPDBRawSymbol> BaseClassTypeSymbol);
+  PDBSymbolTypeBaseClass(IPDBSession &PDBSession,
+                         std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index f5063ecce041770e057bf89a68ac0424629ac7d8..5a6c3fe3f6de54595e134c708ca68ae471f24fe8 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeBuiltin : public PDBSymbol {
 public:
-  PDBSymbolTypeBuiltin(std::unique_ptr<IPDBRawSymbol> BuiltinTypeSymbol);
+  PDBSymbolTypeBuiltin(IPDBSession &PDBSession,
+                       std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index fdf5b2b40c347ee9e8dcc92d314a43d6bd5e590e..fc8cd02cefe106888f91733afdd715f462246c1a 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeCustom : public PDBSymbol {
 public:
-  PDBSymbolTypeCustom(std::unique_ptr<IPDBRawSymbol> CustomTypeSymbol);
+  PDBSymbolTypeCustom(IPDBSession &PDBSession,
+                      std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 8eb32fdbc94310c6fd592a568da303034ef50fb3..b55d006a77b47fcd99e4aa902dbc1458989e586f 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeDimension : public PDBSymbol {
 public:
-  PDBSymbolTypeDimension(std::unique_ptr<IPDBRawSymbol> DimensionTypeSymbol);
+  PDBSymbolTypeDimension(IPDBSession &PDBSession,
+                         std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 75030a9ca081f6a0a82a70985b5d06b81c58ae09..f216871c300362897d2b0c4e9988c658354c62a1 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeEnum : public PDBSymbol {
 public:
-  PDBSymbolTypeEnum(std::unique_ptr<IPDBRawSymbol> EnumTypeSymbol);
+  PDBSymbolTypeEnum(IPDBSession &PDBSession,
+                    std::unique_ptr<IPDBRawSymbol> EnumTypeSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 7194bc4ceaa913102abbacce1481b05060ccaef4..ee4240c7bc3ac0f44a8188fd5cbd6102c93b9d74 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeFriend : public PDBSymbol {
 public:
-  PDBSymbolTypeFriend(std::unique_ptr<IPDBRawSymbol> FriendTypeSymbol);
+  PDBSymbolTypeFriend(IPDBSession &PDBSession,
+                      std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 3af0984ab9eaee1b4973838ba2ca18e2774196d7..58f555aaaaad78f3d0f90313a28863f209eca407 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeFunctionArg : public PDBSymbol {
 public:
-  PDBSymbolTypeFunctionArg(std::unique_ptr<IPDBRawSymbol> FuncArgTypeSymbol);
+  PDBSymbolTypeFunctionArg(IPDBSession &PDBSession,
+                           std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index d68d8288433351361222c4e36873b199bf3b24af..1b18629ac5df01f9969cd78d1fec77a8f36a2893 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeFunctionSig : public PDBSymbol {
 public:
-  PDBSymbolTypeFunctionSig(std::unique_ptr<IPDBRawSymbol> FuncSigTypeSymbol);
+  PDBSymbolTypeFunctionSig(IPDBSession &PDBSession,
+                           std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 10bf19092e7ebf6e35475b8eb8c6d858f9b1777d..5b58529bb98bfa072a00f7c7e67785ddb2292f32 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeManaged : public PDBSymbol {
 public:
-  PDBSymbolTypeManaged(std::unique_ptr<IPDBRawSymbol> ManagedTypeSymbol);
+  PDBSymbolTypeManaged(IPDBSession &PDBSession,
+                       std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index ffc7b6393124b9882a8d7fbdc37fcb890ad4a585..15d6c8dfe937a797135bbc049bbcae77df011d02 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypePointer : public PDBSymbol {
 public:
-  PDBSymbolTypePointer(std::unique_ptr<IPDBRawSymbol> PointerTypeSymbol);
+  PDBSymbolTypePointer(IPDBSession &PDBSession,
+                       std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 3d31e73fbb58094dd4856a8713b4784314c8992f..c5d8d9ecd3b86226b20985c8070cc68e4a8a61c8 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeTypedef : public PDBSymbol {
 public:
-  PDBSymbolTypeTypedef(std::unique_ptr<IPDBRawSymbol> TypedefSymbol);
+  PDBSymbolTypeTypedef(IPDBSession &PDBSession,
+                       std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index d26f866d74d240033f3a295eb74009f9c582390c..26154ef29d1de6b95865cf3019b7b85ad6b39f60 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeUDT : public PDBSymbol {
 public:
-  PDBSymbolTypeUDT(std::unique_ptr<IPDBRawSymbol> UDTSymbol);
+  PDBSymbolTypeUDT(IPDBSession &PDBSession,
+                   std::unique_ptr<IPDBRawSymbol> UDTSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 1d966bf33c5dfcd5e0ffdf98789bd24cf1598065..22fbe90cfc010d485c653a5da31f43995797493f 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeVTable : public PDBSymbol {
 public:
-  PDBSymbolTypeVTable(std::unique_ptr<IPDBRawSymbol> VtblSymbol);
+  PDBSymbolTypeVTable(IPDBSession &PDBSession,
+                      std::unique_ptr<IPDBRawSymbol> VtblSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index d1fd758ed5c85516ca58e2bc118ac1090d63180f..3dd3539f720b8138e5b6e051d6dcd4a9ab2331d3 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolTypeVTableShape : public PDBSymbol {
 public:
-  PDBSymbolTypeVTableShape(std::unique_ptr<IPDBRawSymbol> VtblShapeSymbol);
+  PDBSymbolTypeVTableShape(IPDBSession &PDBSession,
+                           std::unique_ptr<IPDBRawSymbol> VtblShapeSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 7ba190076f4f101a5995d2ad0ad63a72f57ca7ac..95e4fc785358f58a63bc45be678dee117cd83d50 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolUnknown : public PDBSymbol {
 public:
-  PDBSymbolUnknown(std::unique_ptr<IPDBRawSymbol> UnknownSymbol);
+  PDBSymbolUnknown(IPDBSession &PDBSession,
+                   std::unique_ptr<IPDBRawSymbol> UnknownSymbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 92d6ace8938a5cd3accbd94eb70a8eda5a5ea954..2ef4721f70a9548091eb3b7314afc6ccebf2c7f2 100644 (file)
@@ -19,7 +19,8 @@ class raw_ostream;
 
 class PDBSymbolUsingNamespace : public PDBSymbol {
 public:
-  PDBSymbolUsingNamespace(std::unique_ptr<IPDBRawSymbol> UsingSymbol);
+  PDBSymbolUsingNamespace(IPDBSession &PDBSession,
+                          std::unique_ptr<IPDBRawSymbol> Symbol);
 
   void dump(llvm::raw_ostream &OS) const override;
 
index 095cdfc379fc26a4c7c5a08fb739e1b0734bbd03..f99fc8c18c2af79023960cc85cd808699a1097f5 100644 (file)
 
 using namespace llvm;
 
-PDBSymbol::PDBSymbol(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : RawSymbol(std::move(Symbol)) {}
+PDBSymbol::PDBSymbol(IPDBSession &PDBSession,
+                     std::unique_ptr<IPDBRawSymbol> Symbol)
+    : Session(PDBSession), RawSymbol(std::move(Symbol)) {}
 
 PDBSymbol::~PDBSymbol() {}
 
 #define FACTORY_SYMTAG_CASE(Tag, Type)                                         \
   case PDB_SymType::Tag:                                                       \
-    return std::unique_ptr<PDBSymbol>(new Type(std::move(Symbol)));
+    return std::unique_ptr<PDBSymbol>(new Type(PDBSession, std::move(Symbol)));
 
 std::unique_ptr<PDBSymbol>
-PDBSymbol::create(std::unique_ptr<IPDBRawSymbol> Symbol) {
+PDBSymbol::create(IPDBSession &PDBSession,
+                  std::unique_ptr<IPDBRawSymbol> Symbol) {
   switch (Symbol->getSymTag()) {
     FACTORY_SYMTAG_CASE(Exe, PDBSymbolExe)
     FACTORY_SYMTAG_CASE(Compiland, PDBSymbolCompiland)
@@ -91,7 +93,8 @@ PDBSymbol::create(std::unique_ptr<IPDBRawSymbol> Symbol) {
     FACTORY_SYMTAG_CASE(ManagedType, PDBSymbolTypeManaged)
     FACTORY_SYMTAG_CASE(Dimension, PDBSymbolTypeDimension)
   default:
-    return std::unique_ptr<PDBSymbol>(new PDBSymbolUnknown(std::move(Symbol)));
+    return std::unique_ptr<PDBSymbol>(
+        new PDBSymbolUnknown(PDBSession, std::move(Symbol)));
   }
 }
 
index 7fc2af32d8c14ca9e50551a1ce473168e7e3ef35..679ddb924bf95a72b8914cc261ccec18355ac1b7 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolAnnotation::PDBSymbolAnnotation(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolAnnotation::PDBSymbolAnnotation(IPDBSession &PDBSession,
+                                         std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolAnnotation::dump(llvm::raw_ostream &OS) const {}
index 9306688a6a91e479439fbd0fe64d1ac24302bf65..84b762fbb28ffd33c83968d74840ad9f8b52cee6 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolBlock::PDBSymbolBlock(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolBlock::PDBSymbolBlock(IPDBSession &PDBSession,
+                               std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolBlock::dump(llvm::raw_ostream &OS) const {}
index d3492418a131ebcfe728ab7e2da53ef2e3e0e4d1..4d2e413365b0fd961fb405de166f293d9a0fdd0c 100644 (file)
@@ -17,8 +17,9 @@
 
 using namespace llvm;
 
-PDBSymbolCompiland::PDBSymbolCompiland(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolCompiland::PDBSymbolCompiland(IPDBSession &PDBSession,
+                                       std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolCompiland::dump(llvm::raw_ostream &OS) const {
 }
index 44131b92c98995982d03a42f9689bb855f78fbb1..e7bf08cb2ea136669b7b7e23f4f2661edef0165b 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolCompilandDetails::PDBSymbolCompilandDetails(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolCompilandDetails::dump(llvm::raw_ostream &OS) const {}
index f026dc9ba8a5e336ded5cca2e1283f97a461481a..9be32d3602153c045303e566baad6017319e6693 100644 (file)
@@ -16,8 +16,8 @@
 using namespace llvm;
 
 PDBSymbolCompilandEnv::PDBSymbolCompilandEnv(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 std::string PDBSymbolCompilandEnv::getValue() const {
   // call RawSymbol->getValue() and convert the result to an std::string.
index 449151d8393b62914677fb5ab3bf6891bb80804a..ce131422a2520b0446f1e7824be60ae92a1b8517 100644 (file)
@@ -15,8 +15,9 @@
 
 using namespace llvm;
 
-PDBSymbolCustom::PDBSymbolCustom(std::unique_ptr<IPDBRawSymbol> CustomSymbol)
-    : PDBSymbol(std::move(CustomSymbol)) {}
+PDBSymbolCustom::PDBSymbolCustom(IPDBSession &PDBSession,
+                                 std::unique_ptr<IPDBRawSymbol> CustomSymbol)
+    : PDBSymbol(PDBSession, std::move(CustomSymbol)) {}
 
 void PDBSymbolCustom::getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) {
   RawSymbol->getDataBytes(bytes);
index 5777a697c600e38730411dd80fe9b744369188bd..db9518c2533292a845d8d7385f56cae921bc0354 100644 (file)
@@ -7,11 +7,13 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <utility>
 #include "llvm/DebugInfo/PDB/PDBSymbolData.h"
 
 using namespace llvm;
 
-PDBSymbolData::PDBSymbolData(std::unique_ptr<IPDBRawSymbol> DataSymbol)
-    : PDBSymbol(std::move(DataSymbol)) {}
+PDBSymbolData::PDBSymbolData(IPDBSession &PDBSession,
+                             std::unique_ptr<IPDBRawSymbol> DataSymbol)
+    : PDBSymbol(PDBSession, std::move(DataSymbol)) {}
 
 void PDBSymbolData::dump(llvm::raw_ostream &OS) const {}
\ No newline at end of file
index 033c552fafcabad7f403c74cb92835a8e6647d2b..c65c9fbbc74099f06476d5c9405bfa8d488e6ea0 100644 (file)
@@ -17,8 +17,9 @@
 
 using namespace llvm;
 
-PDBSymbolExe::PDBSymbolExe(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolExe::PDBSymbolExe(IPDBSession &PDBSession,
+                           std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolExe::dump(llvm::raw_ostream &OS) const {
 }
index 9c3441850f8d865d2e633b5074d62132efc89334..f070a1d7045cf50409fafa9fc98dbb47fcc5efdc 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolFunc::PDBSymbolFunc(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolFunc::PDBSymbolFunc(IPDBSession &PDBSession,
+                             std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolFunc::dump(llvm::raw_ostream &OS) const {}
index 03e60c1d1e5b76099fd8f617bb730d4ac26fe79a..a88ea2a7d7ca3afd5bd93c87cc44f8fcce96d11a 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolFuncDebugEnd::PDBSymbolFuncDebugEnd(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolFuncDebugEnd::dump(llvm::raw_ostream &OS) const {}
index ffa126888696ad69d5b7f81e8d35d0052e0de4d4..6128e05460d0ba0e9b3235a30c62babbc59f2952 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolFuncDebugStart::PDBSymbolFuncDebugStart(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolFuncDebugStart::dump(llvm::raw_ostream &OS) const {}
index 490919f8def8aeb5c82cd6a12916a4c8bd974455..0b893c3c1a55559f20b0a6d4b26b5802ba2f53f7 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolLabel::PDBSymbolLabel(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolLabel::PDBSymbolLabel(IPDBSession &PDBSession,
+                               std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolLabel::dump(llvm::raw_ostream &OS) const {}
index 147ac44f98f99f27098f041ad5fba17c7da9b5f5..b56abb082248d556b36e59207af4b0cd8150b036 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolPublicSymbol::PDBSymbolPublicSymbol(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolPublicSymbol::dump(llvm::raw_ostream &OS) const {}
index 76001cac9272448b1cf967f22c023835862aafbe..a6ff4738e51e16e2878290fe49523538074eb12a 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolThunk::PDBSymbolThunk(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolThunk::PDBSymbolThunk(IPDBSession &PDBSession,
+                               std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolThunk::dump(llvm::raw_ostream &OS) const {}
index 0f565746a0a7f90c1b9c8c27b98b3868b29afaf9..239681abe8131013b5305a5a0977439b0657bad5 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeArray::PDBSymbolTypeArray(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeArray::PDBSymbolTypeArray(IPDBSession &PDBSession,
+                                       std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeArray::dump(llvm::raw_ostream &OS) const {}
index 0decf479d6c80326bd103390d59ef5acd10e09af..545d66e7c8e43ee45a1b9d18628c76b7c1463ee5 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeBaseClass::PDBSymbolTypeBaseClass(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(Session, std::move(Symbol)) {}
 
 void PDBSymbolTypeBaseClass::dump(llvm::raw_ostream &OS) const {}
index 715643506e9af503bf1d81943ab760a5d0b4bf7b..065231f980ed5ede65ce7779a6bc4b0a8615e55f 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeBuiltin::PDBSymbolTypeBuiltin(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeBuiltin::dump(llvm::raw_ostream &OS) const {}
index 6afbc84e49e65deb7da8e219362173ffbfb8653d..a4c125c85b4248513f128f250920b345d4f713eb 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeCustom::PDBSymbolTypeCustom(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeCustom::PDBSymbolTypeCustom(IPDBSession &PDBSession,
+                                         std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeCustom::dump(llvm::raw_ostream &OS) const {}
index 03d4b928d71c092f5bb93c9ece2c4505def487ce..1ace2fc0d9924e2e6d3422ddb3711d76fbd6c37d 100644 (file)
@@ -16,7 +16,7 @@
 using namespace llvm;
 
 PDBSymbolTypeDimension::PDBSymbolTypeDimension(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeDimension::dump(llvm::raw_ostream &OS) const {}
index e903ffe30f3afa02667dad5bbf007245230aaf55..c97a04203b69c52e2f21cdc0fac30d663c0c8212 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeEnum::PDBSymbolTypeEnum(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeEnum::PDBSymbolTypeEnum(IPDBSession &PDBSession,
+                                     std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeEnum::dump(llvm::raw_ostream &OS) const {}
index 240a3c1ac25a7c7e52d18b09157adc561c951ed1..8587dcfab4c5abab117b380499b58e12328cfa32 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeFriend::PDBSymbolTypeFriend(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeFriend::PDBSymbolTypeFriend(IPDBSession &PDBSession,
+                                         std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeFriend::dump(llvm::raw_ostream &OS) const {}
index c4415b4dd00dd47fc64d408e76d9157e91af2a7f..de8c4bff4512321babf2eb101d4c20c65fc21566 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeFunctionArg::PDBSymbolTypeFunctionArg(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeFunctionArg::dump(llvm::raw_ostream &OS) const {}
index 7ad6c5c61642169bb1312d6b834d802c7fb94e07..73f61e9c35c56c23229424e14a53fb2f3979a173 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeFunctionSig::PDBSymbolTypeFunctionSig(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeFunctionSig::dump(llvm::raw_ostream &OS) const {}
index 3f372faa7ada1034fc56fe0a8ec292b7b96b0813..cf3339c60a4e617ad74f93bb287783882817b2d3 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeManaged::PDBSymbolTypeManaged(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeManaged::dump(llvm::raw_ostream &OS) const {}
index d7a8a638c23bdddde0e1bc4d90ba87f0c488dc71..b081cdd0a5d568cdc9dd971422bcf89bd3201606 100644 (file)
@@ -16,7 +16,7 @@
 using namespace llvm;
 
 PDBSymbolTypePointer::PDBSymbolTypePointer(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypePointer::dump(llvm::raw_ostream &OS) const {}
index bd42efff2b78e22c73cb3583ad049938002bc5bd..42ab5018d136604bb70629eb55584d4a69369e28 100644 (file)
@@ -16,7 +16,7 @@
 using namespace llvm;
 
 PDBSymbolTypeTypedef::PDBSymbolTypeTypedef(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeTypedef::dump(llvm::raw_ostream &OS) const {}
index d8a83af7be388dc37ff19c4de6372d420da16fe8..32b003c5216a69dba22f63571053f07c872029c2 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeUDT::PDBSymbolTypeUDT(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeUDT::PDBSymbolTypeUDT(IPDBSession &PDBSession,
+                                   std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeUDT::dump(llvm::raw_ostream &OS) const {}
index bc780e16a26e2ed80f149f5ab6850abbc82051aa..ca533abe8e8feb978ca6625d8e3be8d1c8df99a8 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolTypeVTable::PDBSymbolTypeVTable(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolTypeVTable::PDBSymbolTypeVTable(IPDBSession &PDBSession,
+                                         std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeVTable::dump(llvm::raw_ostream &OS) const {}
index fb448eac7a6413f974bb4d0e403a7d758b137623..b8336f440a499b8149ed1dda2741651b6778c54c 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolTypeVTableShape::PDBSymbolTypeVTableShape(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolTypeVTableShape::dump(llvm::raw_ostream &OS) const {}
index 4c296182e7d75776999d8d666cde3fec9a9253a1..371d8b968feab252e89ab73a09e7e284b1b32414 100644 (file)
@@ -14,7 +14,8 @@
 
 using namespace llvm;
 
-PDBSymbolUnknown::PDBSymbolUnknown(std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+PDBSymbolUnknown::PDBSymbolUnknown(IPDBSession &PDBSession,
+                                   std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolUnknown::dump(llvm::raw_ostream &OS) const {}
index 73cfd5c9c9d968a335c3973be5ec658b1ff18811..2045ec093a25c8649d8d1f237e107bb617721878 100644 (file)
@@ -15,7 +15,7 @@
 using namespace llvm;
 
 PDBSymbolUsingNamespace::PDBSymbolUsingNamespace(
-    std::unique_ptr<IPDBRawSymbol> Symbol)
-    : PDBSymbol(std::move(Symbol)) {}
+    IPDBSession &PDBSession, std::unique_ptr<IPDBRawSymbol> Symbol)
+    : PDBSymbol(PDBSession, std::move(Symbol)) {}
 
 void PDBSymbolUsingNamespace::dump(llvm::raw_ostream &OS) const {}
index 5a86d4ca7a5a45d9ad5e45452b59c4adcbb4e350..4f838a0ded6c6d84bd0b749fc52643ea14553f79 100644 (file)
@@ -12,6 +12,9 @@
 
 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
+#include "llvm/DebugInfo/PDB/IPDBSession.h"
+#include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
+
 #include "llvm/DebugInfo/PDB/PDBSymbol.h"
 #include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"
 #include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"
@@ -66,6 +69,21 @@ namespace {
     return ReturnType();                                                       \
   }
 
+class MockSession : public IPDBSession {
+  uint64_t getLoadAddress() const override { return 0; }
+  void setLoadAddress(uint64_t Address) override {}
+  std::unique_ptr<PDBSymbolExe> getGlobalScope() const override {
+    return nullptr;
+  }
+  std::unique_ptr<PDBSymbol> getSymbolById() const override { return nullptr; }
+  std::unique_ptr<IPDBSourceFile> getSourceFileById() const override {
+    return nullptr;
+  }
+  std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const override {
+    return nullptr;
+  }
+};
+
 class MockRawSymbol : public IPDBRawSymbol {
 public:
   MockRawSymbol(PDB_SymType SymType) : Type(SymType) {}
@@ -257,6 +275,8 @@ public:
   std::unordered_map<PDB_SymType, std::unique_ptr<PDBSymbol>> SymbolMap;
 
   void SetUp() override {
+    Session.reset(new MockSession());
+
     InsertItemWithTag(PDB_SymType::None);
     InsertItemWithTag(PDB_SymType::Exe);
     InsertItemWithTag(PDB_SymType::Compiland);
@@ -291,14 +311,6 @@ public:
     InsertItemWithTag(PDB_SymType::Max);
   }
 
-private:
-  void InsertItemWithTag(PDB_SymType Tag) {
-    auto RawSymbol = std::unique_ptr<IPDBRawSymbol>(new MockRawSymbol(Tag));
-    auto Symbol = PDBSymbol::create(std::move(RawSymbol));
-    SymbolMap.insert(std::make_pair(Tag, std::move(Symbol)));
-  }
-
-public:
   template <class ExpectedType> void VerifyDyncast(PDB_SymType Tag) {
     for (auto item = SymbolMap.begin(); item != SymbolMap.end(); ++item) {
       EXPECT_EQ(item->first == Tag, llvm::isa<ExpectedType>(*item->second));
@@ -314,6 +326,15 @@ public:
       EXPECT_EQ(should_match, llvm::isa<PDBSymbolUnknown>(*item->second));
     }
   }
+
+private:
+  std::unique_ptr<IPDBSession> Session;
+
+  void InsertItemWithTag(PDB_SymType Tag) {
+    auto RawSymbol = std::unique_ptr<IPDBRawSymbol>(new MockRawSymbol(Tag));
+    auto Symbol = PDBSymbol::create(*Session, std::move(RawSymbol));
+    SymbolMap.insert(std::make_pair(Tag, std::move(Symbol)));
+  }
 };
 
 TEST_F(PDBApiTest, Dyncast) {