summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-02-08 20:58:09 +0000
committerZachary Turner <zturner@google.com>2015-02-08 20:58:09 +0000
commitbae16b3f5355e50bb4a0d5265f5304142a6afc0b (patch)
treed84c7496b24b21ae5cba39e1af6adbdcbf88af07 /llvm/lib/DebugInfo/PDB/PDBSymbol.cpp
parent9be09a36172701e9e906cced96b022fd41f52c2e (diff)
downloadbcm5719-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.cpp13
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)));
}
}
OpenPOWER on IntegriCloud