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
12using namespace llvm;
13using 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
19PDBSymDumper::PDBSymDumper(bool ShouldRequireImpl)
20 : RequireImpl(ShouldRequireImpl) {}
21
22PDBSymDumper::~PDBSymDumper() = default;
23
24void PDBSymDumper::dump(const PDBSymbolAnnotation &Symbol) {
25 PDB_SYMDUMP_UNREACHABLE(PDBSymbolAnnotation)
26}
27
28void PDBSymDumper::dump(const PDBSymbolBlock &Symbol) {
29 PDB_SYMDUMP_UNREACHABLE(PDBSymbolBlock)
30}
31
32void PDBSymDumper::dump(const PDBSymbolCompiland &Symbol) {
33 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompiland)
34}
35
36void PDBSymDumper::dump(const PDBSymbolCompilandDetails &Symbol) {
37 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandDetails)
38}
39
40void PDBSymDumper::dump(const PDBSymbolCompilandEnv &Symbol) {
41 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCompilandEnv)
42}
43
44void PDBSymDumper::dump(const PDBSymbolCustom &Symbol) {
45 PDB_SYMDUMP_UNREACHABLE(PDBSymbolCustom)
46}
47
48void PDBSymDumper::dump(const PDBSymbolData &Symbol) {
49 PDB_SYMDUMP_UNREACHABLE(PDBSymbolData)
50}
51
52void PDBSymDumper::dump(const PDBSymbolExe &Symbol) {
53 PDB_SYMDUMP_UNREACHABLE(PDBSymbolExe)
54}
55
56void PDBSymDumper::dump(const PDBSymbolFunc &Symbol) {
57 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFunc)
58}
59
60void PDBSymDumper::dump(const PDBSymbolFuncDebugEnd &Symbol) {
61 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugEnd)
62}
63
64void PDBSymDumper::dump(const PDBSymbolFuncDebugStart &Symbol) {
65 PDB_SYMDUMP_UNREACHABLE(PDBSymbolFuncDebugStart)
66}
67
68void PDBSymDumper::dump(const PDBSymbolLabel &Symbol) {
69 PDB_SYMDUMP_UNREACHABLE(PDBSymbolLabel)
70}
71
72void PDBSymDumper::dump(const PDBSymbolPublicSymbol &Symbol) {
73 PDB_SYMDUMP_UNREACHABLE(PDBSymbolPublicSymbol)
74}
75
76void PDBSymDumper::dump(const PDBSymbolThunk &Symbol) {
77 PDB_SYMDUMP_UNREACHABLE(PDBSymbolThunk)
78}
79
80void PDBSymDumper::dump(const PDBSymbolTypeArray &Symbol) {
81 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeArray)
82}
83
84void PDBSymDumper::dump(const PDBSymbolTypeBaseClass &Symbol) {
85 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBaseClass)
86}
87
88void PDBSymDumper::dump(const PDBSymbolTypeBuiltin &Symbol) {
89 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeBuiltin)
90}
91
92void PDBSymDumper::dump(const PDBSymbolTypeCustom &Symbol) {
93 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeCustom)
94}
95
96void PDBSymDumper::dump(const PDBSymbolTypeDimension &Symbol) {
97 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeDimension)
98}
99
100void PDBSymDumper::dump(const PDBSymbolTypeEnum &Symbol) {
101 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeEnum)
102}
103
104void PDBSymDumper::dump(const PDBSymbolTypeFriend &Symbol) {
105 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFriend)
106}
107
108void PDBSymDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) {
109 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionArg)
110}
111
112void PDBSymDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) {
113 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeFunctionSig)
114}
115
116void PDBSymDumper::dump(const PDBSymbolTypeManaged &Symbol) {
117 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeManaged)
118}
119
120void PDBSymDumper::dump(const PDBSymbolTypePointer &Symbol) {
121 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypePointer)
122}
123
124void PDBSymDumper::dump(const PDBSymbolTypeTypedef &Symbol) {
125 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeTypedef)
126}
127
128void PDBSymDumper::dump(const PDBSymbolTypeUDT &Symbol) {
129 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeUDT)
130}
131
132void PDBSymDumper::dump(const PDBSymbolTypeVTable &Symbol) {
133 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTable)
134}
135
136void PDBSymDumper::dump(const PDBSymbolTypeVTableShape &Symbol) {
137 PDB_SYMDUMP_UNREACHABLE(PDBSymbolTypeVTableShape)
138}
139
140void PDBSymDumper::dump(const PDBSymbolUnknown &Symbol) {
141 PDB_SYMDUMP_UNREACHABLE(PDBSymbolUnknown)
142}
143
144void PDBSymDumper::dump(const PDBSymbolUsingNamespace &Symbol) {
145 PDB_SYMDUMP_UNREACHABLE(PDBSymbolUsingNamespace)
146}
147