1 //===- PDBSymDumper.cpp - ---------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
10 #include "llvm/Support/ErrorHandling.h"
11 
12 using namespace llvm;
13 using namespace llvm::pdb;
14 
15 #define PDB_SYMDUMP_UNREACHABLE(Type)                                          \
16   if (RequireImpl)                                                             \
17     llvm_unreachable("Attempt to dump " #Type " with no dump implementation");
18 
PDBSymDumper(bool ShouldRequireImpl)19 PDBSymDumper::PDBSymDumper(bool ShouldRequireImpl)
20     : RequireImpl(ShouldRequireImpl) {}
21 
22 PDBSymDumper::~PDBSymDumper() = default;
23 
dump(const PDBSymbolAnnotation & Symbol)24 void PDBSymDumper::dump(const PDBSymbolAnnotation &Symbol) {
25   PDB_SYMDUMP_UNREACHABLE(PDBSymbolAnnotation)
26 }
27 
dump(const PDBSymbolBlock & Symbol)28 void PDBSymDumper::dump(const PDBSymbolBlock &Symbol) {
29   PDB_SYMDUMP_UNREACHABLE(PDBSymbolBlock)
30 }
31 
dump(const PDBSymbolCompiland & Symbol)32 void PDBSymDumper::dump(const PDBSymbolCompiland &Symbol) {
33   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompiland)
34 }
35 
dump(const PDBSymbolCompilandDetails & Symbol)36 void PDBSymDumper::dump(const PDBSymbolCompilandDetails &Symbol) {
37   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandDetails)
38 }
39 
dump(const PDBSymbolCompilandEnv & Symbol)40 void PDBSymDumper::dump(const PDBSymbolCompilandEnv &Symbol) {
41   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandEnv)
42 }
43 
dump(const PDBSymbolCustom & Symbol)44 void PDBSymDumper::dump(const PDBSymbolCustom &Symbol) {
45   PDB_SYMDUMP_UNREACHABLE(PDBSymbolCustom)
46 }
47 
dump(const PDBSymbolData & Symbol)48 void PDBSymDumper::dump(const PDBSymbolData &Symbol) {
49   PDB_SYMDUMP_UNREACHABLE(PDBSymbolData)
50 }
51 
dump(const PDBSymbolExe & Symbol)52 void PDBSymDumper::dump(const PDBSymbolExe &Symbol) {
53   PDB_SYMDUMP_UNREACHABLE(PDBSymbolExe)
54 }
55 
dump(const PDBSymbolFunc & Symbol)56 void PDBSymDumper::dump(const PDBSymbolFunc &Symbol) {
57   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFunc)
58 }
59 
dump(const PDBSymbolFuncDebugEnd & Symbol)60 void PDBSymDumper::dump(const PDBSymbolFuncDebugEnd &Symbol) {
61   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugEnd)
62 }
63 
dump(const PDBSymbolFuncDebugStart & Symbol)64 void PDBSymDumper::dump(const PDBSymbolFuncDebugStart &Symbol) {
65   PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugStart)
66 }
67 
dump(const PDBSymbolLabel & Symbol)68 void PDBSymDumper::dump(const PDBSymbolLabel &Symbol) {
69   PDB_SYMDUMP_UNREACHABLE(PDBSymbolLabel)
70 }
71 
dump(const PDBSymbolPublicSymbol & Symbol)72 void PDBSymDumper::dump(const PDBSymbolPublicSymbol &Symbol) {
73   PDB_SYMDUMP_UNREACHABLE(PDBSymbolPublicSymbol)
74 }
75 
dump(const PDBSymbolThunk & Symbol)76 void PDBSymDumper::dump(const PDBSymbolThunk &Symbol) {
77   PDB_SYMDUMP_UNREACHABLE(PDBSymbolThunk)
78 }
79 
dump(const PDBSymbolTypeArray & Symbol)80 void PDBSymDumper::dump(const PDBSymbolTypeArray &Symbol) {
81   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeArray)
82 }
83 
dump(const PDBSymbolTypeBaseClass & Symbol)84 void PDBSymDumper::dump(const PDBSymbolTypeBaseClass &Symbol) {
85   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBaseClass)
86 }
87 
dump(const PDBSymbolTypeBuiltin & Symbol)88 void PDBSymDumper::dump(const PDBSymbolTypeBuiltin &Symbol) {
89   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBuiltin)
90 }
91 
dump(const PDBSymbolTypeCustom & Symbol)92 void PDBSymDumper::dump(const PDBSymbolTypeCustom &Symbol) {
93   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeCustom)
94 }
95 
dump(const PDBSymbolTypeDimension & Symbol)96 void PDBSymDumper::dump(const PDBSymbolTypeDimension &Symbol) {
97   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeDimension)
98 }
99 
dump(const PDBSymbolTypeEnum & Symbol)100 void PDBSymDumper::dump(const PDBSymbolTypeEnum &Symbol) {
101   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeEnum)
102 }
103 
dump(const PDBSymbolTypeFriend & Symbol)104 void PDBSymDumper::dump(const PDBSymbolTypeFriend &Symbol) {
105   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFriend)
106 }
107 
dump(const PDBSymbolTypeFunctionArg & Symbol)108 void PDBSymDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) {
109   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionArg)
110 }
111 
dump(const PDBSymbolTypeFunctionSig & Symbol)112 void PDBSymDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) {
113   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionSig)
114 }
115 
dump(const PDBSymbolTypeManaged & Symbol)116 void PDBSymDumper::dump(const PDBSymbolTypeManaged &Symbol) {
117   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeManaged)
118 }
119 
dump(const PDBSymbolTypePointer & Symbol)120 void PDBSymDumper::dump(const PDBSymbolTypePointer &Symbol) {
121   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypePointer)
122 }
123 
dump(const PDBSymbolTypeTypedef & Symbol)124 void PDBSymDumper::dump(const PDBSymbolTypeTypedef &Symbol) {
125   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeTypedef)
126 }
127 
dump(const PDBSymbolTypeUDT & Symbol)128 void PDBSymDumper::dump(const PDBSymbolTypeUDT &Symbol) {
129   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeUDT)
130 }
131 
dump(const PDBSymbolTypeVTable & Symbol)132 void PDBSymDumper::dump(const PDBSymbolTypeVTable &Symbol) {
133   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTable)
134 }
135 
dump(const PDBSymbolTypeVTableShape & Symbol)136 void PDBSymDumper::dump(const PDBSymbolTypeVTableShape &Symbol) {
137   PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTableShape)
138 }
139 
dump(const PDBSymbolUnknown & Symbol)140 void PDBSymDumper::dump(const PDBSymbolUnknown &Symbol) {
141   PDB_SYMDUMP_UNREACHABLE(PDBSymbolUnknown)
142 }
143 
dump(const PDBSymbolUsingNamespace & Symbol)144 void PDBSymDumper::dump(const PDBSymbolUsingNamespace &Symbol) {
145   PDB_SYMDUMP_UNREACHABLE(PDBSymbolUsingNamespace)
146 }
147