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