DebugInfoPDB: Make the symbol base case hold an IPDBSession ref.
[oota-llvm.git] / include / llvm / DebugInfo / PDB / PDBSymbol.h
index 38c578e2c24a03496144ff039ea907742255d128..b65089dd028b6ceeb46d21b2f5fc9b0f9206d9d9 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
@@ -36,11 +36,11 @@ class IPDBRawSymbol;
 /// 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;
 };