aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-02-06 20:30:52 +0000
committerZachary Turner <zturner@google.com>2015-02-06 20:30:52 +0000
commit0e9e66330a20e00d1727af0fe80ac7957995f4a1 (patch)
treeacc39c82a8e3bbc72b1158534adbfba94b9ffd4f /llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
parent7af83c1f39e999a51e19ba7116c9046af18a078b (diff)
downloadllvm-0e9e66330a20e00d1727af0fe80ac7957995f4a1.zip
llvm-0e9e66330a20e00d1727af0fe80ac7957995f4a1.tar.gz
llvm-0e9e66330a20e00d1727af0fe80ac7957995f4a1.tar.bz2
Resubmit "Create lib/DebugInfo/PDB" (r228428)
This change resubmits the patch that broke the build, this time without unittests. The unittests will be submitted separately after the problem has been addressed: --Original Commit Message-- Create lib/DebugInfo/PDB. This patch creates a platform-independent interface to a PDB reader. There is currently no implementation of this interface, which will be provided in future patches. This defines the basic object model which any implementation must conform to. Reviewed by: David Blaikie Differential Revision: http://reviews.llvm.org/D7356 llvm-svn: 228435
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp')
-rw-r--r--llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp b/llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
new file mode 100644
index 0000000..1d6c901
--- /dev/null
+++ b/llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
@@ -0,0 +1,101 @@
+//===- PDBInterfaceAnchors.h - defines class anchor funcions ----*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+// Class anchors are necessary per the LLVM Coding style guide, to ensure that
+// the vtable is only generated in this object file, and not in every object
+// file that incldues the corresponding header.
+//===----------------------------------------------------------------------===//
+
+#include "llvm/DebugInfo/PDB/IPDBDataStream.h"
+#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
+#include "llvm/DebugInfo/PDB/IPDBSession.h"
+#include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
+
+#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolData.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"
+
+using namespace llvm;
+
+IPDBSession::~IPDBSession() {}
+
+IPDBDataStream::~IPDBDataStream() {}
+
+IPDBRawSymbol::~IPDBRawSymbol() {}
+
+IPDBSourceFile::~IPDBSourceFile() {}
+
+IPDBLineNumber::~IPDBLineNumber() {}
+
+// All of the concrete symbol types have their methods declared inline through
+// the use of a forwarding macro, so the constructor should be declared out of
+// line to get the vtable in this file.
+#define FORWARD_SYMBOL_CONSTRUCTOR(ClassName) \
+ ClassName::ClassName(std::unique_ptr<IPDBRawSymbol> Symbol) \
+ : PDBSymbol(std::move(Symbol)) {}
+
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolAnnotation)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolBlock)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompiland)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandDetails)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandEnv)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCustom)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolData)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolExe)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFunc)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugEnd)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugStart)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolLabel)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolPublicSymbol)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolThunk)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeArray)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBaseClass)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBuiltin)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeCustom)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeDimension)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeEnum)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFriend)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionArg)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionSig)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeManaged)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypePointer)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeTypedef)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeUDT)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTable)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTableShape)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUnknown)
+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUsingNamespace)