1 //===- PDBInterfaceAnchors.h - defines class anchor funcions ----*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // Class anchors are necessary per the LLVM Coding style guide, to ensure that 10 // the vtable is only generated in this object file, and not in every object 11 // file that incldues the corresponding header. 12 //===----------------------------------------------------------------------===// 13 14 #include "llvm/DebugInfo/PDB/IPDBDataStream.h" 15 #include "llvm/DebugInfo/PDB/IPDBLineNumber.h" 16 #include "llvm/DebugInfo/PDB/IPDBSession.h" 17 #include "llvm/DebugInfo/PDB/IPDBSourceFile.h" 18 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h" 19 20 #include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h" 21 #include "llvm/DebugInfo/PDB/PDBSymbolBlock.h" 22 #include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h" 23 #include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h" 24 #include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h" 25 #include "llvm/DebugInfo/PDB/PDBSymbolCustom.h" 26 #include "llvm/DebugInfo/PDB/PDBSymbolData.h" 27 #include "llvm/DebugInfo/PDB/PDBSymbolExe.h" 28 #include "llvm/DebugInfo/PDB/PDBSymbolFunc.h" 29 #include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h" 30 #include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h" 31 #include "llvm/DebugInfo/PDB/PDBSymbolLabel.h" 32 #include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h" 33 #include "llvm/DebugInfo/PDB/PDBSymbolThunk.h" 34 #include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h" 35 #include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h" 36 #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h" 37 #include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h" 38 #include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h" 39 #include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h" 40 #include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h" 41 #include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h" 42 #include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h" 43 #include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h" 44 #include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h" 45 #include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h" 46 #include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h" 47 #include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h" 48 #include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h" 49 #include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h" 50 #include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h" 51 52 using namespace llvm; 53 54 IPDBSession::~IPDBSession() {} 55 56 IPDBDataStream::~IPDBDataStream() {} 57 58 IPDBRawSymbol::~IPDBRawSymbol() {} 59 60 IPDBSourceFile::~IPDBSourceFile() {} 61 62 IPDBLineNumber::~IPDBLineNumber() {} 63 64 // All of the concrete symbol types have their methods declared inline through 65 // the use of a forwarding macro, so the constructor should be declared out of 66 // line to get the vtable in this file. 67 #define FORWARD_SYMBOL_CONSTRUCTOR(ClassName) \ 68 ClassName::ClassName(std::unique_ptr<IPDBRawSymbol> Symbol) \ 69 : PDBSymbol(std::move(Symbol)) {} 70 71 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolAnnotation) 72 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolBlock) 73 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompiland) 74 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandDetails) 75 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandEnv) 76 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCustom) 77 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolData) 78 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolExe) 79 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFunc) 80 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugEnd) 81 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugStart) 82 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolLabel) 83 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolPublicSymbol) 84 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolThunk) 85 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeArray) 86 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBaseClass) 87 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBuiltin) 88 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeCustom) 89 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeDimension) 90 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeEnum) 91 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFriend) 92 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionArg) 93 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionSig) 94 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeManaged) 95 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypePointer) 96 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeTypedef) 97 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeUDT) 98 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTable) 99 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTableShape) 100 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUnknown) 101 FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUsingNamespace) 102