From 926749af90fbd6e4db5988628ecb81fbfac67afb Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Sun, 8 Feb 2015 20:58:09 +0000 Subject: [PATCH] DebugInfoPDB: Make the symbol base case hold an IPDBSession ref. 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 --- include/llvm/DebugInfo/PDB/PDBSymbol.h | 5 ++- .../llvm/DebugInfo/PDB/PDBSymbolAnnotation.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolBlock.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolCompiland.h | 3 +- .../DebugInfo/PDB/PDBSymbolCompilandDetails.h | 3 +- .../DebugInfo/PDB/PDBSymbolCompilandEnv.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolCustom.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolData.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolExe.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolFunc.h | 3 +- .../DebugInfo/PDB/PDBSymbolFuncDebugEnd.h | 3 +- .../DebugInfo/PDB/PDBSymbolFuncDebugStart.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolLabel.h | 3 +- .../DebugInfo/PDB/PDBSymbolPublicSymbol.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolThunk.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeArray.h | 3 +- .../DebugInfo/PDB/PDBSymbolTypeBaseClass.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h | 3 +- .../DebugInfo/PDB/PDBSymbolTypeDimension.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h | 3 +- .../DebugInfo/PDB/PDBSymbolTypeFunctionArg.h | 3 +- .../DebugInfo/PDB/PDBSymbolTypeFunctionSig.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypePointer.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h | 3 +- .../llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h | 3 +- .../DebugInfo/PDB/PDBSymbolTypeVTableShape.h | 3 +- include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h | 3 +- .../DebugInfo/PDB/PDBSymbolUsingNamespace.h | 3 +- lib/DebugInfo/PDB/PDBSymbol.cpp | 13 ++++--- lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolBlock.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolCompiland.cpp | 5 ++- .../PDB/PDBSymbolCompilandDetails.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolCustom.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolData.cpp | 6 ++- lib/DebugInfo/PDB/PDBSymbolExe.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolFunc.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolLabel.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolThunk.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp | 5 ++- .../PDB/PDBSymbolTypeFunctionArg.cpp | 4 +- .../PDB/PDBSymbolTypeFunctionSig.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp | 5 ++- .../PDB/PDBSymbolTypeVTableShape.cpp | 4 +- lib/DebugInfo/PDB/PDBSymbolUnknown.cpp | 5 ++- lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp | 4 +- unittests/DebugInfo/PDB/PDBApiTest.cpp | 37 +++++++++++++++---- 65 files changed, 181 insertions(+), 108 deletions(-) diff --git a/include/llvm/DebugInfo/PDB/PDBSymbol.h b/include/llvm/DebugInfo/PDB/PDBSymbol.h index 8033e476657..b65089dd028 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbol.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbol.h @@ -36,11 +36,11 @@ class raw_ostream; /// https://msdn.microsoft.com/en-us/library/370hs6k4.aspx class PDBSymbol { protected: - PDBSymbol(std::unique_ptr Symbol); + PDBSymbol(IPDBSession &PDBSession, std::unique_ptr Symbol); public: static std::unique_ptr - create(std::unique_ptr Symbol); + create(IPDBSession &PDBSession, std::unique_ptr Symbol); virtual ~PDBSymbol(); @@ -62,6 +62,7 @@ public: std::unique_ptr findInlineFramesByRVA(uint32_t RVA) const; protected: + IPDBSession &Session; const std::unique_ptr RawSymbol; }; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h b/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h index 44a61054872..4bc488f8590 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h @@ -20,7 +20,8 @@ class raw_ostream; class PDBSymbolAnnotation : public PDBSymbol { public: - PDBSymbolAnnotation(std::unique_ptr AnnotationSymbol); + PDBSymbolAnnotation(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h b/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h index becc0c3d41b..1ea5000ead0 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h @@ -20,7 +20,8 @@ class raw_ostream; class PDBSymbolBlock : public PDBSymbol { public: - PDBSymbolBlock(std::unique_ptr BlockSymbol); + PDBSymbolBlock(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h b/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h index e12e933ebbb..07c5340f135 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h @@ -20,7 +20,8 @@ class raw_ostream; class PDBSymbolCompiland : public PDBSymbol { public: - PDBSymbolCompiland(std::unique_ptr CompilandSymbol); + PDBSymbolCompiland(IPDBSession &PDBSession, + std::unique_ptr CompilandSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h b/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h index 1b04bdbc71c..22e26ba7c89 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolCompilandDetails : public PDBSymbol { public: - PDBSymbolCompilandDetails(std::unique_ptr DetailsSymbol); + PDBSymbolCompilandDetails(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h b/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h index c4c45ec5a60..255b1181f3b 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolCompilandEnv : public PDBSymbol { public: - PDBSymbolCompilandEnv(std::unique_ptr CompilandEnvSymbol); + PDBSymbolCompilandEnv(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h b/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h index e6952d8693c..6304fa5d039 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h @@ -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 CustomSymbol); + PDBSymbolCustom(IPDBSession &PDBSession, + std::unique_ptr CustomSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolData.h b/include/llvm/DebugInfo/PDB/PDBSymbolData.h index 850365730e1..62dc92f78f2 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolData.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolData.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolData : public PDBSymbol { public: - PDBSymbolData(std::unique_ptr DataSymbol); + PDBSymbolData(IPDBSession &PDBSession, + std::unique_ptr DataSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolExe.h b/include/llvm/DebugInfo/PDB/PDBSymbolExe.h index 79413fa7d8e..3ca82137b75 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolExe.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolExe.h @@ -23,7 +23,8 @@ class raw_ostream; class PDBSymbolExe : public PDBSymbol { public: - PDBSymbolExe(std::unique_ptr ExeSymbol); + PDBSymbolExe(IPDBSession &PDBSession, + std::unique_ptr ExeSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h b/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h index 0213ace8387..61a5fe984b7 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolFunc : public PDBSymbol { public: - PDBSymbolFunc(std::unique_ptr FuncSymbol); + PDBSymbolFunc(IPDBSession &PDBSession, + std::unique_ptr FuncSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h b/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h index 0155e0b7cfc..3de0d48733a 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolFuncDebugEnd : public PDBSymbol { public: - PDBSymbolFuncDebugEnd(std::unique_ptr FuncDebugEndSymbol); + PDBSymbolFuncDebugEnd(IPDBSession &PDBSession, + std::unique_ptr FuncDebugEndSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h b/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h index 35716349a83..36b37e793b4 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolFuncDebugStart : public PDBSymbol { public: - PDBSymbolFuncDebugStart(std::unique_ptr FuncDebugStartSymbol); + PDBSymbolFuncDebugStart(IPDBSession &PDBSession, + std::unique_ptr FuncDebugStartSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h b/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h index f0c44617220..fac931239b3 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolLabel : public PDBSymbol { public: - PDBSymbolLabel(std::unique_ptr LabelSymbol); + PDBSymbolLabel(IPDBSession &PDBSession, + std::unique_ptr LabelSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h b/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h index 5acce323221..afe74144728 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolPublicSymbol : public PDBSymbol { public: - PDBSymbolPublicSymbol(std::unique_ptr PublicSymbol); + PDBSymbolPublicSymbol(IPDBSession &PDBSession, + std::unique_ptr PublicSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h b/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h index 24392fb2174..cd98c46497e 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h @@ -21,7 +21,8 @@ class raw_ostream; class PDBSymbolThunk : public PDBSymbol { public: - PDBSymbolThunk(std::unique_ptr ThunkSymbol); + PDBSymbolThunk(IPDBSession &PDBSession, + std::unique_ptr ThunkSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h index 19a5a4311d7..eb475260123 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeArray : public PDBSymbol { public: - PDBSymbolTypeArray(std::unique_ptr ArrayTypeSymbol); + PDBSymbolTypeArray(IPDBSession &PDBSession, + std::unique_ptr ArrayTypeSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h index 324175b92e7..39c605a7155 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeBaseClass : public PDBSymbol { public: - PDBSymbolTypeBaseClass(std::unique_ptr BaseClassTypeSymbol); + PDBSymbolTypeBaseClass(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h index f5063ecce04..5a6c3fe3f6d 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeBuiltin : public PDBSymbol { public: - PDBSymbolTypeBuiltin(std::unique_ptr BuiltinTypeSymbol); + PDBSymbolTypeBuiltin(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h index fdf5b2b40c3..fc8cd02cefe 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeCustom : public PDBSymbol { public: - PDBSymbolTypeCustom(std::unique_ptr CustomTypeSymbol); + PDBSymbolTypeCustom(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h index 8eb32fdbc94..b55d006a77b 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeDimension : public PDBSymbol { public: - PDBSymbolTypeDimension(std::unique_ptr DimensionTypeSymbol); + PDBSymbolTypeDimension(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h index 75030a9ca08..f216871c300 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeEnum : public PDBSymbol { public: - PDBSymbolTypeEnum(std::unique_ptr EnumTypeSymbol); + PDBSymbolTypeEnum(IPDBSession &PDBSession, + std::unique_ptr EnumTypeSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h index 7194bc4ceaa..ee4240c7bc3 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeFriend : public PDBSymbol { public: - PDBSymbolTypeFriend(std::unique_ptr FriendTypeSymbol); + PDBSymbolTypeFriend(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h index 3af0984ab9e..58f555aaaaa 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeFunctionArg : public PDBSymbol { public: - PDBSymbolTypeFunctionArg(std::unique_ptr FuncArgTypeSymbol); + PDBSymbolTypeFunctionArg(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h index d68d8288433..1b18629ac5d 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeFunctionSig : public PDBSymbol { public: - PDBSymbolTypeFunctionSig(std::unique_ptr FuncSigTypeSymbol); + PDBSymbolTypeFunctionSig(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h index 10bf19092e7..5b58529bb98 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeManaged : public PDBSymbol { public: - PDBSymbolTypeManaged(std::unique_ptr ManagedTypeSymbol); + PDBSymbolTypeManaged(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h index ffc7b639312..15d6c8dfe93 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypePointer : public PDBSymbol { public: - PDBSymbolTypePointer(std::unique_ptr PointerTypeSymbol); + PDBSymbolTypePointer(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h index 3d31e73fbb5..c5d8d9ecd3b 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeTypedef : public PDBSymbol { public: - PDBSymbolTypeTypedef(std::unique_ptr TypedefSymbol); + PDBSymbolTypeTypedef(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h index d26f866d74d..26154ef29d1 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeUDT : public PDBSymbol { public: - PDBSymbolTypeUDT(std::unique_ptr UDTSymbol); + PDBSymbolTypeUDT(IPDBSession &PDBSession, + std::unique_ptr UDTSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h index 1d966bf33c5..22fbe90cfc0 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeVTable : public PDBSymbol { public: - PDBSymbolTypeVTable(std::unique_ptr VtblSymbol); + PDBSymbolTypeVTable(IPDBSession &PDBSession, + std::unique_ptr VtblSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h b/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h index d1fd758ed5c..3dd3539f720 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolTypeVTableShape : public PDBSymbol { public: - PDBSymbolTypeVTableShape(std::unique_ptr VtblShapeSymbol); + PDBSymbolTypeVTableShape(IPDBSession &PDBSession, + std::unique_ptr VtblShapeSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h b/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h index 7ba190076f4..95e4fc78535 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolUnknown : public PDBSymbol { public: - PDBSymbolUnknown(std::unique_ptr UnknownSymbol); + PDBSymbolUnknown(IPDBSession &PDBSession, + std::unique_ptr UnknownSymbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h b/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h index 92d6ace8938..2ef4721f70a 100644 --- a/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h +++ b/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h @@ -19,7 +19,8 @@ class raw_ostream; class PDBSymbolUsingNamespace : public PDBSymbol { public: - PDBSymbolUsingNamespace(std::unique_ptr UsingSymbol); + PDBSymbolUsingNamespace(IPDBSession &PDBSession, + std::unique_ptr Symbol); void dump(llvm::raw_ostream &OS) const override; diff --git a/lib/DebugInfo/PDB/PDBSymbol.cpp b/lib/DebugInfo/PDB/PDBSymbol.cpp index 095cdfc379f..f99fc8c18c2 100644 --- a/lib/DebugInfo/PDB/PDBSymbol.cpp +++ b/lib/DebugInfo/PDB/PDBSymbol.cpp @@ -48,17 +48,19 @@ using namespace llvm; -PDBSymbol::PDBSymbol(std::unique_ptr Symbol) - : RawSymbol(std::move(Symbol)) {} +PDBSymbol::PDBSymbol(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : Session(PDBSession), RawSymbol(std::move(Symbol)) {} PDBSymbol::~PDBSymbol() {} #define FACTORY_SYMTAG_CASE(Tag, Type) \ case PDB_SymType::Tag: \ - return std::unique_ptr(new Type(std::move(Symbol))); + return std::unique_ptr(new Type(PDBSession, std::move(Symbol))); std::unique_ptr -PDBSymbol::create(std::unique_ptr Symbol) { +PDBSymbol::create(IPDBSession &PDBSession, + std::unique_ptr Symbol) { switch (Symbol->getSymTag()) { FACTORY_SYMTAG_CASE(Exe, PDBSymbolExe) FACTORY_SYMTAG_CASE(Compiland, PDBSymbolCompiland) @@ -91,7 +93,8 @@ PDBSymbol::create(std::unique_ptr Symbol) { FACTORY_SYMTAG_CASE(ManagedType, PDBSymbolTypeManaged) FACTORY_SYMTAG_CASE(Dimension, PDBSymbolTypeDimension) default: - return std::unique_ptr(new PDBSymbolUnknown(std::move(Symbol))); + return std::unique_ptr( + new PDBSymbolUnknown(PDBSession, std::move(Symbol))); } } diff --git a/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp b/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp index 7fc2af32d8c..679ddb924bf 100644 --- a/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolAnnotation::PDBSymbolAnnotation(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolAnnotation::PDBSymbolAnnotation(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 9306688a6a9..84b762fbb28 100644 --- a/lib/DebugInfo/PDB/PDBSymbolBlock.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolBlock.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolBlock::PDBSymbolBlock(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolBlock::PDBSymbolBlock(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index d3492418a13..4d2e413365b 100644 --- a/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp @@ -17,8 +17,9 @@ using namespace llvm; -PDBSymbolCompiland::PDBSymbolCompiland(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolCompiland::PDBSymbolCompiland(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 44131b92c98..e7bf08cb2ea 100644 --- a/lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolCompilandDetails::PDBSymbolCompilandDetails( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(Session, std::move(Symbol)) {} void PDBSymbolCompilandDetails::dump(llvm::raw_ostream &OS) const {} diff --git a/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp b/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp index f026dc9ba8a..9be32d36021 100644 --- a/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp @@ -16,8 +16,8 @@ using namespace llvm; PDBSymbolCompilandEnv::PDBSymbolCompilandEnv( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, std::move(Symbol)) {} std::string PDBSymbolCompilandEnv::getValue() const { // call RawSymbol->getValue() and convert the result to an std::string. diff --git a/lib/DebugInfo/PDB/PDBSymbolCustom.cpp b/lib/DebugInfo/PDB/PDBSymbolCustom.cpp index 449151d8393..ce131422a25 100644 --- a/lib/DebugInfo/PDB/PDBSymbolCustom.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolCustom.cpp @@ -15,8 +15,9 @@ using namespace llvm; -PDBSymbolCustom::PDBSymbolCustom(std::unique_ptr CustomSymbol) - : PDBSymbol(std::move(CustomSymbol)) {} +PDBSymbolCustom::PDBSymbolCustom(IPDBSession &PDBSession, + std::unique_ptr CustomSymbol) + : PDBSymbol(PDBSession, std::move(CustomSymbol)) {} void PDBSymbolCustom::getDataBytes(llvm::SmallVector &bytes) { RawSymbol->getDataBytes(bytes); diff --git a/lib/DebugInfo/PDB/PDBSymbolData.cpp b/lib/DebugInfo/PDB/PDBSymbolData.cpp index 5777a697c60..db9518c2533 100644 --- a/lib/DebugInfo/PDB/PDBSymbolData.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolData.cpp @@ -7,11 +7,13 @@ // //===----------------------------------------------------------------------===// +#include #include "llvm/DebugInfo/PDB/PDBSymbolData.h" using namespace llvm; -PDBSymbolData::PDBSymbolData(std::unique_ptr DataSymbol) - : PDBSymbol(std::move(DataSymbol)) {} +PDBSymbolData::PDBSymbolData(IPDBSession &PDBSession, + std::unique_ptr DataSymbol) + : PDBSymbol(PDBSession, 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 index 033c552fafc..c65c9fbbc74 100644 --- a/lib/DebugInfo/PDB/PDBSymbolExe.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolExe.cpp @@ -17,8 +17,9 @@ using namespace llvm; -PDBSymbolExe::PDBSymbolExe(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolExe::PDBSymbolExe(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 9c3441850f8..f070a1d7045 100644 --- a/lib/DebugInfo/PDB/PDBSymbolFunc.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolFunc.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolFunc::PDBSymbolFunc(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolFunc::PDBSymbolFunc(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 03e60c1d1e5..a88ea2a7d7c 100644 --- a/lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolFuncDebugEnd::PDBSymbolFuncDebugEnd( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index ffa12688869..6128e05460d 100644 --- a/lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolFuncDebugStart::PDBSymbolFuncDebugStart( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index 490919f8def..0b893c3c1a5 100644 --- a/lib/DebugInfo/PDB/PDBSymbolLabel.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolLabel.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolLabel::PDBSymbolLabel(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolLabel::PDBSymbolLabel(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index 147ac44f98f..b56abb08224 100644 --- a/lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolPublicSymbol::PDBSymbolPublicSymbol( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index 76001cac927..a6ff4738e51 100644 --- a/lib/DebugInfo/PDB/PDBSymbolThunk.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolThunk.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolThunk::PDBSymbolThunk(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolThunk::PDBSymbolThunk(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index 0f565746a0a..239681abe81 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeArray::PDBSymbolTypeArray(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeArray::PDBSymbolTypeArray(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 0decf479d6c..545d66e7c8e 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeBaseClass::PDBSymbolTypeBaseClass( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(Session, 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 index 715643506e9..065231f980e 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeBuiltin::PDBSymbolTypeBuiltin( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 6afbc84e49e..a4c125c85b4 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeCustom::PDBSymbolTypeCustom(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeCustom::PDBSymbolTypeCustom(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 03d4b928d71..1ace2fc0d99 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp @@ -16,7 +16,7 @@ using namespace llvm; PDBSymbolTypeDimension::PDBSymbolTypeDimension( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index e903ffe30f3..c97a04203b6 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeEnum::PDBSymbolTypeEnum(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeEnum::PDBSymbolTypeEnum(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 240a3c1ac25..8587dcfab4c 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeFriend::PDBSymbolTypeFriend(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeFriend::PDBSymbolTypeFriend(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index c4415b4dd00..de8c4bff451 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeFunctionArg::PDBSymbolTypeFunctionArg( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 7ad6c5c6164..73f61e9c35c 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeFunctionSig::PDBSymbolTypeFunctionSig( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 3f372faa7ad..cf3339c60a4 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeManaged::PDBSymbolTypeManaged( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index d7a8a638c23..b081cdd0a5d 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp @@ -16,7 +16,7 @@ using namespace llvm; PDBSymbolTypePointer::PDBSymbolTypePointer( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index bd42efff2b7..42ab5018d13 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp @@ -16,7 +16,7 @@ using namespace llvm; PDBSymbolTypeTypedef::PDBSymbolTypeTypedef( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index d8a83af7be3..32b003c5216 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeUDT::PDBSymbolTypeUDT(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeUDT::PDBSymbolTypeUDT(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index bc780e16a26..ca533abe8e8 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolTypeVTable::PDBSymbolTypeVTable(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolTypeVTable::PDBSymbolTypeVTable(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index fb448eac7a6..b8336f440a4 100644 --- a/lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolTypeVTableShape::PDBSymbolTypeVTableShape( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 4c296182e7d..371d8b968fe 100644 --- a/lib/DebugInfo/PDB/PDBSymbolUnknown.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolUnknown.cpp @@ -14,7 +14,8 @@ using namespace llvm; -PDBSymbolUnknown::PDBSymbolUnknown(std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} +PDBSymbolUnknown::PDBSymbolUnknown(IPDBSession &PDBSession, + std::unique_ptr Symbol) + : PDBSymbol(PDBSession, 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 index 73cfd5c9c9d..2045ec093a2 100644 --- a/lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp +++ b/lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp @@ -15,7 +15,7 @@ using namespace llvm; PDBSymbolUsingNamespace::PDBSymbolUsingNamespace( - std::unique_ptr Symbol) - : PDBSymbol(std::move(Symbol)) {} + IPDBSession &PDBSession, std::unique_ptr Symbol) + : PDBSymbol(PDBSession, std::move(Symbol)) {} void PDBSymbolUsingNamespace::dump(llvm::raw_ostream &OS) const {} diff --git a/unittests/DebugInfo/PDB/PDBApiTest.cpp b/unittests/DebugInfo/PDB/PDBApiTest.cpp index 5a86d4ca7a5..4f838a0ded6 100644 --- a/unittests/DebugInfo/PDB/PDBApiTest.cpp +++ b/unittests/DebugInfo/PDB/PDBApiTest.cpp @@ -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 getGlobalScope() const override { + return nullptr; + } + std::unique_ptr getSymbolById() const override { return nullptr; } + std::unique_ptr getSourceFileById() const override { + return nullptr; + } + std::unique_ptr getDebugStreams() const override { + return nullptr; + } +}; + class MockRawSymbol : public IPDBRawSymbol { public: MockRawSymbol(PDB_SymType SymType) : Type(SymType) {} @@ -257,6 +275,8 @@ public: std::unordered_map> 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(new MockRawSymbol(Tag)); - auto Symbol = PDBSymbol::create(std::move(RawSymbol)); - SymbolMap.insert(std::make_pair(Tag, std::move(Symbol))); - } - -public: template void VerifyDyncast(PDB_SymType Tag) { for (auto item = SymbolMap.begin(); item != SymbolMap.end(); ++item) { EXPECT_EQ(item->first == Tag, llvm::isa(*item->second)); @@ -314,6 +326,15 @@ public: EXPECT_EQ(should_match, llvm::isa(*item->second)); } } + +private: + std::unique_ptr Session; + + void InsertItemWithTag(PDB_SymType Tag) { + auto RawSymbol = std::unique_ptr(new MockRawSymbol(Tag)); + auto Symbol = PDBSymbol::create(*Session, std::move(RawSymbol)); + SymbolMap.insert(std::make_pair(Tag, std::move(Symbol))); + } }; TEST_F(PDBApiTest, Dyncast) { -- 2.34.1