llvm.org GIT mirror llvm / c95df94
Move pdb code into pdb namespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268544 91177308-0d34-0410-b5e6-96231b3b80d8 Zachary Turner 3 years ago
121 changed file(s) with 275 addition(s) and 87 deletion(s). Raw diff Collapse all Expand all
1414 #include
1515
1616 namespace llvm {
17 namespace pdb {
1718
1819 template
1920 class ConcreteSymbolEnumerator : public IPDBEnumChildren {
5455 std::unique_ptr Enumerator;
5556 };
5657 }
58 }
5759
5860 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBDataStream.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617 class DIADataStream : public IPDBDataStream {
1718 public:
1819 explicit DIADataStream(CComPtr DiaStreamData);
2829 CComPtr StreamData;
2930 };
3031 }
32 }
3133
3234 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617
1718 class IPDBDataStream;
1819
3031 CComPtr Enumerator;
3132 };
3233 }
34 }
3335
3436 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
1414
1515 namespace llvm {
16
16 namespace pdb {
1717 class IPDBLineNumber;
1818
1919 class DIAEnumLineNumbers : public IPDBEnumChildren {
3030 CComPtr Enumerator;
3131 };
3232 }
33 }
3334
3435 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
1414
1515 namespace llvm {
16
16 namespace pdb {
1717 class DIASession;
1818
1919 class DIAEnumSourceFiles : public IPDBEnumChildren {
3232 CComPtr Enumerator;
3333 };
3434 }
35 }
3536
3637 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
1414
1515 namespace llvm {
16
16 namespace pdb {
1717 class DIASession;
1818
1919 class DIAEnumSymbols : public IPDBEnumChildren {
3232 CComPtr Enumerator;
3333 };
3434 }
35 }
3536
3637 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617 class DIALineNumber : public IPDBLineNumber {
1718 public:
1819 explicit DIALineNumber(CComPtr DiaLineNumber);
3435 CComPtr LineNumber;
3536 };
3637 }
37
38 }
3839 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617 class DIASession;
1718 class DIARawSymbol : public IPDBRawSymbol {
1819 public:
201202 CComPtr Symbol;
202203 };
203204 }
205 }
204206
205207 #endif
1515 namespace llvm {
1616 class StringRef;
1717
18 namespace pdb {
1819 class DIASession : public IPDBSession {
1920 public:
2021 explicit DIASession(CComPtr DiaSession);
6364 CComPtr Session;
6465 };
6566 }
66
67 }
6768 #endif
1313 #include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617 class DIASession;
1718
1819 class DIASourceFile : public IPDBSourceFile {
3435 CComPtr SourceFile;
3536 };
3637 }
38 }
3739
3840 #endif
1414 #include "llvm/ADT/SmallVector.h"
1515
1616 namespace llvm {
17 namespace pdb {
1718
1819 /// IPDBDataStream defines an interface used to represent a stream consisting
1920 /// of a name and a series of records whose formats depend on the particular
3233 virtual IPDBDataStream *clone() const = 0;
3334 };
3435 }
36 }
3537
3638 #endif
1313 #include
1414
1515 namespace llvm {
16 namespace pdb {
1617
1718 template class IPDBEnumChildren {
1819 public:
2829 virtual MyType *clone() const = 0;
2930 };
3031 }
32 }
3133
3234 #endif
1212 #include "PDBTypes.h"
1313
1414 namespace llvm {
15
15 namespace pdb {
1616 class IPDBLineNumber {
1717 public:
1818 virtual ~IPDBLineNumber();
3131 virtual bool isStatement() const = 0;
3232 };
3333 }
34 }
3435
3536 #endif
1515 #include
1616
1717 namespace llvm {
18
1918 class raw_ostream;
19
20 namespace pdb {
2021
2122 /// IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
2223 /// It exposes a monolithic interface consisting of accessors for the union of
205206 virtual std::string getUnused() const = 0;
206207 };
207208
209 } // namespace pdb
208210 } // namespace llvm
209211
210212 #endif
1515 #include
1616
1717 namespace llvm {
18
18 namespace pdb {
1919 class PDBSymbolCompiland;
2020 class PDBSymbolExe;
2121
7575 virtual std::unique_ptr getDebugStreams() const = 0;
7676 };
7777 }
78 }
7879
7980 #endif
1414 #include
1515
1616 namespace llvm {
17 class raw_ostream;
1718
18 class raw_ostream;
19 namespace pdb {
1920
2021 /// IPDBSourceFile defines an interface used to represent source files whose
2122 /// information are stored in the PDB.
3334 getCompilands() const = 0;
3435 };
3536 }
37 }
3638
3739 #endif
1515 namespace llvm {
1616 class StringRef;
1717
18 namespace pdb {
19
1820 PDB_ErrorCode loadDataForPDB(PDB_ReaderType Type, StringRef Path,
1921 std::unique_ptr &Session);
2022
2123 PDB_ErrorCode loadDataForEXE(PDB_ReaderType Type, StringRef Path,
2224 std::unique_ptr &Session);
2325 }
24
26 }
2527 #endif
1616
1717 namespace object {
1818 class COFFObjectFile;
19 }
20
21 /// PDBContext
22 /// This data structure is the top level entity that deals with PDB debug
23 /// information parsing. This data structure exists only when there is a
24 /// need for a transparent interface to different debug information formats
25 /// (e.g. PDB and DWARF). More control and power over the debug information
26 /// access can be had by using the PDB interfaces directly.
27 class PDBContext : public DIContext {
28
29 PDBContext(PDBContext &) = delete;
30 PDBContext &operator=(PDBContext &) = delete;
31
32 public:
33 PDBContext(const object::COFFObjectFile &Object,
34 std::unique_ptr PDBSession);
35
36 static bool classof(const DIContext *DICtx) {
37 return DICtx->getKind() == CK_PDB;
3819 }
3920
40 void dump(raw_ostream &OS, DIDumpType DumpType = DIDT_All,
41 bool DumpEH = false) override;
21 namespace pdb {
22 /// PDBContext
23 /// This data structure is the top level entity that deals with PDB debug
24 /// information parsing. This data structure exists only when there is a
25 /// need for a transparent interface to different debug information formats
26 /// (e.g. PDB and DWARF). More control and power over the debug information
27 /// access can be had by using the PDB interfaces directly.
28 class PDBContext : public DIContext {
4229
43 DILineInfo getLineInfoForAddress(
44 uint64_t Address,
45 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
46 DILineInfoTable getLineInfoForAddressRange(
47 uint64_t Address, uint64_t Size,
48 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
49 DIInliningInfo getInliningInfoForAddress(
50 uint64_t Address,
51 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
30 PDBContext(PDBContext &) = delete;
31 PDBContext &operator=(PDBContext &) = delete;
5232
53 private:
54 std::string getFunctionName(uint64_t Address, DINameKind NameKind) const;
55 std::unique_ptr Session;
56 };
33 public:
34 PDBContext(const object::COFFObjectFile &Object,
35 std::unique_ptr PDBSession);
36
37 static bool classof(const DIContext *DICtx) {
38 return DICtx->getKind() == CK_PDB;
39 }
40
41 void dump(raw_ostream &OS, DIDumpType DumpType = DIDT_All,
42 bool DumpEH = false) override;
43
44 DILineInfo getLineInfoForAddress(
45 uint64_t Address,
46 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
47 DILineInfoTable getLineInfoForAddressRange(
48 uint64_t Address, uint64_t Size,
49 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
50 DIInliningInfo getInliningInfoForAddress(
51 uint64_t Address,
52 DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
53
54 private:
55 std::string getFunctionName(uint64_t Address, DINameKind NameKind) const;
56 std::unique_ptr Session;
57 };
58 }
5759 }
5860
5961 #endif
1414 #include
1515
1616 namespace llvm {
17
18 namespace pdb {
1719 typedef std::unordered_map TagStats;
1820
1921 raw_ostream &operator<<(raw_ostream &OS, const PDB_VariantType &Value);
3436 raw_ostream &operator<<(raw_ostream &OS, const VersionInfo &Version);
3537 raw_ostream &operator<<(raw_ostream &OS, const TagStats &Stats);
3638 }
39 }
3740
3841 #endif
1414 namespace llvm {
1515
1616 class raw_ostream;
17 namespace pdb {
1718
1819 class PDBSymDumper {
1920 public:
5657 bool RequireImpl;
5758 };
5859 }
60 }
5961
6062 #endif
2424 namespace llvm {
2525
2626 class StringRef;
27 class raw_ostream;
28
29 namespace pdb {
2730 class IPDBRawSymbol;
28 class raw_ostream;
2931
3032 #define DECLARE_PDB_SYMBOL_CONCRETE_TYPE(TagValue) \
3133 static const PDB_SymType Tag = TagValue; \
3941 /// https://msdn.microsoft.com/en-us/library/370hs6k4.aspx
4042 class PDBSymbol {
4143 protected:
42 PDBSymbol(const IPDBSession &PDBSession, std::unique_ptr Symbol);
44 PDBSymbol(const IPDBSession &PDBSession,
45 std::unique_ptr Symbol);
4346
4447 public:
4548 static std::unique_ptr
9295 };
9396
9497 } // namespace llvm
98 }
9599
96100 #endif
1414 namespace llvm {
1515
1616 class raw_ostream;
17 namespace pdb {
1718
1819 class PDBSymbolAnnotation : public PDBSymbol {
1920 public:
3233 FORWARD_SYMBOL_METHOD(getVirtualAddress)
3334 };
3435 }
36 }
3537
3638 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLANNOTATION_H
1414 namespace llvm {
1515
1616 class raw_ostream;
17
18 namespace pdb {
1719
1820 class PDBSymbolBlock : public PDBSymbol {
1921 public:
3436 FORWARD_SYMBOL_METHOD(getVirtualAddress)
3537 };
3638 }
39 }
3740
3841 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLBLOCK_H
1616
1717 class raw_ostream;
1818
19 namespace pdb {
20
1921 class PDBSymbolCompiland : public PDBSymbol {
2022 public:
2123 PDBSymbolCompiland(const IPDBSession &PDBSession,
3335 std::string getSourceFileName() const;
3436 };
3537 }
38 }
3639
3740 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILAND_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolCompilandDetails : public PDBSymbol {
2021 public:
5051 };
5152
5253 } // namespace llvm
54 }
5355
5456 #endif // LLVM_DEBUGINFO_PDB_PDBFUNCTION_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18
18 namespace pdb {
1919 class PDBSymbolCompilandEnv : public PDBSymbol {
2020 public:
2121 PDBSymbolCompilandEnv(const IPDBSession &PDBSession,
3131 };
3232
3333 } // namespace llvm
34 }
3435
3536 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDENV_H
1717
1818 class raw_ostream;
1919
20 namespace pdb {
2021 /// PDBSymbolCustom represents symbols that are compiler-specific and do not
2122 /// fit anywhere else in the lexical hierarchy.
2223 /// https://msdn.microsoft.com/en-us/library/d88sf09h.aspx
3334 };
3435
3536 } // namespace llvm
37 }
3638
3739 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCUSTOM_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18
19 namespace pdb {
1820
1921 class PDBSymbolData : public PDBSymbol {
2022 public:
5557 };
5658
5759 } // namespace llvm
60 }
5861
5962 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLDATA_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18
19 namespace pdb {
1820
1921 class PDBSymbolExe : public PDBSymbol {
2022 public:
3941 int Indent) const;
4042 };
4143 } // namespace llvm
44 }
4245
4346 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18
19 namespace pdb {
1820
1921 class PDBSymbolFunc : public PDBSymbol {
2022 public:
7476 };
7577
7678 } // namespace llvm
79 }
7780
7881 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18
19 namespace pdb {
1820
1921 class PDBSymbolFuncDebugEnd : public PDBSymbol {
2022 public:
4345 };
4446
4547 } // namespace llvm
48 }
4649
4750 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGEND_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolFuncDebugStart : public PDBSymbol {
2021 public:
4344 };
4445
4546 } // namespace llvm
47 }
4648
4749 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGSTART_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolLabel : public PDBSymbol {
2021 public:
4344 };
4445
4546 } // namespace llvm
47 }
4648
4749 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLLABEL_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolPublicSymbol : public PDBSymbol {
2021 public:
4142 };
4243
4344 } // namespace llvm
45 }
4446
4547 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLPUBLICSYMBOL_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolThunk : public PDBSymbol {
2021 public:
5051 FORWARD_SYMBOL_METHOD(isVolatileType)
5152 };
5253 } // namespace llvm
54 }
5355
5456 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeArray : public PDBSymbol {
2021 public:
3940 };
4041
4142 } // namespace llvm
43 }
4244
4345 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEARRAY_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeBaseClass : public PDBSymbol {
2021 public:
5455 };
5556
5657 } // namespace llvm
58 }
5759
5860 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBASECLASS_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeBuiltin : public PDBSymbol {
2021 public:
3435 };
3536
3637 } // namespace llvm
38 }
3739
3840 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBUILTIN_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeCustom : public PDBSymbol {
2021 public:
3031 };
3132
3233 } // namespace llvm
34 }
3335
3436 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPECUSTOM_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeDimension : public PDBSymbol {
2021 public:
3031 };
3132
3233 } // namespace llvm
34 }
3335
3436 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEDIMENSION_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeEnum : public PDBSymbol {
2021 public:
4950 };
5051
5152 } // namespace llvm
53 }
5254
5355 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEENUM_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeFriend : public PDBSymbol {
2021 public:
3132 };
3233
3334 } // namespace llvm
35 }
3436
3537 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFRIEND_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeFunctionArg : public PDBSymbol {
2021 public:
3132 };
3233
3334 } // namespace llvm
35 }
3436
3537 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONARG_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeFunctionSig : public PDBSymbol {
2021 public:
4445 };
4546
4647 } // namespace llvm
48 }
4749
4850 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONSIG_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeManaged : public PDBSymbol {
2021 public:
2930 };
3031
3132 } // namespace llvm
33 }
3234
3335 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEMANAGED_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypePointer : public PDBSymbol {
2021 public:
3738 };
3839
3940 } // namespace llvm
41 }
4042
4143 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEPOINTER_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeTypedef : public PDBSymbol {
2021 public:
4849 };
4950
5051 } // namespace llvm
52 }
5153
5254 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPETYPEDEF_H
1616
1717 class raw_ostream;
1818
19 namespace pdb {
1920 class PDBSymbolTypeUDT : public PDBSymbol {
2021 public:
2122 PDBSymbolTypeUDT(const IPDBSession &PDBSession,
4445 FORWARD_SYMBOL_METHOD(getVirtualTableShapeId)
4546 FORWARD_SYMBOL_METHOD(isVolatileType)
4647 };
47
48 }
4849 } // namespace llvm
4950
5051 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEUDT_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeVTable : public PDBSymbol {
2021 public:
3435 };
3536
3637 } // namespace llvm
38 }
3739
3840 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLE_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolTypeVTableShape : public PDBSymbol {
2021 public:
3334 };
3435
3536 } // namespace llvm
37 }
3638
3739 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLESHAPE_H
1414 namespace llvm {
1515
1616 class raw_ostream;
17 namespace pdb {
1718
1819 class PDBSymbolUnknown : public PDBSymbol {
1920 public:
2930 };
3031
3132 } // namespace llvm
33 }
3234
3335 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLUNKNOWN_H
1515 namespace llvm {
1616
1717 class raw_ostream;
18 namespace pdb {
1819
1920 class PDBSymbolUsingNamespace : public PDBSymbol {
2021 public:
3031 };
3132
3233 } // namespace llvm
34 }
3335
3436 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLUSINGNAMESPACE_H
1616 #include
1717
1818 namespace llvm {
19 namespace pdb {
1920
2021 class PDBSymDumper;
2122 class PDBSymbol;
354355 };
355356
356357 struct Variant {
357 Variant()
358 : Type(PDB_VariantType::Empty) {
359 }
358 Variant() : Type(PDB_VariantType::Empty) {}
360359
361360 Variant(const Variant &Other) : Type(PDB_VariantType::Empty) {
362361 *this = Other;
428427 };
429428
430429 } // end namespace llvm
430 }
431431
432432 namespace std {
433 template <> struct hash {
434 typedef llvm::PDB_SymType argument_type;
433 template <> struct hash {
434 typedef llvm::pdb::PDB_SymType argument_type;
435435 typedef std::size_t result_type;
436436
437437 result_type operator()(const argument_type &Arg) const {
1111 #include "llvm/Support/ConvertUTF.h"
1212
1313 using namespace llvm;
14 using namespace llvm::pdb;
1415
1516 DIADataStream::DIADataStream(CComPtr DiaStreamData)
1617 : StreamData(DiaStreamData) {}
1111 #include "llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h"
1212
1313 using namespace llvm;
14 using namespace llvm::pdb;
1415
1516 DIAEnumDebugStreams::DIAEnumDebugStreams(
1617 CComPtr DiaEnumerator)
1111 #include "llvm/DebugInfo/PDB/DIA/DIALineNumber.h"
1212
1313 using namespace llvm;
14 using namespace llvm::pdb;
1415
1516 DIAEnumLineNumbers::DIAEnumLineNumbers(
1617 CComPtr DiaEnumerator)
1111 #include "llvm/DebugInfo/PDB/DIA/DIASourceFile.h"
1212
1313 using namespace llvm;
14 using namespace llvm::pdb;
1415
1516 DIAEnumSourceFiles::DIAEnumSourceFiles(
1617 const DIASession &PDBSession, CComPtr DiaEnumerator)
1212 #include "llvm/DebugInfo/PDB/DIA/DIASession.h"
1313
1414 using namespace llvm;
15 using namespace llvm::pdb;
1516
1617 DIAEnumSymbols::DIAEnumSymbols(const DIASession &PDBSession,
1718 CComPtr DiaEnumerator)
99 #include "llvm/DebugInfo/PDB/DIA/DIALineNumber.h"
1010
1111 using namespace llvm;
12 using namespace llvm::pdb;
1213
1314 DIALineNumber::DIALineNumber(CComPtr DiaLineNumber)
1415 : LineNumber(DiaLineNumber) {}
1616 #include "llvm/Support/raw_ostream.h"
1717
1818 using namespace llvm;
19 using namespace llvm::pdb;
1920
2021 namespace {
2122 Variant VariantFromVARIANT(const VARIANT &V) {
2020 #include
2121
2222 using namespace llvm;
23 using namespace llvm::pdb;
2324
2425 namespace {
2526
1515 #include "llvm/Support/ConvertUTF.h"
1616
1717 using namespace llvm;
18 using namespace llvm::pdb;
1819
1920 DIASourceFile::DIASourceFile(const DIASession &PDBSession,
2021 CComPtr DiaSourceFile)
1313 #include "llvm/Support/raw_ostream.h"
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 IPDBSourceFile::~IPDBSourceFile() {}
1819
1919 #include "llvm/DebugInfo/PDB/Raw/RawSession.h"
2020
2121 using namespace llvm;
22 using namespace llvm::pdb;
2223
23 PDB_ErrorCode llvm::loadDataForPDB(PDB_ReaderType Type, StringRef Path,
24 std::unique_ptr &Session) {
24 PDB_ErrorCode llvm::pdb::loadDataForPDB(PDB_ReaderType Type, StringRef Path,
25 std::unique_ptr &Session) {
2526 // Create the correct concrete instance type based on the value of Type.
2627 if (Type == PDB_ReaderType::Raw)
27 return pdb::RawSession::createFromPdb(Path, Session);
28 return RawSession::createFromPdb(Path, Session);
2829
2930 #if HAVE_DIA_SDK
3031 return DIASession::createFromPdb(Path, Session);
3334 #endif
3435 }
3536
36 PDB_ErrorCode llvm::loadDataForEXE(PDB_ReaderType Type, StringRef Path,
37 std::unique_ptr &Session) {
37 PDB_ErrorCode llvm::pdb::loadDataForEXE(PDB_ReaderType Type, StringRef Path,
38 std::unique_ptr &Session) {
3839 // Create the correct concrete instance type based on the value of Type.
3940 if (Type == PDB_ReaderType::Raw)
40 return pdb::RawSession::createFromExe(Path, Session);
41 return RawSession::createFromExe(Path, Session);
4142
4243 #if HAVE_DIA_SDK
4344 return DIASession::createFromExe(Path, Session);
1818
1919 using namespace llvm;
2020 using namespace llvm::object;
21 using namespace llvm::pdb;
2122
2223 PDBContext::PDBContext(const COFFObjectFile &Object,
2324 std::unique_ptr PDBSession)
1111 #include "llvm/ADT/ArrayRef.h"
1212
1313 using namespace llvm;
14 using namespace llvm::pdb;
1415
1516 #define CASE_OUTPUT_ENUM_CLASS_STR(Class, Value, Str, Stream) \
1617 case Class::Value: \
2021 #define CASE_OUTPUT_ENUM_CLASS_NAME(Class, Value, Stream) \
2122 CASE_OUTPUT_ENUM_CLASS_STR(Class, Value, #Value, Stream)
2223
23 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_VariantType &Type) {
24 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
25 const PDB_VariantType &Type) {
2426 switch (Type) {
2527 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_VariantType, Bool, OS)
2628 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_VariantType, Single, OS)
3941 return OS;
4042 }
4143
42 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_CallingConv &Conv) {
44 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
45 const PDB_CallingConv &Conv) {
4346 OS << "__";
4447 switch (Conv) {
4548 CASE_OUTPUT_ENUM_CLASS_STR(PDB_CallingConv, NearC , "cdecl", OS)
7073 return OS;
7174 }
7275
73 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_DataKind &Data) {
76 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_DataKind &Data) {
7477 switch (Data) {
7578 CASE_OUTPUT_ENUM_CLASS_STR(PDB_DataKind, Unknown, "unknown", OS)
7679 CASE_OUTPUT_ENUM_CLASS_STR(PDB_DataKind, Local, "local", OS)
8689 return OS;
8790 }
8891
89 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_RegisterId &Reg) {
92 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_RegisterId &Reg) {
9093 switch (Reg) {
9194 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_RegisterId, AL, OS)
9295 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_RegisterId, CL, OS)
141144 return OS;
142145 }
143146
144 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_LocType &Loc) {
147 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_LocType &Loc) {
145148 switch (Loc) {
146149 CASE_OUTPUT_ENUM_CLASS_STR(PDB_LocType, Static, "static", OS)
147150 CASE_OUTPUT_ENUM_CLASS_STR(PDB_LocType, TLS, "tls", OS)
159162 return OS;
160163 }
161164
162 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_ThunkOrdinal &Thunk) {
165 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
166 const PDB_ThunkOrdinal &Thunk) {
163167 switch (Thunk) {
164168 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_ThunkOrdinal, BranchIsland, OS)
165169 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_ThunkOrdinal, Pcode, OS)
172176 return OS;
173177 }
174178
175 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_Checksum &Checksum) {
179 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
180 const PDB_Checksum &Checksum) {
176181 switch (Checksum) {
177182 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Checksum, None, OS)
178183 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Checksum, MD5, OS)
181186 return OS;
182187 }
183188
184 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_Lang &Lang) {
189 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_Lang &Lang) {
185190 switch (Lang) {
186191 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Lang, C, OS)
187192 CASE_OUTPUT_ENUM_CLASS_STR(PDB_Lang, Cpp, "C++", OS)
204209 return OS;
205210 }
206211
207 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_SymType &Tag) {
212 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_SymType &Tag) {
208213 switch (Tag) {
209214 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_SymType, Exe, OS)
210215 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_SymType, Compiland, OS)
242247 return OS;
243248 }
244249
245 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_MemberAccess &Access) {
250 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
251 const PDB_MemberAccess &Access) {
246252 switch (Access) {
247253 CASE_OUTPUT_ENUM_CLASS_STR(PDB_MemberAccess, Public, "public", OS)
248254 CASE_OUTPUT_ENUM_CLASS_STR(PDB_MemberAccess, Protected, "protected", OS)
251257 return OS;
252258 }
253259
254 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_UdtType &Type) {
260 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_UdtType &Type) {
255261 switch (Type) {
256262 CASE_OUTPUT_ENUM_CLASS_STR(PDB_UdtType, Class, "class", OS)
257263 CASE_OUTPUT_ENUM_CLASS_STR(PDB_UdtType, Struct, "struct", OS)
261267 return OS;
262268 }
263269
264 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_UniqueId &Id) {
270 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const PDB_UniqueId &Id) {
265271 static const char *Lookup = "0123456789ABCDEF";
266272
267273 static_assert(sizeof(PDB_UniqueId) == 16, "Expected 16-byte GUID");
280286 return OS;
281287 }
282288
283 raw_ostream &llvm::operator<<(raw_ostream &OS, const PDB_Machine &Machine) {
289 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
290 const PDB_Machine &Machine) {
284291 switch (Machine) {
285292 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Machine, Am33, OS)
286293 CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Machine, Amd64, OS)
308315 return OS;
309316 }
310317
311 raw_ostream &llvm::operator<<(raw_ostream &OS, const Variant &Value) {
318 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const Variant &Value) {
312319 switch (Value.Type) {
313320 case PDB_VariantType::Bool:
314321 OS << (Value.Value.Bool ? "true" : "false");
352359 return OS;
353360 }
354361
355 raw_ostream &llvm::operator<<(raw_ostream &OS, const VersionInfo &Version) {
362 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS,
363 const VersionInfo &Version) {
356364 OS << Version.Major << "." << Version.Minor << "." << Version.Build;
357365 return OS;
358366 }
359367
360 raw_ostream &llvm::operator<<(raw_ostream &OS, const TagStats &Stats) {
368 raw_ostream &llvm::pdb::operator<<(raw_ostream &OS, const TagStats &Stats) {
361369 for (auto Tag : Stats) {
362370 OS << Tag.first << ":" << Tag.second << " ";
363371 }
1717 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
1818
1919 using namespace llvm;
20 using namespace llvm::pdb;
2021
2122 IPDBSession::~IPDBSession() {}
2223
1010 #include "llvm/Support/ErrorHandling.h"
1111
1212 using namespace llvm;
13 using namespace llvm::pdb;
1314
1415 #define PDB_SYMDUMP_UNREACHABLE(Type) \
1516 if (RequireImpl) \
4949 #include
5050
5151 using namespace llvm;
52 using namespace llvm::pdb;
5253
5354 PDBSymbol::PDBSymbol(const IPDBSession &PDBSession,
5455 std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolAnnotation::PDBSymbolAnnotation(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolBlock::PDBSymbolBlock(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolCompiland::PDBSymbolCompiland(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolCompilandDetails::PDBSymbolCompilandDetails(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1515 #include
1616
1717 using namespace llvm;
18 using namespace llvm::pdb;
1819
1920 PDBSymbolCompilandEnv::PDBSymbolCompilandEnv(
2021 const IPDBSession &PDBSession, std::unique_ptr Symbol)
2122 : PDBSymbol(PDBSession, std::move(Symbol)) {}
2223
2324 std::string PDBSymbolCompilandEnv::getValue() const {
24 llvm::Variant Value = RawSymbol->getValue();
25 if (Value.Type != PDB_VariantType::String)
26 return std::string();
27 return std::string(Value.Value.String);
25 Variant Value = RawSymbol->getValue();
26 if (Value.Type != PDB_VariantType::String)
27 return std::string();
28 return std::string(Value.Value.String);
2829 }
2930
3031 void PDBSymbolCompilandEnv::dump(PDBSymDumper &Dumper) const {
1515 #include
1616
1717 using namespace llvm;
18 using namespace llvm::pdb;
1819
1920 PDBSymbolCustom::PDBSymbolCustom(const IPDBSession &PDBSession,
2021 std::unique_ptr CustomSymbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolData::PDBSymbolData(const IPDBSession &PDBSession,
1920 std::unique_ptr DataSymbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolExe::PDBSymbolExe(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
2222 #include
2323
2424 using namespace llvm;
25 using namespace llvm::pdb;
2526
2627 namespace {
2728 class FunctionArgEnumerator : public IPDBEnumChildren {
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolFuncDebugEnd::PDBSymbolFuncDebugEnd(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolFuncDebugStart::PDBSymbolFuncDebugStart(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolLabel::PDBSymbolLabel(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolPublicSymbol::PDBSymbolPublicSymbol(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolThunk::PDBSymbolThunk(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeArray::PDBSymbolTypeArray(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeBaseClass::PDBSymbolTypeBaseClass(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolTypeBuiltin::PDBSymbolTypeBuiltin(
1819 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeCustom::PDBSymbolTypeCustom(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1515 #include
1616
1717 using namespace llvm;
18 using namespace llvm::pdb;
1819
1920 PDBSymbolTypeDimension::PDBSymbolTypeDimension(
2021 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1616 #include
1717
1818 using namespace llvm;
19 using namespace llvm::pdb;
1920
2021 PDBSymbolTypeEnum::PDBSymbolTypeEnum(const IPDBSession &PDBSession,
2122 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeFriend::PDBSymbolTypeFriend(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolTypeFunctionArg::PDBSymbolTypeFunctionArg(
1819 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1818 #include
1919
2020 using namespace llvm;
21 using namespace llvm::pdb;
2122
2223 namespace {
2324 class FunctionArgEnumerator : public IPDBEnumSymbols {
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeManaged::PDBSymbolTypeManaged(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypePointer::PDBSymbolTypePointer(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolTypeTypedef::PDBSymbolTypeTypedef(
1819 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolTypeUDT::PDBSymbolTypeUDT(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
1313 #include
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 PDBSymbolTypeVTable::PDBSymbolTypeVTable(const IPDBSession &PDBSession,
1819 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolTypeVTableShape::PDBSymbolTypeVTableShape(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolUnknown::PDBSymbolUnknown(const IPDBSession &PDBSession,
1920 std::unique_ptr Symbol)
1414 #include
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 PDBSymbolUsingNamespace::PDBSymbolUsingNamespace(
1920 const IPDBSession &PDBSession, std::unique_ptr Symbol)
366366
367367 std::unique_ptr Context;
368368 if (auto CoffObject = dyn_cast(Objects.first)) {
369 using namespace pdb;
369370 // If this is a COFF object, assume it contains PDB debug information. If
370371 // we don't find any we will fall back to the DWARF case.
371372 std::unique_ptr Session;
1313 #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
1414
1515 using namespace llvm;
16 using namespace llvm::pdb;
1617
1718 BuiltinDumper::BuiltinDumper(LinePrinter &P)
1819 : PDBSymDumper(false), Printer(P) {}
1313 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1414
1515 namespace llvm {
16 namespace pdb {
1617
1718 class LinePrinter;
1819
2829 LinePrinter &Printer;
2930 };
3031 }
32 }
3133
3234 #endif
2727 #include "llvm/Support/Format.h"
2828
2929 using namespace llvm;
30 using namespace llvm::pdb;
3031
3132 ClassDefinitionDumper::ClassDefinitionDumper(LinePrinter &P)
3233 : PDBSymDumper(true), Printer(P) {}
1818 #include
1919
2020 namespace llvm {
21 namespace pdb {
2122
2223 class LinePrinter;
2324
5758 int dumpAccessGroup(PDB_MemberAccess Access, const SymbolGroup &Group);
5859 };
5960 }
60
61 }
6162 #endif
3434 #include
3535
3636 using namespace llvm;
37 using namespace llvm::pdb;
3738
3839 CompilandDumper::CompilandDumper(LinePrinter &P)
3940 : PDBSymDumper(true), Printer(P) {}
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15 namespace pdb {
1516
1617 class LinePrinter;
1718
3738 LinePrinter &Printer;
3839 };
3940 }
41 }
4042
4143 #endif
1717 #include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
1818
1919 using namespace llvm;
20 using namespace llvm::pdb;
2021
2122 EnumDumper::EnumDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {}
2223
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15 namespace pdb {
1516
1617 class LinePrinter;
1718
2526 LinePrinter &Printer;
2627 };
2728 }
28
29 }
2930 #endif
1414 #include "llvm/Support/Format.h"
1515
1616 using namespace llvm;
17 using namespace llvm::pdb;
1718
1819 ExternalSymbolDumper::ExternalSymbolDumper(LinePrinter &P)
1920 : PDBSymDumper(true), Printer(P) {}
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15 namespace pdb {
1516
1617 class LinePrinter;
1718
2728 LinePrinter &Printer;
2829 };
2930 }
31 }
3032
3133 #endif
1212 #include "llvm-pdbdump.h"
1313
1414 #include "llvm/DebugInfo/PDB/IPDBSession.h"
15 #include "llvm/DebugInfo/PDB/PDBExtras.h"
1516 #include "llvm/DebugInfo/PDB/PDBSymbolData.h"
1617 #include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
1718 #include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"
2728
2829 using namespace llvm;
2930 using namespace llvm::codeview;
31 using namespace llvm::pdb;
3032
3133 namespace {
3234 template
3335 void dumpClassParentWithScopeOperator(const T &Symbol, LinePrinter &Printer,
34 llvm::FunctionDumper &Dumper) {
36 FunctionDumper &Dumper) {
3537 uint32_t ClassParentId = Symbol.getClassParentId();
3638 auto ClassParent =
3739 Symbol.getSession().template getConcreteSymbolById(
5759 Symbol.getSession().getConcreteSymbolById(
5860 ClassParentId);
5961
60 CallingConvention CC = Symbol.getCallingConvention();
62 PDB_CallingConv CC = Symbol.getCallingConvention();
6163 bool ShouldDumpCallingConvention = true;
6264 if ((ClassParent && CC == CallingConvention::ThisCall) ||
6365 (!ClassParent && CC == CallingConvention::NearStdCall)) {
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15
15 namespace pdb {
1616 class LinePrinter;
1717
1818 class FunctionDumper : public PDBSymDumper {
3737 LinePrinter &Printer;
3838 };
3939 }
40 }
4041
4142 #endif
1414 #include "llvm/Support/Regex.h"
1515
1616 #include
17
18 using namespace llvm;
19 using namespace llvm::pdb;
1720
1821 namespace {
1922 bool IsItemExcluded(llvm::StringRef Item,
1717 #include
1818
1919 namespace llvm {
20 namespace pdb {
2021
2122 class LinePrinter {
2223 friend class WithColor;
8788 raw_ostream &OS;
8889 };
8990 }
91 }
9092
9193 #endif
2323 #include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
2424
2525 using namespace llvm;
26 using namespace llvm::pdb;
2627
2728 TypeDumper::TypeDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {}
2829
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15
15 namespace pdb {
1616 class LinePrinter;
1717
1818 class TypeDumper : public PDBSymDumper {
2929 LinePrinter &Printer;
3030 };
3131 }
32
32 }
3333 #endif
2222 #include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
2323
2424 using namespace llvm;
25 using namespace llvm::pdb;
2526
2627 TypedefDumper::TypedefDumper(LinePrinter &P) : PDBSymDumper(true), Printer(P) {}
2728
1212 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
1313
1414 namespace llvm {
15 namespace pdb {
1516
1617 class LinePrinter;
1718
3233 LinePrinter &Printer;
3334 };
3435 }
36 }
3537
3638 #endif
2626 #include "llvm/Support/Format.h"
2727
2828 using namespace llvm;
29 using namespace llvm::pdb;
2930
3031 VariableDumper::VariableDumper(LinePrinter &P)
3132 : PDBSymDumper(true), Printer(P) {}
1414 namespace llvm {
1515
1616 class StringRef;
17
18 namespace pdb {
19
1720 class LinePrinter;
1821
1922 class VariableDumper : public PDBSymDumper {
3639 LinePrinter &Printer;
3740 };
3841 }
39
42 }
4043 #endif