diff options
author | Zachary Turner <zturner@google.com> | 2015-02-08 20:58:09 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-02-08 20:58:09 +0000 |
commit | bae16b3f5355e50bb4a0d5265f5304142a6afc0b (patch) | |
tree | d84c7496b24b21ae5cba39e1af6adbdcbf88af07 /llvm/lib/DebugInfo/PDB/PDBSymbol.cpp | |
parent | 9be09a36172701e9e906cced96b022fd41f52c2e (diff) | |
download | bcm5719-llvm-bae16b3f5355e50bb4a0d5265f5304142a6afc0b.tar.gz bcm5719-llvm-bae16b3f5355e50bb4a0d5265f5304142a6afc0b.zip |
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.
llvm-svn: 228542
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/PDBSymbol.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/PDB/PDBSymbol.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp b/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp index 095cdfc379f..f99fc8c18c2 100644 --- a/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp +++ b/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp @@ -48,17 +48,19 @@ 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))); } } |