1 //===- PDBSymDumper.cpp - ---------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #include "llvm/DebugInfo/PDB/PDBSymDumper.h"
10 #include "llvm/Support/ErrorHandling.h"
13 using namespace llvm::pdb
;
15 #define PDB_SYMDUMP_UNREACHABLE(Type) \
17 llvm_unreachable("Attempt to dump " #Type " with no dump implementation");
19 PDBSymDumper::PDBSymDumper(bool ShouldRequireImpl
)
20 : RequireImpl(ShouldRequireImpl
) {}
22 PDBSymDumper::~PDBSymDumper() = default;
24 void PDBSymDumper::dump(const PDBSymbolAnnotation
&Symbol
) {
25 PDB_SYMDUMP_UNREACHABLE(PDBSymbolAnnotation
)
28 void PDBSymDumper::dump(const PDBSymbolBlock
&Symbol
) {
29 PDB_SYMDUMP_UNREACHABLE(PDBSymbolBlock
)
32 void PDBSymDumper::dump(const PDBSymbolCompiland
&Symbol
) {
33 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompiland
)
36 void PDBSymDumper::dump(const PDBSymbolCompilandDetails
&Symbol
) {
37 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandDetails
)
40 void PDBSymDumper::dump(const PDBSymbolCompilandEnv
&Symbol
) {
41 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandEnv
)
44 void PDBSymDumper::dump(const PDBSymbolCustom
&Symbol
) {
45 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCustom
)
48 void PDBSymDumper::dump(const PDBSymbolData
&Symbol
) {
49 PDB_SYMDUMP_UNREACHABLE(PDBSymbolData
)
52 void PDBSymDumper::dump(const PDBSymbolExe
&Symbol
) {
53 PDB_SYMDUMP_UNREACHABLE(PDBSymbolExe
)
56 void PDBSymDumper::dump(const PDBSymbolFunc
&Symbol
) {
57 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFunc
)
60 void PDBSymDumper::dump(const PDBSymbolFuncDebugEnd
&Symbol
) {
61 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugEnd
)
64 void PDBSymDumper::dump(const PDBSymbolFuncDebugStart
&Symbol
) {
65 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugStart
)
68 void PDBSymDumper::dump(const PDBSymbolLabel
&Symbol
) {
69 PDB_SYMDUMP_UNREACHABLE(PDBSymbolLabel
)
72 void PDBSymDumper::dump(const PDBSymbolPublicSymbol
&Symbol
) {
73 PDB_SYMDUMP_UNREACHABLE(PDBSymbolPublicSymbol
)
76 void PDBSymDumper::dump(const PDBSymbolThunk
&Symbol
) {
77 PDB_SYMDUMP_UNREACHABLE(PDBSymbolThunk
)
80 void PDBSymDumper::dump(const PDBSymbolTypeArray
&Symbol
) {
81 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeArray
)
84 void PDBSymDumper::dump(const PDBSymbolTypeBaseClass
&Symbol
) {
85 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBaseClass
)
88 void PDBSymDumper::dump(const PDBSymbolTypeBuiltin
&Symbol
) {
89 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBuiltin
)
92 void PDBSymDumper::dump(const PDBSymbolTypeCustom
&Symbol
) {
93 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeCustom
)
96 void PDBSymDumper::dump(const PDBSymbolTypeDimension
&Symbol
) {
97 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeDimension
)
100 void PDBSymDumper::dump(const PDBSymbolTypeEnum
&Symbol
) {
101 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeEnum
)
104 void PDBSymDumper::dump(const PDBSymbolTypeFriend
&Symbol
) {
105 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFriend
)
108 void PDBSymDumper::dump(const PDBSymbolTypeFunctionArg
&Symbol
) {
109 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionArg
)
112 void PDBSymDumper::dump(const PDBSymbolTypeFunctionSig
&Symbol
) {
113 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionSig
)
116 void PDBSymDumper::dump(const PDBSymbolTypeManaged
&Symbol
) {
117 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeManaged
)
120 void PDBSymDumper::dump(const PDBSymbolTypePointer
&Symbol
) {
121 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypePointer
)
124 void PDBSymDumper::dump(const PDBSymbolTypeTypedef
&Symbol
) {
125 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeTypedef
)
128 void PDBSymDumper::dump(const PDBSymbolTypeUDT
&Symbol
) {
129 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeUDT
)
132 void PDBSymDumper::dump(const PDBSymbolTypeVTable
&Symbol
) {
133 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTable
)
136 void PDBSymDumper::dump(const PDBSymbolTypeVTableShape
&Symbol
) {
137 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTableShape
)
140 void PDBSymDumper::dump(const PDBSymbolUnknown
&Symbol
) {
141 PDB_SYMDUMP_UNREACHABLE(PDBSymbolUnknown
)
144 void PDBSymDumper::dump(const PDBSymbolUsingNamespace
&Symbol
) {
145 PDB_SYMDUMP_UNREACHABLE(PDBSymbolUsingNamespace
)