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