<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Zachary,<div class=""><br class=""></div><div class="">this broke the Darwin build bot:</div><div class=""><a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/5179/consoleFull#-1951551925e9a0fee5-ebcc-4238-a641-c5aa112c323e" class="">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/5179/consoleFull#-1951551925e9a0fee5-ebcc-4238-a641-c5aa112c323e</a></div><div class=""><br class=""></div><div class="">Could you please take a look?</div><div class=""><br class=""></div><div class="">Thanks</div><div class=""><br class=""></div><div class="">—Juergen</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 6, 2015, at 11:44 AM, Zachary Turner <<a href="mailto:zturner@google.com" class="">zturner@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">Author: zturner<br class="">Date: Fri Feb 6 13:44:09 2015<br class="">New Revision: 228428<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=228428&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=228428&view=rev</a><br class="">Log:<br class="">Create lib/DebugInfo/PDB.<br class=""><br class="">This patch creates a platform-independent interface to a PDB reader.<br class="">There is currently no implementation of this interface, which will<br class="">be provided in future patches. This defines the basic object model<br class="">which any implementation must conform to.<br class=""><br class="">Reviewed by: David Blaikie<br class="">Differential Revision: <a href="http://reviews.llvm.org/D7356" class="">http://reviews.llvm.org/D7356</a><br class=""><br class="">Added:<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h<br class=""> llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h<br class=""> llvm/trunk/lib/DebugInfo/PDB/<br class=""> llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt<br class=""> llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt<br class=""> - copied, changed from r228421, llvm/trunk/lib/DebugInfo/LLVMBuild.txt<br class=""> llvm/trunk/lib/DebugInfo/PDB/PDB.cpp<br class=""> llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp<br class=""> llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp<br class=""> llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp<br class=""> llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp<br class=""> llvm/trunk/unittests/DebugInfo/PDB/<br class=""> llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt<br class=""> llvm/trunk/unittests/DebugInfo/PDB/Makefile<br class=""> llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp<br class="">Modified:<br class=""> llvm/trunk/lib/DebugInfo/CMakeLists.txt<br class=""> llvm/trunk/lib/DebugInfo/LLVMBuild.txt<br class=""> llvm/trunk/unittests/DebugInfo/CMakeLists.txt<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBDataStream.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,38 @@<br class="">+//===- IPDBDataStream.h - base interface for child enumerator -*- C++ ---*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H<br class="">+<br class="">+#include "llvm/ADT/SmallVector.h"<br class="">+#include "llvm/ADT/Optional.h"<br class="">+<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+/// IPDBDataStream defines an interface used to represent a stream consisting<br class="">+/// of a name and a series of records whose formats depend on the particular<br class="">+/// stream type.<br class="">+class IPDBDataStream {<br class="">+public:<br class="">+ typedef llvm::SmallVector<uint8_t, 32> RecordType;<br class="">+<br class="">+ virtual ~IPDBDataStream();<br class="">+<br class="">+ virtual uint32_t getRecordCount() const = 0;<br class="">+ virtual std::string getName() const = 0;<br class="">+ virtual llvm::Optional<RecordType> getItemAtIndex(uint32_t Index) const = 0;<br class="">+ virtual bool getNext(RecordType &Record) = 0;<br class="">+ virtual void reset() = 0;<br class="">+ virtual std::unique_ptr<IPDBDataStream> clone() const = 0;<br class="">+};<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,33 @@<br class="">+//===- IPDBEnumChildren.h - base interface for child enumerator -*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBENUMCHILDREN_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBENUMCHILDREN_H<br class="">+<br class="">+#include <memory><br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+template <typename ChildType> class IPDBEnumChildren {<br class="">+public:<br class="">+ typedef std::unique_ptr<ChildType> ChildTypePtr;<br class="">+ typedef std::unique_ptr<IPDBEnumChildren<ChildType>> MyTypePtr;<br class="">+<br class="">+ virtual ~IPDBEnumChildren() {}<br class="">+<br class="">+ virtual uint32_t getChildCount() const = 0;<br class="">+ virtual ChildTypePtr getChildAtIndex(uint32_t Index) const = 0;<br class="">+ virtual ChildTypePtr getNext() = 0;<br class="">+ virtual void reset() = 0;<br class="">+ virtual MyTypePtr clone() const = 0;<br class="">+};<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBLineNumber.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,36 @@<br class="">+//===- IPDBLineNumber.h - base interface for PDB line no. info ---*- C++-*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBLINENUMBER_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBLINENUMBER_H<br class="">+<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class IPDBLineNumber {<br class="">+public:<br class="">+ virtual ~IPDBLineNumber();<br class="">+<br class="">+ virtual uint32_t getLineNumber() const = 0;<br class="">+ virtual uint32_t getLineNumberEnd() const = 0;<br class="">+ virtual uint32_t getColumnNumber() const = 0;<br class="">+ virtual uint32_t getColumnNumberEnd() const = 0;<br class="">+ virtual uint32_t getAddressSection() const = 0;<br class="">+ virtual uint32_t getAddressOffset() const = 0;<br class="">+ virtual uint32_t getRelativeVirtualAddress() const = 0;<br class="">+ virtual uint64_t getVirtualAddress() const = 0;<br class="">+ virtual uint32_t getLength() const = 0;<br class="">+ virtual uint32_t getSourceFileId() const = 0;<br class="">+ virtual uint32_t getCompilandId() const = 0;<br class="">+ virtual bool isStatement() const = 0;<br class="">+};<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,209 @@<br class="">+//===- IPDBRawSymbol.h - base interface for PDB symbol types ----*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H<br class="">+<br class="">+#include <memory><br class="">+<br class="">+#include "llvm/ADT/SmallVector.h"<br class="">+#include "llvm/ADT/StringRef.h"<br class="">+#include "llvm/Support/COFF.h"<br class="">+#include "llvm/Support/raw_ostream.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+/// IPDBRawSymbol defines an interface used to represent an arbitrary symbol.<br class="">+/// It exposes a monolithic interface consisting of accessors for the union of<br class="">+/// all properties that are valid for any symbol type. This interface is then<br class="">+/// wrapped by a concrete class which exposes only those set of methods valid<br class="">+/// for this particular symbol type. See PDBSymbol.h for more details.<br class="">+class IPDBRawSymbol {<br class="">+public:<br class="">+ virtual ~IPDBRawSymbol();<br class="">+<br class="">+ virtual void dump(llvm::raw_ostream &OS) const = 0;<br class="">+<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findChildren(PDB_SymType Type, StringRef Name,<br class="">+ PDB_NameSearchFlags Flags) const = 0;<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,<br class="">+ uint32_t RVA) const = 0;<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findInlineFramesByRVA(uint32_t RVA) const = 0;<br class="">+<br class="">+ virtual void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const = 0;<br class="">+ virtual PDB_MemberAccess getAccess() const = 0;<br class="">+ virtual uint32_t getAddressOffset() const = 0;<br class="">+ virtual uint32_t getAddressSection() const = 0;<br class="">+ virtual uint32_t getAge() const = 0;<br class="">+ virtual uint32_t getArrayIndexTypeId() const = 0;<br class="">+ virtual uint32_t getBackEndBuild() const = 0;<br class="">+ virtual uint32_t getBackEndMajor() const = 0;<br class="">+ virtual uint32_t getBackEndMinor() const = 0;<br class="">+ virtual uint32_t getBaseDataOffset() const = 0;<br class="">+ virtual uint32_t getBaseDataSlot() const = 0;<br class="">+ virtual uint32_t getBaseSymbolId() const = 0;<br class="">+ virtual PDB_BuiltinType getBuiltinType() const = 0;<br class="">+ virtual uint32_t getBitPosition() const = 0;<br class="">+ virtual PDB_CallingConv getCallingConvention() const = 0;<br class="">+ virtual uint32_t getClassParentId() const = 0;<br class="">+ virtual std::string getCompilerName() const = 0;<br class="">+ virtual uint32_t getCount() const = 0;<br class="">+ virtual uint32_t getCountLiveRanges() const = 0;<br class="">+ virtual uint32_t getFrontEndBuild() const = 0;<br class="">+ virtual uint32_t getFrontEndMajor() const = 0;<br class="">+ virtual uint32_t getFrontEndMinor() const = 0;<br class="">+ virtual PDB_Lang getLanguage() const = 0;<br class="">+ virtual uint32_t getLexicalParentId() const = 0;<br class="">+ virtual std::string getLibraryName() const = 0;<br class="">+ virtual uint32_t getLiveRangeStartAddressOffset() const = 0;<br class="">+ virtual uint32_t getLiveRangeStartAddressSection() const = 0;<br class="">+ virtual uint32_t getLiveRangeStartRelativeVirtualAddress() const = 0;<br class="">+ virtual uint32_t getLocalBasePointerRegisterId() const = 0;<br class="">+ virtual uint32_t getLowerBoundId() const = 0;<br class="">+ virtual uint32_t getMemorySpaceKind() const = 0;<br class="">+ virtual std::string getName() const = 0;<br class="">+ virtual uint32_t getNumberOfAcceleratorPointerTags() const = 0;<br class="">+ virtual uint32_t getNumberOfColumns() const = 0;<br class="">+ virtual uint32_t getNumberOfModifiers() const = 0;<br class="">+ virtual uint32_t getNumberOfRegisterIndices() const = 0;<br class="">+ virtual uint32_t getNumberOfRows() const = 0;<br class="">+ virtual std::string getObjectFileName() const = 0;<br class="">+ virtual uint32_t getOemId() const = 0;<br class="">+ virtual uint32_t getOemSymbolId() const = 0;<br class="">+ virtual uint32_t getOffsetInUdt() const = 0;<br class="">+ virtual PDB_Cpu getPlatform() const = 0;<br class="">+ virtual uint32_t getRank() const = 0;<br class="">+ virtual uint32_t getRegisterId() const = 0;<br class="">+ virtual uint32_t getRegisterType() const = 0;<br class="">+ virtual uint32_t getRelativeVirtualAddress() const = 0;<br class="">+ virtual uint32_t getSamplerSlot() const = 0;<br class="">+ virtual uint32_t getSignature() const = 0;<br class="">+ virtual uint32_t getSizeInUdt() const = 0;<br class="">+ virtual uint32_t getSlot() const = 0;<br class="">+ virtual std::string getSourceFileName() const = 0;<br class="">+ virtual uint32_t getStride() const = 0;<br class="">+ virtual uint32_t getSubTypeId() const = 0;<br class="">+ virtual std::string getSymbolsFileName() const = 0;<br class="">+ virtual uint32_t getSymIndexId() const = 0;<br class="">+ virtual uint32_t getTargetOffset() const = 0;<br class="">+ virtual uint32_t getTargetRelativeVirtualAddress() const = 0;<br class="">+ virtual uint64_t getTargetVirtualAddress() const = 0;<br class="">+ virtual uint32_t getTargetSection() const = 0;<br class="">+ virtual uint32_t getTextureSlot() const = 0;<br class="">+ virtual uint32_t getTimeStamp() const = 0;<br class="">+ virtual uint32_t getToken() const = 0;<br class="">+ virtual uint32_t getTypeId() const = 0;<br class="">+ virtual uint32_t getUavSlot() const = 0;<br class="">+ virtual std::string getUndecoratedName() const = 0;<br class="">+ virtual uint32_t getUnmodifiedTypeId() const = 0;<br class="">+ virtual uint32_t getUpperBoundId() const = 0;<br class="">+ virtual uint32_t getVirtualBaseDispIndex() const = 0;<br class="">+ virtual uint32_t getVirtualBaseOffset() const = 0;<br class="">+ virtual uint32_t getVirtualTableShapeId() const = 0;<br class="">+ virtual PDB_DataKind getDataKind() const = 0;<br class="">+ virtual PDB_SymType getSymTag() const = 0;<br class="">+ virtual PDB_UniqueId getGuid() const = 0;<br class="">+ virtual int32_t getOffset() const = 0;<br class="">+ virtual int32_t getThisAdjust() const = 0;<br class="">+ virtual int32_t getVirtualBasePointerOffset() const = 0;<br class="">+ virtual PDB_LocType getLocationType() const = 0;<br class="">+ virtual COFF::MachineTypes getMachineType() const = 0;<br class="">+ virtual PDB_ThunkOrdinal getThunkOrdinal() const = 0;<br class="">+ virtual uint64_t getLength() const = 0;<br class="">+ virtual uint64_t getLiveRangeLength() const = 0;<br class="">+ virtual uint64_t getVirtualAddress() const = 0;<br class="">+ virtual PDB_UdtType getUdtKind() const = 0;<br class="">+ virtual bool hasConstructor() const = 0;<br class="">+ virtual bool hasCustomCallingConvention() const = 0;<br class="">+ virtual bool hasFarReturn() const = 0;<br class="">+ virtual bool isCode() const = 0;<br class="">+ virtual bool isCompilerGenerated() const = 0;<br class="">+ virtual bool isConstType() const = 0;<br class="">+ virtual bool isEditAndContinueEnabled() const = 0;<br class="">+ virtual bool isFunction() const = 0;<br class="">+ virtual bool getAddressTaken() const = 0;<br class="">+ virtual bool getNoStackOrdering() const = 0;<br class="">+ virtual bool hasAlloca() const = 0;<br class="">+ virtual bool hasAssignmentOperator() const = 0;<br class="">+ virtual bool hasCTypes() const = 0;<br class="">+ virtual bool hasCastOperator() const = 0;<br class="">+ virtual bool hasDebugInfo() const = 0;<br class="">+ virtual bool hasEH() const = 0;<br class="">+ virtual bool hasEHa() const = 0;<br class="">+ virtual bool hasInlAsm() const = 0;<br class="">+ virtual bool hasInlineAttribute() const = 0;<br class="">+ virtual bool hasInterruptReturn() const = 0;<br class="">+ virtual bool hasLongJump() const = 0;<br class="">+ virtual bool hasManagedCode() const = 0;<br class="">+ virtual bool hasNestedTypes() const = 0;<br class="">+ virtual bool hasNoInlineAttribute() const = 0;<br class="">+ virtual bool hasNoReturnAttribute() const = 0;<br class="">+ virtual bool hasOptimizedCodeDebugInfo() const = 0;<br class="">+ virtual bool hasOverloadedOperator() const = 0;<br class="">+ virtual bool hasSEH() const = 0;<br class="">+ virtual bool hasSecurityChecks() const = 0;<br class="">+ virtual bool hasSetJump() const = 0;<br class="">+ virtual bool hasStrictGSCheck() const = 0;<br class="">+ virtual bool isAcceleratorGroupSharedLocal() const = 0;<br class="">+ virtual bool isAcceleratorPointerTagLiveRange() const = 0;<br class="">+ virtual bool isAcceleratorStubFunction() const = 0;<br class="">+ virtual bool isAggregated() const = 0;<br class="">+ virtual bool isIntroVirtualFunction() const = 0;<br class="">+ virtual bool isCVTCIL() const = 0;<br class="">+ virtual bool isConstructorVirtualBase() const = 0;<br class="">+ virtual bool isCxxReturnUdt() const = 0;<br class="">+ virtual bool isDataAligned() const = 0;<br class="">+ virtual bool isHLSLData() const = 0;<br class="">+ virtual bool isHotpatchable() const = 0;<br class="">+ virtual bool isIndirectVirtualBaseClass() const = 0;<br class="">+ virtual bool isInterfaceUdt() const = 0;<br class="">+ virtual bool isIntrinsic() const = 0;<br class="">+ virtual bool isLTCG() const = 0;<br class="">+ virtual bool isLocationControlFlowDependent() const = 0;<br class="">+ virtual bool isMSILNetmodule() const = 0;<br class="">+ virtual bool isMatrixRowMajor() const = 0;<br class="">+ virtual bool isManagedCode() const = 0;<br class="">+ virtual bool isMSILCode() const = 0;<br class="">+ virtual bool isMultipleInheritance() const = 0;<br class="">+ virtual bool isNaked() const = 0;<br class="">+ virtual bool isNested() const = 0;<br class="">+ virtual bool isOptimizedAway() const = 0;<br class="">+ virtual bool isPacked() const = 0;<br class="">+ virtual bool isPointerBasedOnSymbolValue() const = 0;<br class="">+ virtual bool isPointerToDataMember() const = 0;<br class="">+ virtual bool isPointerToMemberFunction() const = 0;<br class="">+ virtual bool isPureVirtual() const = 0;<br class="">+ virtual bool isRValueReference() const = 0;<br class="">+ virtual bool isRefUdt() const = 0;<br class="">+ virtual bool isReference() const = 0;<br class="">+ virtual bool isRestrictedType() const = 0;<br class="">+ virtual bool isReturnValue() const = 0;<br class="">+ virtual bool isSafeBuffers() const = 0;<br class="">+ virtual bool isScoped() const = 0;<br class="">+ virtual bool isSdl() const = 0;<br class="">+ virtual bool isSingleInheritance() const = 0;<br class="">+ virtual bool isSplitted() const = 0;<br class="">+ virtual bool isStatic() const = 0;<br class="">+ virtual bool hasPrivateSymbols() const = 0;<br class="">+ virtual bool isUnalignedType() const = 0;<br class="">+ virtual bool isUnreached() const = 0;<br class="">+ virtual bool isValueUdt() const = 0;<br class="">+ virtual bool isVirtual() const = 0;<br class="">+ virtual bool isVirtualBaseClass() const = 0;<br class="">+ virtual bool isVirtualInheritance() const = 0;<br class="">+ virtual bool isVolatileType() const = 0;<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,37 @@<br class="">+//===- IPDBSession.h - base interface for a PDB symbol context --*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBSESSION_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBSESSION_H<br class="">+<br class="">+#include <memory><br class="">+<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolExe;<br class="">+<br class="">+/// IPDBSession defines an interface used to provide a context for querying<br class="">+/// debug information from a debug data source (for example, a PDB).<br class="">+class IPDBSession {<br class="">+public:<br class="">+ virtual ~IPDBSession();<br class="">+<br class="">+ virtual uint64_t getLoadAddress() const = 0;<br class="">+ virtual void setLoadAddress(uint64_t Address) = 0;<br class="">+ virtual std::unique_ptr<PDBSymbolExe> getGlobalScope() const = 0;<br class="">+ virtual std::unique_ptr<PDBSymbol> getSymbolById() const = 0;<br class="">+ virtual std::unique_ptr<IPDBSourceFile> getSourceFileById() const = 0;<br class="">+<br class="">+ virtual std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const = 0;<br class="">+};<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSourceFile.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,33 @@<br class="">+//===- IPDBSourceFile.h - base interface for a PDB source file --*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBSOURCEFILE_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBSOURCEFILE_H<br class="">+<br class="">+#include <memory><br class="">+<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+/// IPDBSourceFile defines an interface used to represent source files whose<br class="">+/// information are stored in the PDB.<br class="">+class IPDBSourceFile {<br class="">+public:<br class="">+ virtual ~IPDBSourceFile();<br class="">+<br class="">+ virtual std::string getFileName() const = 0;<br class="">+ virtual uint32_t getUniqueId() const = 0;<br class="">+ virtual std::string getChecksum() const = 0;<br class="">+ virtual PDB_Checksum getChecksumType() const = 0;<br class="">+ virtual std::unique_ptr<IPDBEnumCompilands> getCompilands() const = 0;<br class="">+};<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDB.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,24 @@<br class="">+//===- PDB.h - base header file for creating a PDB reader -------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDB_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDB_H<br class="">+<br class="">+#include <memory><br class="">+<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+class StringRef;<br class="">+<br class="">+std::unique_ptr<IPDBSession> createPDBReader(PDB_ReaderType Type,<br class="">+ StringRef Path);<br class="">+}<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbol.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,70 @@<br class="">+//===- PDBSymbol.h - base class for user-facing symbol types -----*- C++-*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_IPDBSYMBOL_H<br class="">+#define LLVM_DEBUGINFO_PDB_IPDBSYMBOL_H<br class="">+<br class="">+#include <memory><br class="">+<br class="">+#include "llvm/ADT/StringRef.h"<br class="">+#include "llvm/Support/raw_ostream.h"<br class="">+#include "llvm/Support/Casting.h"<br class="">+<br class="">+#include "IPDBRawSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+#define FORWARD_SYMBOL_METHOD(MethodName) \<br class="">+ auto MethodName() const->decltype(RawSymbol->MethodName()) { \<br class="">+ return RawSymbol->MethodName(); \<br class="">+ }<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class IPDBRawSymbol;<br class="">+<br class="">+/// PDBSymbol defines the base of the inheritance hierarchy for concrete symbol<br class="">+/// types (e.g. functions, executables, vtables, etc). All concrete symbol<br class="">+/// types inherit from PDBSymbol and expose the exact set of methods that are<br class="">+/// valid for that particular symbol type, as described in the Microsoft<br class="">+/// reference "Lexical and Class Hierarchy of Symbol Types":<br class="">+/// <a href="https://msdn.microsoft.com/en-us/library/370hs6k4.aspx" class="">https://msdn.microsoft.com/en-us/library/370hs6k4.aspx</a><br class="">+class PDBSymbol {<br class="">+protected:<br class="">+ PDBSymbol(std::unique_ptr<IPDBRawSymbol> Symbol);<br class="">+<br class="">+public:<br class="">+ static std::unique_ptr<PDBSymbol><br class="">+ create(std::unique_ptr<IPDBRawSymbol> Symbol);<br class="">+<br class="">+ virtual ~PDBSymbol();<br class="">+<br class="">+ /// Dumps the contents of a symbol a raw_ostream. By default this will just<br class="">+ /// call dump() on the underlying RawSymbol, which allows us to discover<br class="">+ /// unknown properties, but individual implementations of PDBSymbol may<br class="">+ /// override the behavior to only dump known fields.<br class="">+ virtual void dump(llvm::raw_ostream &OS) const;<br class="">+<br class="">+ PDB_SymType getSymTag() const;<br class="">+<br class="">+ std::unique_ptr<IPDBEnumSymbols><br class="">+ findChildren(PDB_SymType Type, StringRef Name,<br class="">+ PDB_NameSearchFlags Flags) const;<br class="">+ std::unique_ptr<IPDBEnumSymbols> findChildrenByRVA(PDB_SymType Type,<br class="">+ StringRef Name,<br class="">+ PDB_NameSearchFlags Flags,<br class="">+ uint32_t RVA) const;<br class="">+ std::unique_ptr<IPDBEnumSymbols> findInlineFramesByRVA(uint32_t RVA) const;<br class="">+<br class="">+protected:<br class="">+ const std::unique_ptr<IPDBRawSymbol> RawSymbol;<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,37 @@<br class="">+//===- PDBSymbolAnnotation.h - Accessors for querying PDB annotations ---*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLANNOTATION_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLANNOTATION_H<br class="">+<br class="">+#include <string><br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolAnnotation : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolAnnotation(std::unique_ptr<IPDBRawSymbol> AnnotationSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(getDataKind)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ // FORWARD_SYMBOL_METHOD(getValue)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Annotation;<br class="">+ }<br class="">+};<br class="">+}<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLANNOTATION_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,39 @@<br class="">+//===- PDBSymbolBlock.h - Accessors for querying PDB blocks -------------*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLBLOCK_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLBLOCK_H<br class="">+<br class="">+#include <string><br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolBlock : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolBlock(std::unique_ptr<IPDBRawSymbol> BlockSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Block;<br class="">+ }<br class="">+};<br class="">+}<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLBLOCK_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,36 @@<br class="">+//===- PDBSymbolCompiland.h - Accessors for querying PDB compilands -----*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILAND_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILAND_H<br class="">+<br class="">+#include <string><br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolCompiland : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolCompiland(std::unique_ptr<IPDBRawSymbol> CompilandSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(isEditAndContinueEnabled)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLibraryName)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSourceFileName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Compiland;<br class="">+ }<br class="">+};<br class="">+}<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILAND_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,50 @@<br class="">+//===- PDBSymbolCompilandDetails.h - PDB compiland details ------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDDETAILS_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDDETAILS_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolCompilandDetails : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolCompilandDetails(std::unique_ptr<IPDBRawSymbol> DetailsSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getBackEndBuild)<br class="">+ FORWARD_SYMBOL_METHOD(getBackEndMajor)<br class="">+ FORWARD_SYMBOL_METHOD(getBackEndMinor)<br class="">+ FORWARD_SYMBOL_METHOD(getCompilerName)<br class="">+ FORWARD_SYMBOL_METHOD(isEditAndContinueEnabled)<br class="">+ FORWARD_SYMBOL_METHOD(getFrontEndBuild)<br class="">+ FORWARD_SYMBOL_METHOD(getFrontEndMajor)<br class="">+ FORWARD_SYMBOL_METHOD(getFrontEndMinor)<br class="">+ FORWARD_SYMBOL_METHOD(hasDebugInfo)<br class="">+ FORWARD_SYMBOL_METHOD(hasManagedCode)<br class="">+ FORWARD_SYMBOL_METHOD(hasSecurityChecks)<br class="">+ FORWARD_SYMBOL_METHOD(isCVTCIL)<br class="">+ FORWARD_SYMBOL_METHOD(isDataAligned)<br class="">+ FORWARD_SYMBOL_METHOD(isHotpatchable)<br class="">+ FORWARD_SYMBOL_METHOD(isLTCG)<br class="">+ FORWARD_SYMBOL_METHOD(isMSILNetmodule)<br class="">+ FORWARD_SYMBOL_METHOD(getLanguage)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getPlatform)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::CompilandDetails;<br class="">+ }<br class="">+};<br class="">+<br class="">+}; // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBFUNCTION_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,34 @@<br class="">+//===- PDBSymbolCompilandEnv.h - compiland environment variables *- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDENV_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDENV_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolCompilandEnv : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolCompilandEnv(std::unique_ptr<IPDBRawSymbol> CompilandEnvSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ std::string getValue() const;<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::CompilandEnv;<br class="">+ }<br class="">+};<br class="">+<br class="">+}; // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCOMPILANDENV_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,38 @@<br class="">+//===- PDBSymbolCustom.h - compiler-specific types --------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLCUSTOM_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLCUSTOM_H<br class="">+<br class="">+#include "llvm/ADT/SmallVector.h"<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+/// PDBSymbolCustom represents symbols that are compiler-specific and do not<br class="">+/// fit anywhere else in the lexical hierarchy.<br class="">+/// <a href="https://msdn.microsoft.com/en-us/library/d88sf09h.aspx" class="">https://msdn.microsoft.com/en-us/library/d88sf09h.aspx</a><br class="">+class PDBSymbolCustom : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolCustom(std::unique_ptr<IPDBRawSymbol> CustomSymbol);<br class="">+<br class="">+ void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Custom;<br class="">+ }<br class="">+};<br class="">+<br class="">+}; // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLCUSTOM_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolData.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,56 @@<br class="">+//===- PDBSymbolData.h - PDB data (e.g. variable) accessors -----*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLDATA_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLDATA_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolData : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolData(std::unique_ptr<IPDBRawSymbol> DataSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAccess)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressTaken)<br class="">+ FORWARD_SYMBOL_METHOD(getBitPosition)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isCompilerGenerated)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getDataKind)<br class="">+ FORWARD_SYMBOL_METHOD(isAggregated)<br class="">+ FORWARD_SYMBOL_METHOD(isSplitted)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getRegisterId)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSlot)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getToken)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ // FORWARD_SYMBOL_METHOD(getValue)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Data;<br class="">+ }<br class="">+};<br class="">+<br class="">+}; // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLDATA_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolExe.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,41 @@<br class="">+//===- PDBSymbolExe.h - Accessors for querying executables in a PDB ----*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H<br class="">+<br class="">+#include <string><br class="">+<br class="">+#include "llvm/Support/COFF.h"<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolExe : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolExe(std::unique_ptr<IPDBRawSymbol> ExeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAge)<br class="">+ FORWARD_SYMBOL_METHOD(getGuid)<br class="">+ FORWARD_SYMBOL_METHOD(hasCTypes)<br class="">+ FORWARD_SYMBOL_METHOD(hasPrivateSymbols)<br class="">+ FORWARD_SYMBOL_METHOD(getMachineType)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSignature)<br class="">+ FORWARD_SYMBOL_METHOD(getSymbolsFileName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Exe;<br class="">+ }<br class="">+};<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLEXE_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,70 @@<br class="">+//===- PDBSymbolFunc.h - class representing a function instance -*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolFunc : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolFunc(std::unique_ptr<IPDBRawSymbol> FuncSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAccess)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)<br class="">+ FORWARD_SYMBOL_METHOD(hasFarReturn)<br class="">+ FORWARD_SYMBOL_METHOD(hasAlloca)<br class="">+ FORWARD_SYMBOL_METHOD(hasEH)<br class="">+ FORWARD_SYMBOL_METHOD(hasEHa)<br class="">+ FORWARD_SYMBOL_METHOD(hasInlAsm)<br class="">+ FORWARD_SYMBOL_METHOD(hasLongJump)<br class="">+ FORWARD_SYMBOL_METHOD(hasSEH)<br class="">+ FORWARD_SYMBOL_METHOD(hasSecurityChecks)<br class="">+ FORWARD_SYMBOL_METHOD(hasSetJump)<br class="">+ FORWARD_SYMBOL_METHOD(hasInterruptReturn)<br class="">+ FORWARD_SYMBOL_METHOD(isIntroVirtualFunction)<br class="">+ FORWARD_SYMBOL_METHOD(hasInlineAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(isNaked)<br class="">+ FORWARD_SYMBOL_METHOD(isStatic)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoInlineAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoReturnAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(isUnreached)<br class="">+ FORWARD_SYMBOL_METHOD(getNoStackOrdering)<br class="">+ FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo)<br class="">+ FORWARD_SYMBOL_METHOD(isPureVirtual)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getToken)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(getUndecoratedName)<br class="">+ FORWARD_SYMBOL_METHOD(isVirtual)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualBaseOffset)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Function;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,46 @@<br class="">+//===- PDBSymbolFuncDebugEnd.h - function end bounds info -------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGEND_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGEND_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolFuncDebugEnd : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolFuncDebugEnd(std::unique_ptr<IPDBRawSymbol> FuncDebugEndSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)<br class="">+ FORWARD_SYMBOL_METHOD(hasFarReturn)<br class="">+ FORWARD_SYMBOL_METHOD(hasInterruptReturn)<br class="">+ FORWARD_SYMBOL_METHOD(isStatic)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoInlineAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoReturnAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(isUnreached)<br class="">+ FORWARD_SYMBOL_METHOD(getOffset)<br class="">+ FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::FuncDebugEnd;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGEND_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,46 @@<br class="">+//===- PDBSymbolFuncDebugStart.h - function start bounds info ---*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGSTART_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGSTART_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolFuncDebugStart : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolFuncDebugStart(std::unique_ptr<IPDBRawSymbol> FuncDebugStartSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)<br class="">+ FORWARD_SYMBOL_METHOD(hasFarReturn)<br class="">+ FORWARD_SYMBOL_METHOD(hasInterruptReturn)<br class="">+ FORWARD_SYMBOL_METHOD(isStatic)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoInlineAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoReturnAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(isUnreached)<br class="">+ FORWARD_SYMBOL_METHOD(getOffset)<br class="">+ FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::FuncDebugStart;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNCDEBUGSTART_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,46 @@<br class="">+//===- PDBSymbolLabel.h - label info ----------------------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLLABEL_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLLABEL_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolLabel : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolLabel(std::unique_ptr<IPDBRawSymbol> LabelSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)<br class="">+ FORWARD_SYMBOL_METHOD(hasFarReturn)<br class="">+ FORWARD_SYMBOL_METHOD(hasInterruptReturn)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoInlineAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(hasNoReturnAttribute)<br class="">+ FORWARD_SYMBOL_METHOD(isUnreached)<br class="">+ FORWARD_SYMBOL_METHOD(getOffset)<br class="">+ FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Label;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLLABEL_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,44 @@<br class="">+//===- PDBSymbolPublicSymbol.h - public symbol info -------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLPUBLICSYMBOL_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLPUBLICSYMBOL_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolPublicSymbol : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolPublicSymbol(std::unique_ptr<IPDBRawSymbol> PublicSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(isCode)<br class="">+ FORWARD_SYMBOL_METHOD(isFunction)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLocationType)<br class="">+ FORWARD_SYMBOL_METHOD(isManagedCode)<br class="">+ FORWARD_SYMBOL_METHOD(isMSILCode)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getUndecoratedName)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::PublicSymbol;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLPUBLICSYMBOL_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,54 @@<br class="">+//===- PDBSymbolThunk.h - Support for querying PDB thunks ---------------*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H<br class="">+<br class="">+#include <string><br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolThunk : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolThunk(std::unique_ptr<IPDBRawSymbol> ThunkSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAccess)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getAddressSection)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(isIntroVirtualFunction)<br class="">+ FORWARD_SYMBOL_METHOD(isStatic)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(isPureVirtual)<br class="">+ FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTargetOffset)<br class="">+ FORWARD_SYMBOL_METHOD(getTargetRelativeVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getTargetVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getTargetSection)<br class="">+ FORWARD_SYMBOL_METHOD(getThunkOrdinal)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVirtual)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualAddress)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualBaseOffset)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Thunk;<br class="">+ }<br class="">+};<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTHUNK_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,40 @@<br class="">+//===- PDBSymbolTypeArray.h - array type information ------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEARRAY_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEARRAY_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeArray : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeArray(std::unique_ptr<IPDBRawSymbol> ArrayTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getArrayIndexTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getCount)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getRank)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::ArrayType;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEARRAY_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,57 @@<br class="">+//===- PDBSymbolTypeBaseClass.h - base class type information ---*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBASECLASS_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBASECLASS_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeBaseClass : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeBaseClass(std::unique_ptr<IPDBRawSymbol> BaseClassTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getAccess)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(hasConstructor)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(hasAssignmentOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasCastOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasNestedTypes)<br class="">+ FORWARD_SYMBOL_METHOD(isIndirectVirtualBaseClass)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(isNested)<br class="">+ FORWARD_SYMBOL_METHOD(getOffset)<br class="">+ FORWARD_SYMBOL_METHOD(hasOverloadedOperator)<br class="">+ FORWARD_SYMBOL_METHOD(isPacked)<br class="">+ FORWARD_SYMBOL_METHOD(isScoped)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(getUdtKind)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(isVirtualBaseClass)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualBaseDispIndex)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualBasePointerOffset)<br class="">+ // FORWARD_SYMBOL_METHOD(getVirtualBaseTableType)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualTableShapeId)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::BaseClass;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBASECLASS_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,37 @@<br class="">+//===- PDBSymbolTypeBuiltin.h - builtin type information --------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBUILTIN_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBUILTIN_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeBuiltin : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeBuiltin(std::unique_ptr<IPDBRawSymbol> BuiltinTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getBuiltinType)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::BuiltinType;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEBUILTIN_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,33 @@<br class="">+//===- PDBSymbolTypeCustom.h - custom compiler type information -*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPECUSTOM_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPECUSTOM_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeCustom : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeCustom(std::unique_ptr<IPDBRawSymbol> CustomTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getOemId)<br class="">+ FORWARD_SYMBOL_METHOD(getOemSymbolId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::CustomType;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPECUSTOM_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,33 @@<br class="">+//===- PDBSymbolTypeDimension.h - array dimension type info -----*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEDIMENSION_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEDIMENSION_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeDimension : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeDimension(std::unique_ptr<IPDBRawSymbol> DimensionTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getLowerBoundId)<br class="">+ FORWARD_SYMBOL_METHOD(getUpperBoundId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Dimension;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEDIMENSION_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,48 @@<br class="">+//===- PDBSymbolTypeEnum.h - enum type info ---------------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEENUM_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEENUM_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeEnum : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeEnum(std::unique_ptr<IPDBRawSymbol> EnumTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getBuiltinType)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(hasConstructor)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(hasAssignmentOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasCastOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasNestedTypes)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(isNested)<br class="">+ FORWARD_SYMBOL_METHOD(hasOverloadedOperator)<br class="">+ FORWARD_SYMBOL_METHOD(isPacked)<br class="">+ FORWARD_SYMBOL_METHOD(isScoped)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Enum;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEENUM_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,34 @@<br class="">+//===- PDBSymbolTypeFriend.h - friend type info -----------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFRIEND_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFRIEND_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeFriend : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeFriend(std::unique_ptr<IPDBRawSymbol> FriendTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Friend;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFRIEND_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,34 @@<br class="">+//===- PDBSymbolTypeFunctionArg.h - function arg type info ------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONARG_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONARG_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeFunctionArg : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeFunctionArg(std::unique_ptr<IPDBRawSymbol> FuncArgTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::FunctionArg;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONARG_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,41 @@<br class="">+//===- PDBSymbolTypeFunctionSig.h - function signature type info *- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONSIG_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONSIG_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeFunctionSig : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeFunctionSig(std::unique_ptr<IPDBRawSymbol> FuncSigTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getCallingConvention)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getCount)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ // FORWARD_SYMBOL_METHOD(getObjectPointerType)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getThisAdjust)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::FunctionSig;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEFUNCTIONSIG_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,32 @@<br class="">+//===- PDBSymbolTypeManaged.h - managed type info ---------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEMANAGED_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEMANAGED_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeManaged : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeManaged(std::unique_ptr<IPDBRawSymbol> ManagedTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::ManagedType;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEMANAGED_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,38 @@<br class="">+//===- PDBSymbolTypePointer.h - pointer type info ---------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEPOINTER_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEPOINTER_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypePointer : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypePointer(std::unique_ptr<IPDBRawSymbol> PointerTypeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isReference)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::PointerType;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEPOINTER_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,51 @@<br class="">+//===- PDBSymbolTypeTypedef.h - typedef type info ---------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPETYPEDEF_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPETYPEDEF_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeTypedef : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeTypedef(std::unique_ptr<IPDBRawSymbol> TypedefSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getBuiltinType)<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(hasConstructor)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(hasAssignmentOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasCastOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasNestedTypes)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(isNested)<br class="">+ FORWARD_SYMBOL_METHOD(hasOverloadedOperator)<br class="">+ FORWARD_SYMBOL_METHOD(isPacked)<br class="">+ FORWARD_SYMBOL_METHOD(isReference)<br class="">+ FORWARD_SYMBOL_METHOD(isScoped)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(getUdtKind)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualTableShapeId)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::Typedef;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPETYPEDEF_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,48 @@<br class="">+//===- PDBSymbolTypeUDT.h - UDT type info -----------------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEUDT_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEUDT_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeUDT : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeUDT(std::unique_ptr<IPDBRawSymbol> UDTSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(hasConstructor)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(hasAssignmentOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasCastOperator)<br class="">+ FORWARD_SYMBOL_METHOD(hasNestedTypes)<br class="">+ FORWARD_SYMBOL_METHOD(getLength)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(isNested)<br class="">+ FORWARD_SYMBOL_METHOD(hasOverloadedOperator)<br class="">+ FORWARD_SYMBOL_METHOD(isPacked)<br class="">+ FORWARD_SYMBOL_METHOD(isScoped)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getUdtKind)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(getVirtualTableShapeId)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::UDT;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEUDT_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,37 @@<br class="">+//===- PDBSymbolTypeVTable.h - VTable type info -----------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLE_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLE_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeVTable : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeVTable(std::unique_ptr<IPDBRawSymbol> VtblSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getClassParentId)<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(getTypeId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::VTable;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLE_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,36 @@<br class="">+//===- PDBSymbolTypeVTableShape.h - VTable shape info -----------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLESHAPE_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLESHAPE_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolTypeVTableShape : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolTypeVTableShape(std::unique_ptr<IPDBRawSymbol> VtblShapeSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(isConstType)<br class="">+ FORWARD_SYMBOL_METHOD(getCount)<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+ FORWARD_SYMBOL_METHOD(isUnalignedType)<br class="">+ FORWARD_SYMBOL_METHOD(isVolatileType)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::VTableShape;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLTYPEVTABLESHAPE_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,30 @@<br class="">+//===- PDBSymbolUnknown.h - unknown symbol type -----------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLUNKNOWN_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLUNKNOWN_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolUnknown : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolUnknown(std::unique_ptr<IPDBRawSymbol> UnknownSymbol);<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return (S->getSymTag() == PDB_SymType::None ||<br class="">+ S->getSymTag() >= PDB_SymType::Max);<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLUNKNOWN_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,33 @@<br class="">+//===- PDBSymbolUsingNamespace.h - using namespace info ---------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLUSINGNAMESPACE_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBSYMBOLUSINGNAMESPACE_H<br class="">+<br class="">+#include "PDBSymbol.h"<br class="">+#include "PDBTypes.h"<br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbolUsingNamespace : public PDBSymbol {<br class="">+public:<br class="">+ PDBSymbolUsingNamespace(std::unique_ptr<IPDBRawSymbol> UsingSymbol);<br class="">+<br class="">+ FORWARD_SYMBOL_METHOD(getLexicalParentId)<br class="">+ FORWARD_SYMBOL_METHOD(getName)<br class="">+ FORWARD_SYMBOL_METHOD(getSymIndexId)<br class="">+<br class="">+ static bool classof(const PDBSymbol *S) {<br class="">+ return S->getSymTag() == PDB_SymType::UsingNamespace;<br class="">+ }<br class="">+};<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLUSINGNAMESPACE_H<br class=""><br class="">Added: llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h (added)<br class="">+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,350 @@<br class="">+//===- PDBTypes.h - Defines enums for various fields contained in PDB ---*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#ifndef LLVM_DEBUGINFO_PDB_PDBTYPES_H<br class="">+#define LLVM_DEBUGINFO_PDB_PDBTYPES_H<br class="">+<br class="">+#include <stdint.h><br class="">+<br class="">+namespace llvm {<br class="">+<br class="">+class PDBSymbol;<br class="">+class PDBSymbolCompiland;<br class="">+class PDBSymbolFunc;<br class="">+class PDBSymbolExe;<br class="">+<br class="">+class IPDBDataStream;<br class="">+template <class T> class IPDBEnumChildren;<br class="">+class IPDBRawSymbol;<br class="">+class IPDBSession;<br class="">+class IPDBSourceFile;<br class="">+<br class="">+typedef IPDBEnumChildren<IPDBRawSymbol> IPDBEnumSymbols;<br class="">+typedef IPDBEnumChildren<IPDBSourceFile> IPDBEnumSourceFiles;<br class="">+typedef IPDBEnumChildren<IPDBDataStream> IPDBEnumDataStreams;<br class="">+typedef IPDBEnumChildren<PDBSymbolCompiland> IPDBEnumCompilands;<br class="">+<br class="">+class PDBSymbolExe;<br class="">+class PDBSymbolCompiland;<br class="">+class PDBSymbolCompilandDetails;<br class="">+class PDBSymbolCompilandEnv;<br class="">+class PDBSymbolFunc;<br class="">+class PDBSymbolBlock;<br class="">+class PDBSymbolData;<br class="">+class PDBSymbolAnnotation;<br class="">+class PDBSymbolLabel;<br class="">+class PDBSymbolPublicSymbol;<br class="">+class PDBSymbolTypeUDT;<br class="">+class PDBSymbolTypeEnum;<br class="">+class PDBSymbolTypeFunctionSig;<br class="">+class PDBSymbolTypePointer;<br class="">+class PDBSymbolTypeArray;<br class="">+class PDBSymbolTypeBuiltin;<br class="">+class PDBSymbolTypeTypedef;<br class="">+class PDBSymbolTypeBaseClass;<br class="">+class PDBSymbolTypeFriend;<br class="">+class PDBSymbolTypeFunctionArg;<br class="">+class PDBSymbolFuncDebugStart;<br class="">+class PDBSymbolFuncDebugEnd;<br class="">+class PDBSymbolUsingNamespace;<br class="">+class PDBSymbolTypeVTableShape;<br class="">+class PDBSymbolTypeVTable;<br class="">+class PDBSymbolCustom;<br class="">+class PDBSymbolThunk;<br class="">+class PDBSymbolTypeCustom;<br class="">+class PDBSymbolTypeManaged;<br class="">+class PDBSymbolTypeDimension;<br class="">+class PDBSymbolUnknown;<br class="">+<br class="">+/// Specifies which PDB reader implementation is to be used. Only a value<br class="">+/// of PDB_ReaderType::DIA is supported.<br class="">+enum class PDB_ReaderType {<br class="">+ SystemDefault = 0,<br class="">+#if defined(_MSC_VER)<br class="">+ DIA = 1,<br class="">+#endif<br class="">+};<br class="">+<br class="">+/// Defines a 128-bit unique identifier. This maps to a GUID on Windows, but<br class="">+/// is abstracted here for the purposes of non-Windows platforms that don't have<br class="">+/// the GUID structure defined.<br class="">+struct PDB_UniqueId {<br class="">+ uint64_t HighPart;<br class="">+ uint64_t LowPart;<br class="">+};<br class="">+<br class="">+/// An enumeration indicating the type of data contained in this table.<br class="">+enum class PDB_TableType {<br class="">+ Symbols,<br class="">+ SourceFiles,<br class="">+ LineNumbers,<br class="">+ SectionContribs,<br class="">+ Segments,<br class="">+ InjectedSources,<br class="">+ FrameData<br class="">+};<br class="">+<br class="">+/// Defines flags used for enumerating child symbols. This corresponds to the<br class="">+/// NameSearchOptions enumeration which is documented here:<br class="">+/// <a href="https://msdn.microsoft.com/en-us/library/yat28ads.aspx" class="">https://msdn.microsoft.com/en-us/library/yat28ads.aspx</a><br class="">+enum PDB_NameSearchFlags {<br class="">+ NS_Default = 0x0,<br class="">+ NS_CaseSensitive = 0x1,<br class="">+ NS_CaseInsensitive = 0x2,<br class="">+ NS_FileNameExtMatch = 0x4,<br class="">+ NS_Regex = 0x8,<br class="">+ NS_UndecoratedName = 0x10<br class="">+};<br class="">+<br class="">+/// Specifies the hash algorithm that a source file from a PDB was hashed with.<br class="">+/// This corresponds to the CV_SourceChksum_t enumeration and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/e96az21x.aspx" class="">https://msdn.microsoft.com/en-us/library/e96az21x.aspx</a><br class="">+enum class PDB_Checksum { None = 0, MD5 = 1, SHA1 = 2 };<br class="">+<br class="">+/// These values correspond to the CV_CPU_TYPE_e enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx" class="">https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx</a><br class="">+enum class PDB_Cpu {<br class="">+ Intel8080 = 0x0,<br class="">+ Intel8086 = 0x1,<br class="">+ Intel80286 = 0x2,<br class="">+ Intel80386 = 0x3,<br class="">+ Intel80486 = 0x4,<br class="">+ Pentium = 0x5,<br class="">+ PentiumPro = 0x6,<br class="">+ Pentium3 = 0x7,<br class="">+ MIPS = 0x10,<br class="">+ MIPS16 = 0x11,<br class="">+ MIPS32 = 0x12,<br class="">+ MIPS64 = 0x13,<br class="">+ MIPSI = 0x14,<br class="">+ MIPSII = 0x15,<br class="">+ MIPSIII = 0x16,<br class="">+ MIPSIV = 0x17,<br class="">+ MIPSV = 0x18,<br class="">+ M68000 = 0x20,<br class="">+ M68010 = 0x21,<br class="">+ M68020 = 0x22,<br class="">+ M68030 = 0x23,<br class="">+ M68040 = 0x24,<br class="">+ Alpha = 0x30,<br class="">+ Alpha21164 = 0x31,<br class="">+ Alpha21164A = 0x32,<br class="">+ Alpha21264 = 0x33,<br class="">+ Alpha21364 = 0x34,<br class="">+ PPC601 = 0x40,<br class="">+ PPC603 = 0x41,<br class="">+ PPC604 = 0x42,<br class="">+ PPC620 = 0x43,<br class="">+ PPCFP = 0x44,<br class="">+ PPCBE = 0x45,<br class="">+ SH3 = 0x50,<br class="">+ SH3E = 0x51,<br class="">+ SH3DSP = 0x52,<br class="">+ SH4 = 0x53,<br class="">+ SHMedia = 0x54,<br class="">+ ARM3 = 0x60,<br class="">+ ARM4 = 0x61,<br class="">+ ARM4T = 0x62,<br class="">+ ARM5 = 0x63,<br class="">+ ARM5T = 0x64,<br class="">+ ARM6 = 0x65,<br class="">+ ARM_XMAC = 0x66,<br class="">+ ARM_WMMX = 0x67,<br class="">+ ARM7 = 0x68,<br class="">+ Omni = 0x70,<br class="">+ Ia64 = 0x80,<br class="">+ Ia64_2 = 0x81,<br class="">+ CEE = 0x90,<br class="">+ AM33 = 0xa0,<br class="">+ M32R = 0xb0,<br class="">+ TriCore = 0xc0,<br class="">+ X64 = 0xd0,<br class="">+ EBC = 0xe0,<br class="">+ Thumb = 0xf0,<br class="">+ ARMNT = 0xf4,<br class="">+ D3D11_Shader = 0x100,<br class="">+};<br class="">+<br class="">+/// These values correspond to the CV_call_e enumeration, and are documented<br class="">+/// at the following locations:<br class="">+/// <a href="https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx" class="">https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx</a><br class="">+/// <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx" class="">https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx</a><br class="">+///<br class="">+enum class PDB_CallingConv {<br class="">+ NearCdecl = 0x00,<br class="">+ FarCdecl = 0x01,<br class="">+ NearPascal = 0x02,<br class="">+ FarPascal = 0x03,<br class="">+ NearFastcall = 0x04,<br class="">+ FarFastcall = 0x05,<br class="">+ Skipped = 0x06,<br class="">+ NearStdcall = 0x07,<br class="">+ FarStdcall = 0x08,<br class="">+ NearSyscall = 0x09,<br class="">+ FarSyscall = 0x0a,<br class="">+ Thiscall = 0x0b,<br class="">+ MipsCall = 0x0c,<br class="">+ Generic = 0x0d,<br class="">+ Alphacall = 0x0e,<br class="">+ Ppccall = 0x0f,<br class="">+ SuperHCall = 0x10,<br class="">+ Armcall = 0x11,<br class="">+ AM33call = 0x12,<br class="">+ Tricall = 0x13,<br class="">+ Sh5call = 0x14,<br class="">+ M32R = 0x15,<br class="">+ Clrcall = 0x16,<br class="">+ Inline = 0x17,<br class="">+ NearVectorcall = 0x18,<br class="">+ Reserved = 0x19,<br class="">+};<br class="">+<br class="">+/// These values correspond to the CV_CFL_LANG enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx" class="">https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx</a><br class="">+enum class PDB_Lang {<br class="">+ C = 0x00,<br class="">+ Cpp = 0x01,<br class="">+ Fortran = 0x02,<br class="">+ Masm = 0x03,<br class="">+ Pascal = 0x04,<br class="">+ Basic = 0x05,<br class="">+ Cobol = 0x06,<br class="">+ Link = 0x07,<br class="">+ Cvtres = 0x08,<br class="">+ Cvtpgd = 0x09,<br class="">+ CSharp = 0x0a,<br class="">+ VB = 0x0b,<br class="">+ ILAsm = 0x0c,<br class="">+ Java = 0x0d,<br class="">+ JScript = 0x0e,<br class="">+ MSIL = 0x0f,<br class="">+ HLSL = 0x10<br class="">+};<br class="">+<br class="">+/// These values correspond to the DataKind enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/b2x2t313.aspx" class="">https://msdn.microsoft.com/en-us/library/b2x2t313.aspx</a><br class="">+enum class PDB_DataKind {<br class="">+ Unknown,<br class="">+ Local,<br class="">+ StaticLocal,<br class="">+ Param,<br class="">+ ObjectPtr,<br class="">+ FileStatic,<br class="">+ Global,<br class="">+ Member,<br class="">+ StaticMember,<br class="">+ Constant<br class="">+};<br class="">+<br class="">+/// These values correspond to the SymTagEnum enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/bkedss5f.aspx" class="">https://msdn.microsoft.com/en-us/library/bkedss5f.aspx</a><br class="">+enum class PDB_SymType {<br class="">+ None,<br class="">+ Exe,<br class="">+ Compiland,<br class="">+ CompilandDetails,<br class="">+ CompilandEnv,<br class="">+ Function,<br class="">+ Block,<br class="">+ Data,<br class="">+ Annotation,<br class="">+ Label,<br class="">+ PublicSymbol,<br class="">+ UDT,<br class="">+ Enum,<br class="">+ FunctionSig,<br class="">+ PointerType,<br class="">+ ArrayType,<br class="">+ BuiltinType,<br class="">+ Typedef,<br class="">+ BaseClass,<br class="">+ Friend,<br class="">+ FunctionArg,<br class="">+ FuncDebugStart,<br class="">+ FuncDebugEnd,<br class="">+ UsingNamespace,<br class="">+ VTableShape,<br class="">+ VTable,<br class="">+ Custom,<br class="">+ Thunk,<br class="">+ CustomType,<br class="">+ ManagedType,<br class="">+ Dimension,<br class="">+ Max<br class="">+};<br class="">+<br class="">+/// These values correspond to the LocationType enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/f57kaez3.aspx" class="">https://msdn.microsoft.com/en-us/library/f57kaez3.aspx</a><br class="">+enum class PDB_LocType {<br class="">+ Null,<br class="">+ Static,<br class="">+ TLS,<br class="">+ RegRel,<br class="">+ ThisRel,<br class="">+ Enregistered,<br class="">+ BitField,<br class="">+ Slot,<br class="">+ IlRel,<br class="">+ MetaData,<br class="">+ Constant,<br class="">+ Max<br class="">+};<br class="">+<br class="">+/// These values correspond to the THUNK_ORDINAL enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/dh0k8hft.aspx" class="">https://msdn.microsoft.com/en-us/library/dh0k8hft.aspx</a><br class="">+enum class PDB_ThunkOrdinal {<br class="">+ Standard,<br class="">+ ThisAdjustor,<br class="">+ Vcall,<br class="">+ Pcode,<br class="">+ UnknownLoad,<br class="">+ TrampIncremental,<br class="">+ BranchIsland<br class="">+};<br class="">+<br class="">+/// These values correspond to the UdtKind enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/wcstk66t.aspx" class="">https://msdn.microsoft.com/en-us/library/wcstk66t.aspx</a><br class="">+enum class PDB_UdtType { Struct, Class, Union, Interface };<br class="">+<br class="">+/// These values correspond to the StackFrameTypeEnum enumeration, and are<br class="">+/// documented here: <a href="https://msdn.microsoft.com/en-us/library/bc5207xw.aspx" class="">https://msdn.microsoft.com/en-us/library/bc5207xw.aspx</a>.<br class="">+enum class PDB_StackFrameType { FPO, KernelTrap, KernelTSS, EBP, FrameData };<br class="">+<br class="">+/// These values correspond to the StackFrameTypeEnum enumeration, and are<br class="">+/// documented here: <a href="https://msdn.microsoft.com/en-us/library/bc5207xw.aspx" class="">https://msdn.microsoft.com/en-us/library/bc5207xw.aspx</a>.<br class="">+enum class PDB_MemoryType { Code, Data, Stack, HeapCode };<br class="">+<br class="">+/// These values correspond to the Basictype enumeration, and are documented<br class="">+/// here: <a href="https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx" class="">https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx</a><br class="">+enum class PDB_BuiltinType {<br class="">+ None = 0,<br class="">+ Void = 1,<br class="">+ Char = 2,<br class="">+ WCharT = 3,<br class="">+ Int = 6,<br class="">+ UInt = 7,<br class="">+ Float = 8,<br class="">+ BCD = 9,<br class="">+ Bool = 10,<br class="">+ Long = 13,<br class="">+ ULong = 14,<br class="">+ Currency = 25,<br class="">+ Date = 26,<br class="">+ Variant = 27,<br class="">+ Complex = 28,<br class="">+ Bitfield = 29,<br class="">+ BSTR = 30,<br class="">+ HResult = 31<br class="">+};<br class="">+<br class="">+enum class PDB_MemberAccess { Private = 1, Protected = 2, Public = 3 };<br class="">+<br class="">+} // namespace llvm<br class="">+<br class="">+#endif<br class=""><br class="">Modified: llvm/trunk/lib/DebugInfo/CMakeLists.txt<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CMakeLists.txt?rev=228428&r1=228427&r2=228428&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CMakeLists.txt?rev=228428&r1=228427&r2=228428&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/CMakeLists.txt (original)<br class="">+++ llvm/trunk/lib/DebugInfo/CMakeLists.txt Fri Feb 6 13:44:09 2015<br class="">@@ -1,2 +1,5 @@<br class=""><br class="">-add_subdirectory(DWARF)<br class="">\ No newline at end of file<br class="">+add_subdirectory(DWARF)<br class="">+if (MSVC)<br class="">+ add_subdirectory(PDB)<br class="">+endif()<br class="">\ No newline at end of file<br class=""><br class="">Modified: llvm/trunk/lib/DebugInfo/LLVMBuild.txt<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/LLVMBuild.txt?rev=228428&r1=228427&r2=228428&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/LLVMBuild.txt?rev=228428&r1=228427&r2=228428&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/LLVMBuild.txt (original)<br class="">+++ llvm/trunk/lib/DebugInfo/LLVMBuild.txt Fri Feb 6 13:44:09 2015<br class="">@@ -16,7 +16,7 @@<br class=""> ;===------------------------------------------------------------------------===;<br class=""><br class=""> [common]<br class="">-subdirectories = DWARF<br class="">+subdirectories = DWARF PDB<br class=""><br class=""> [component_0]<br class=""> type = Group<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,7 @@<br class="">+add_llvm_library(LLVMDebugInfoPDB<br class="">+ PDB.cpp<br class="">+ PDBInterfaceAnchors.cpp<br class="">+ PDBSymbol.cpp<br class="">+ PDBSymbolCompilandEnv.cpp<br class="">+ PDBSymbolCustom.cpp<br class="">+ )<br class=""><br class="">Copied: llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt (from r228421, llvm/trunk/lib/DebugInfo/LLVMBuild.txt)<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt?p2=llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt&p1=llvm/trunk/lib/DebugInfo/LLVMBuild.txt&r1=228421&r2=228428&rev=228428&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt?p2=llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt&p1=llvm/trunk/lib/DebugInfo/LLVMBuild.txt&r1=228421&r2=228428&rev=228428&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/LLVMBuild.txt (original)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/LLVMBuild.txt Fri Feb 6 13:44:09 2015<br class="">@@ -1,4 +1,4 @@<br class="">-;===- ./lib/DebugInfo/LLVMBuild.txt ----------------------------*- Conf -*--===;<br class="">+;===- ./lib/DebugInfo/PDB/LLVMBuild.txt ------------------------*- Conf -*--===;<br class=""> ;<br class=""> ; The LLVM Compiler Infrastructure<br class=""> ;<br class="">@@ -15,10 +15,9 @@<br class=""> ;<br class=""> ;===------------------------------------------------------------------------===;<br class=""><br class="">-[common]<br class="">-subdirectories = DWARF<br class="">-<br class=""> [component_0]<br class="">-type = Group<br class="">-name = DebugInfo<br class="">-parent = $ROOT<br class="">+type = Library<br class="">+name = DebugInfoPDB<br class="">+parent = DebugInfo<br class="">+required_libraries = Support<br class="">+<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/PDB.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDB.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDB.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/PDB.cpp (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/PDB.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,21 @@<br class="">+//===- PDB.cpp - base header file for creating a PDB reader -----*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include "llvm/ADT/StringRef.h"<br class="">+<br class="">+#include "llvm/DebugInfo/PDB/PDB.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBSession.h"<br class="">+<br class="">+using namespace llvm;<br class="">+<br class="">+std::unique_ptr<IPDBSession> llvm::createPDBReader(PDB_ReaderType Type,<br class="">+ StringRef Path) {<br class="">+ // Create the correct concrete instance type based on the value of Type.<br class="">+ return nullptr;<br class="">+}<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,101 @@<br class="">+//===- PDBInterfaceAnchors.h - defines class anchor funcions ----*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+// Class anchors are necessary per the LLVM Coding style guide, to ensure that<br class="">+// the vtable is only generated in this object file, and not in every object<br class="">+// file that incldues the corresponding header.<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include "llvm/DebugInfo/PDB/IPDBDataStream.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBSession.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBSourceFile.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br class="">+<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolData.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"<br class="">+<br class="">+using namespace llvm;<br class="">+<br class="">+IPDBSession::~IPDBSession() {}<br class="">+<br class="">+IPDBDataStream::~IPDBDataStream() {}<br class="">+<br class="">+IPDBRawSymbol::~IPDBRawSymbol() {}<br class="">+<br class="">+IPDBSourceFile::~IPDBSourceFile() {}<br class="">+<br class="">+IPDBLineNumber::~IPDBLineNumber() {}<br class="">+<br class="">+// All of the concrete symbol types have their methods declared inline through<br class="">+// the use of a forwarding macro, so the constructor should be declared out of<br class="">+// line to get the vtable in this file.<br class="">+#define FORWARD_SYMBOL_CONSTRUCTOR(ClassName) \<br class="">+ ClassName::ClassName(std::unique_ptr<IPDBRawSymbol> Symbol) \<br class="">+ : PDBSymbol(std::move(Symbol)) {}<br class="">+<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolAnnotation)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolBlock)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompiland)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandDetails)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCompilandEnv)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolCustom)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolData)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolExe)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFunc)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugEnd)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolFuncDebugStart)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolLabel)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolPublicSymbol)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolThunk)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeArray)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBaseClass)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeBuiltin)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeCustom)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeDimension)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeEnum)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFriend)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionArg)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeFunctionSig)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeManaged)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypePointer)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeTypedef)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeUDT)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTable)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolTypeVTableShape)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUnknown)<br class="">+FORWARD_SYMBOL_CONSTRUCTOR(PDBSymbolUsingNamespace)<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/PDBSymbol.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,117 @@<br class="">+//===- PDBSymbol.cpp - base class for user-facing symbol types --*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include <memory><br class="">+#include <utility><br class="">+<br class="">+#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbol.h"<br class="">+<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolData.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"<br class="">+<br class="">+using namespace llvm;<br class="">+<br class="">+PDBSymbol::PDBSymbol(std::unique_ptr<IPDBRawSymbol> Symbol)<br class="">+ : RawSymbol(std::move(Symbol)) {}<br class="">+<br class="">+PDBSymbol::~PDBSymbol() {}<br class="">+<br class="">+#define FACTORY_SYMTAG_CASE(Tag, Type) \<br class="">+ case PDB_SymType::Tag: \<br class="">+ return std::unique_ptr<PDBSymbol>(new Type(std::move(Symbol)));<br class="">+<br class="">+std::unique_ptr<PDBSymbol><br class="">+PDBSymbol::create(std::unique_ptr<IPDBRawSymbol> Symbol) {<br class="">+ switch (Symbol->getSymTag()) {<br class="">+ FACTORY_SYMTAG_CASE(Exe, PDBSymbolExe)<br class="">+ FACTORY_SYMTAG_CASE(Compiland, PDBSymbolCompiland)<br class="">+ FACTORY_SYMTAG_CASE(CompilandDetails, PDBSymbolCompilandDetails)<br class="">+ FACTORY_SYMTAG_CASE(CompilandEnv, PDBSymbolCompilandEnv)<br class="">+ FACTORY_SYMTAG_CASE(Function, PDBSymbolFunc)<br class="">+ FACTORY_SYMTAG_CASE(Block, PDBSymbolBlock)<br class="">+ FACTORY_SYMTAG_CASE(Data, PDBSymbolData)<br class="">+ FACTORY_SYMTAG_CASE(Annotation, PDBSymbolAnnotation)<br class="">+ FACTORY_SYMTAG_CASE(Label, PDBSymbolLabel)<br class="">+ FACTORY_SYMTAG_CASE(PublicSymbol, PDBSymbolPublicSymbol)<br class="">+ FACTORY_SYMTAG_CASE(UDT, PDBSymbolTypeUDT)<br class="">+ FACTORY_SYMTAG_CASE(Enum, PDBSymbolTypeEnum)<br class="">+ FACTORY_SYMTAG_CASE(FunctionSig, PDBSymbolTypeFunctionSig)<br class="">+ FACTORY_SYMTAG_CASE(PointerType, PDBSymbolTypePointer)<br class="">+ FACTORY_SYMTAG_CASE(ArrayType, PDBSymbolTypeArray)<br class="">+ FACTORY_SYMTAG_CASE(BuiltinType, PDBSymbolTypeBuiltin)<br class="">+ FACTORY_SYMTAG_CASE(Typedef, PDBSymbolTypeTypedef)<br class="">+ FACTORY_SYMTAG_CASE(BaseClass, PDBSymbolTypeBaseClass)<br class="">+ FACTORY_SYMTAG_CASE(Friend, PDBSymbolTypeFriend)<br class="">+ FACTORY_SYMTAG_CASE(FunctionArg, PDBSymbolTypeFunctionArg)<br class="">+ FACTORY_SYMTAG_CASE(FuncDebugStart, PDBSymbolFuncDebugStart)<br class="">+ FACTORY_SYMTAG_CASE(FuncDebugEnd, PDBSymbolFuncDebugEnd)<br class="">+ FACTORY_SYMTAG_CASE(UsingNamespace, PDBSymbolUsingNamespace)<br class="">+ FACTORY_SYMTAG_CASE(VTableShape, PDBSymbolTypeVTableShape)<br class="">+ FACTORY_SYMTAG_CASE(VTable, PDBSymbolTypeVTable)<br class="">+ FACTORY_SYMTAG_CASE(Custom, PDBSymbolCustom)<br class="">+ FACTORY_SYMTAG_CASE(Thunk, PDBSymbolThunk)<br class="">+ FACTORY_SYMTAG_CASE(CustomType, PDBSymbolTypeCustom)<br class="">+ FACTORY_SYMTAG_CASE(ManagedType, PDBSymbolTypeManaged)<br class="">+ FACTORY_SYMTAG_CASE(Dimension, PDBSymbolTypeDimension)<br class="">+ default:<br class="">+ return std::unique_ptr<PDBSymbol>(new PDBSymbolUnknown(std::move(Symbol)));<br class="">+ }<br class="">+}<br class="">+<br class="">+void PDBSymbol::dump(llvm::raw_ostream &OS) const { RawSymbol->dump(OS); }<br class="">+<br class="">+PDB_SymType PDBSymbol::getSymTag() const { return RawSymbol->getSymTag(); }<br class="">+<br class="">+std::unique_ptr<IPDBEnumSymbols><br class="">+PDBSymbol::findChildren(PDB_SymType Type, StringRef Name,<br class="">+ PDB_NameSearchFlags Flags) const {<br class="">+ return RawSymbol->findChildren(Type, Name, Flags);<br class="">+}<br class="">+<br class="">+std::unique_ptr<IPDBEnumSymbols><br class="">+PDBSymbol::findChildrenByRVA(PDB_SymType Type, StringRef Name,<br class="">+ PDB_NameSearchFlags Flags, uint32_t RVA) const {<br class="">+ return RawSymbol->findChildrenByRVA(Type, Name, Flags, RVA);<br class="">+}<br class="">+<br class="">+std::unique_ptr<IPDBEnumSymbols><br class="">+PDBSymbol::findInlineFramesByRVA(uint32_t RVA) const {<br class="">+ return RawSymbol->findInlineFramesByRVA(RVA);<br class="">+}<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,21 @@<br class="">+//===- PDBSymbolCompilandEnv.cpp - compiland env variables ------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include <utility><br class="">+<br class="">+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"<br class="">+<br class="">+using namespace llvm;<br class="">+<br class="">+std::string PDBSymbolCompilandEnv::getValue() const {<br class="">+ // call RawSymbol->getValue() and convert the result to an std::string.<br class="">+ return std::string();<br class="">+}<br class=""><br class="">Added: llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp (added)<br class="">+++ llvm/trunk/lib/DebugInfo/PDB/PDBSymbolCustom.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,20 @@<br class="">+//===- PDBSymbolCustom.cpp - compiler-specific types ------------*- C++ -*-===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include <utility><br class="">+<br class="">+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"<br class="">+<br class="">+using namespace llvm;<br class="">+<br class="">+void PDBSymbolCustom::getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) {<br class="">+ RawSymbol->getDataBytes(bytes);<br class="">+}<br class=""><br class="">Modified: llvm/trunk/unittests/DebugInfo/CMakeLists.txt<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/CMakeLists.txt?rev=228428&r1=228427&r2=228428&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/CMakeLists.txt?rev=228428&r1=228427&r2=228428&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/unittests/DebugInfo/CMakeLists.txt (original)<br class="">+++ llvm/trunk/unittests/DebugInfo/CMakeLists.txt Fri Feb 6 13:44:09 2015<br class="">@@ -9,3 +9,5 @@ set(DebugInfoSources<br class=""> add_llvm_unittest(DebugInfoTests<br class=""> ${DebugInfoSources}<br class=""> )<br class="">+<br class="">+add_subdirectory(PDB)<br class="">\ No newline at end of file<br class=""><br class="">Added: llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt (added)<br class="">+++ llvm/trunk/unittests/DebugInfo/PDB/CMakeLists.txt Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,11 @@<br class="">+set(LLVM_LINK_COMPONENTS<br class="">+ DebugInfoPDB<br class="">+ )<br class="">+<br class="">+set(DebugInfoPDBSources<br class="">+ PDBApiTest.cpp<br class="">+ )<br class="">+<br class="">+add_llvm_unittest(DebugInfoPDBTests<br class="">+ ${DebugInfoPDBSources}<br class="">+ )<br class=""><br class="">Added: llvm/trunk/unittests/DebugInfo/PDB/Makefile<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/Makefile?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/Makefile?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/unittests/DebugInfo/PDB/Makefile (added)<br class="">+++ llvm/trunk/unittests/DebugInfo/PDB/Makefile Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,16 @@<br class="">+##===- unittests/DebugInfo/PDB/Makefile -------------------*- Makefile -*-===##<br class="">+#<br class="">+# The LLVM Compiler Infrastructure<br class="">+#<br class="">+# This file is distributed under the University of Illinois Open Source<br class="">+# License. See LICENSE.TXT for details.<br class="">+#<br class="">+##===----------------------------------------------------------------------===##<br class="">+<br class="">+LEVEL = ../..<br class="">+TESTNAME = DebugInfoPDB<br class="">+LINK_COMPONENTS := DebugInfoPDB object support<br class="">+<br class="">+include $(LEVEL)/Makefile.config<br class="">+<br class="">+include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest<br class=""><br class="">Added: llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp?rev=228428&view=auto" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp?rev=228428&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp (added)<br class="">+++ llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp Fri Feb 6 13:44:09 2015<br class="">@@ -0,0 +1,349 @@<br class="">+//===- llvm/unittest/DebugInfo/PDB/PDBApiTest.cpp -------------------------===//<br class="">+//<br class="">+// The LLVM Compiler Infrastructure<br class="">+//<br class="">+// This file is distributed under the University of Illinois Open Source<br class="">+// License. See LICENSE.TXT for details.<br class="">+//<br class="">+//===----------------------------------------------------------------------===//<br class="">+<br class="">+#include <hash_map><br class="">+<br class="">+#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"<br class="">+#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolAnnotation.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolBlock.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolData.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFunc.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolLabel.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolThunk.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeArray.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypePointer.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUnknown.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h"<br class="">+#include "llvm/DebugInfo/PDB/PDBTypes.h"<br class="">+#include "gtest/gtest.h"<br class="">+using namespace llvm;<br class="">+<br class="">+namespace {<br class="">+<br class="">+#define MOCK_SYMBOL_ACCESSOR(Func) \<br class="">+ auto Func() const->decltype(((IPDBRawSymbol *)nullptr)->Func()) override { \<br class="">+ typedef decltype(IPDBRawSymbol::Func()) ReturnType; \<br class="">+ return ReturnType(); \<br class="">+ }<br class="">+<br class="">+class MockRawSymbol : public IPDBRawSymbol {<br class="">+public:<br class="">+ MockRawSymbol(PDB_SymType SymType) : Type(SymType) {}<br class="">+<br class="">+ virtual void dump(llvm::raw_ostream &OS) const {}<br class="">+<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findChildren(PDB_SymType Type, StringRef Name,<br class="">+ PDB_NameSearchFlags Flags) const {<br class="">+ return nullptr;<br class="">+ }<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,<br class="">+ uint32_t RVA) const {<br class="">+ return nullptr;<br class="">+ }<br class="">+ virtual std::unique_ptr<IPDBEnumSymbols><br class="">+ findInlineFramesByRVA(uint32_t RVA) const {<br class="">+ return nullptr;<br class="">+ }<br class="">+<br class="">+ virtual void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const {}<br class="">+<br class="">+ PDB_SymType getSymTag() const override { return Type; }<br class="">+<br class="">+ MOCK_SYMBOL_ACCESSOR(getAccess)<br class="">+ MOCK_SYMBOL_ACCESSOR(getAddressOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getAddressSection)<br class="">+ MOCK_SYMBOL_ACCESSOR(getAge)<br class="">+ MOCK_SYMBOL_ACCESSOR(getArrayIndexTypeId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBackEndBuild)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBackEndMajor)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBackEndMinor)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBaseDataOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBaseDataSlot)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBaseSymbolId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBuiltinType)<br class="">+ MOCK_SYMBOL_ACCESSOR(getBitPosition)<br class="">+ MOCK_SYMBOL_ACCESSOR(getCallingConvention)<br class="">+ MOCK_SYMBOL_ACCESSOR(getClassParentId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getCompilerName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getCount)<br class="">+ MOCK_SYMBOL_ACCESSOR(getCountLiveRanges)<br class="">+ MOCK_SYMBOL_ACCESSOR(getFrontEndBuild)<br class="">+ MOCK_SYMBOL_ACCESSOR(getFrontEndMajor)<br class="">+ MOCK_SYMBOL_ACCESSOR(getFrontEndMinor)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLanguage)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLexicalParentId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLibraryName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLiveRangeStartAddressOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLiveRangeStartAddressSection)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLiveRangeStartRelativeVirtualAddress)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLocalBasePointerRegisterId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLowerBoundId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getMemorySpaceKind)<br class="">+ MOCK_SYMBOL_ACCESSOR(getName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNumberOfAcceleratorPointerTags)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNumberOfColumns)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNumberOfModifiers)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNumberOfRegisterIndices)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNumberOfRows)<br class="">+ MOCK_SYMBOL_ACCESSOR(getObjectFileName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getOemId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getOemSymbolId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getOffsetInUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(getPlatform)<br class="">+ MOCK_SYMBOL_ACCESSOR(getRank)<br class="">+ MOCK_SYMBOL_ACCESSOR(getRegisterId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getRegisterType)<br class="">+ MOCK_SYMBOL_ACCESSOR(getRelativeVirtualAddress)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSamplerSlot)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSignature)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSizeInUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSlot)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSourceFileName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getStride)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSubTypeId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSymbolsFileName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getSymIndexId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTargetOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTargetRelativeVirtualAddress)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTargetVirtualAddress)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTargetSection)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTextureSlot)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTimeStamp)<br class="">+ MOCK_SYMBOL_ACCESSOR(getToken)<br class="">+ MOCK_SYMBOL_ACCESSOR(getTypeId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getUavSlot)<br class="">+ MOCK_SYMBOL_ACCESSOR(getUndecoratedName)<br class="">+ MOCK_SYMBOL_ACCESSOR(getUnmodifiedTypeId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getUpperBoundId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getVirtualBaseDispIndex)<br class="">+ MOCK_SYMBOL_ACCESSOR(getVirtualBaseOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getVirtualTableShapeId)<br class="">+ MOCK_SYMBOL_ACCESSOR(getDataKind)<br class="">+ MOCK_SYMBOL_ACCESSOR(getGuid)<br class="">+ MOCK_SYMBOL_ACCESSOR(getOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getThisAdjust)<br class="">+ MOCK_SYMBOL_ACCESSOR(getVirtualBasePointerOffset)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLocationType)<br class="">+ MOCK_SYMBOL_ACCESSOR(getMachineType)<br class="">+ MOCK_SYMBOL_ACCESSOR(getThunkOrdinal)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLength)<br class="">+ MOCK_SYMBOL_ACCESSOR(getLiveRangeLength)<br class="">+ MOCK_SYMBOL_ACCESSOR(getVirtualAddress)<br class="">+ MOCK_SYMBOL_ACCESSOR(getUdtKind)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasConstructor)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasCustomCallingConvention)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasFarReturn)<br class="">+ MOCK_SYMBOL_ACCESSOR(isCode)<br class="">+ MOCK_SYMBOL_ACCESSOR(isCompilerGenerated)<br class="">+ MOCK_SYMBOL_ACCESSOR(isConstType)<br class="">+ MOCK_SYMBOL_ACCESSOR(isEditAndContinueEnabled)<br class="">+ MOCK_SYMBOL_ACCESSOR(isFunction)<br class="">+ MOCK_SYMBOL_ACCESSOR(getAddressTaken)<br class="">+ MOCK_SYMBOL_ACCESSOR(getNoStackOrdering)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasAlloca)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasAssignmentOperator)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasCTypes)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasCastOperator)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasDebugInfo)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasEH)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasEHa)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasInlAsm)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasInlineAttribute)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasInterruptReturn)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasLongJump)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasManagedCode)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasNestedTypes)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasNoInlineAttribute)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasNoReturnAttribute)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasOptimizedCodeDebugInfo)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasOverloadedOperator)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasSEH)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasSecurityChecks)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasSetJump)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasStrictGSCheck)<br class="">+ MOCK_SYMBOL_ACCESSOR(isAcceleratorGroupSharedLocal)<br class="">+ MOCK_SYMBOL_ACCESSOR(isAcceleratorPointerTagLiveRange)<br class="">+ MOCK_SYMBOL_ACCESSOR(isAcceleratorStubFunction)<br class="">+ MOCK_SYMBOL_ACCESSOR(isAggregated)<br class="">+ MOCK_SYMBOL_ACCESSOR(isIntroVirtualFunction)<br class="">+ MOCK_SYMBOL_ACCESSOR(isCVTCIL)<br class="">+ MOCK_SYMBOL_ACCESSOR(isConstructorVirtualBase)<br class="">+ MOCK_SYMBOL_ACCESSOR(isCxxReturnUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(isDataAligned)<br class="">+ MOCK_SYMBOL_ACCESSOR(isHLSLData)<br class="">+ MOCK_SYMBOL_ACCESSOR(isHotpatchable)<br class="">+ MOCK_SYMBOL_ACCESSOR(isIndirectVirtualBaseClass)<br class="">+ MOCK_SYMBOL_ACCESSOR(isInterfaceUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(isIntrinsic)<br class="">+ MOCK_SYMBOL_ACCESSOR(isLTCG)<br class="">+ MOCK_SYMBOL_ACCESSOR(isLocationControlFlowDependent)<br class="">+ MOCK_SYMBOL_ACCESSOR(isMSILNetmodule)<br class="">+ MOCK_SYMBOL_ACCESSOR(isMatrixRowMajor)<br class="">+ MOCK_SYMBOL_ACCESSOR(isManagedCode)<br class="">+ MOCK_SYMBOL_ACCESSOR(isMSILCode)<br class="">+ MOCK_SYMBOL_ACCESSOR(isMultipleInheritance)<br class="">+ MOCK_SYMBOL_ACCESSOR(isNaked)<br class="">+ MOCK_SYMBOL_ACCESSOR(isNested)<br class="">+ MOCK_SYMBOL_ACCESSOR(isOptimizedAway)<br class="">+ MOCK_SYMBOL_ACCESSOR(isPacked)<br class="">+ MOCK_SYMBOL_ACCESSOR(isPointerBasedOnSymbolValue)<br class="">+ MOCK_SYMBOL_ACCESSOR(isPointerToDataMember)<br class="">+ MOCK_SYMBOL_ACCESSOR(isPointerToMemberFunction)<br class="">+ MOCK_SYMBOL_ACCESSOR(isPureVirtual)<br class="">+ MOCK_SYMBOL_ACCESSOR(isRValueReference)<br class="">+ MOCK_SYMBOL_ACCESSOR(isRefUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(isReference)<br class="">+ MOCK_SYMBOL_ACCESSOR(isRestrictedType)<br class="">+ MOCK_SYMBOL_ACCESSOR(isReturnValue)<br class="">+ MOCK_SYMBOL_ACCESSOR(isSafeBuffers)<br class="">+ MOCK_SYMBOL_ACCESSOR(isScoped)<br class="">+ MOCK_SYMBOL_ACCESSOR(isSdl)<br class="">+ MOCK_SYMBOL_ACCESSOR(isSingleInheritance)<br class="">+ MOCK_SYMBOL_ACCESSOR(isSplitted)<br class="">+ MOCK_SYMBOL_ACCESSOR(isStatic)<br class="">+ MOCK_SYMBOL_ACCESSOR(hasPrivateSymbols)<br class="">+ MOCK_SYMBOL_ACCESSOR(isUnalignedType)<br class="">+ MOCK_SYMBOL_ACCESSOR(isUnreached)<br class="">+ MOCK_SYMBOL_ACCESSOR(isValueUdt)<br class="">+ MOCK_SYMBOL_ACCESSOR(isVirtual)<br class="">+ MOCK_SYMBOL_ACCESSOR(isVirtualBaseClass)<br class="">+ MOCK_SYMBOL_ACCESSOR(isVirtualInheritance)<br class="">+ MOCK_SYMBOL_ACCESSOR(isVolatileType)<br class="">+<br class="">+private:<br class="">+ PDB_SymType Type;<br class="">+};<br class="">+<br class="">+class PDBApiTest : public testing::Test {<br class="">+public:<br class="">+ std::hash_map<PDB_SymType, std::unique_ptr<PDBSymbol>> SymbolMap;<br class="">+<br class="">+ void SetUp() override {<br class="">+ InsertItemWithTag(PDB_SymType::None);<br class="">+ InsertItemWithTag(PDB_SymType::Exe);<br class="">+ InsertItemWithTag(PDB_SymType::Compiland);<br class="">+ InsertItemWithTag(PDB_SymType::CompilandDetails);<br class="">+ InsertItemWithTag(PDB_SymType::CompilandEnv);<br class="">+ InsertItemWithTag(PDB_SymType::Function);<br class="">+ InsertItemWithTag(PDB_SymType::Block);<br class="">+ InsertItemWithTag(PDB_SymType::Data);<br class="">+ InsertItemWithTag(PDB_SymType::Annotation);<br class="">+ InsertItemWithTag(PDB_SymType::Label);<br class="">+ InsertItemWithTag(PDB_SymType::PublicSymbol);<br class="">+ InsertItemWithTag(PDB_SymType::UDT);<br class="">+ InsertItemWithTag(PDB_SymType::Enum);<br class="">+ InsertItemWithTag(PDB_SymType::FunctionSig);<br class="">+ InsertItemWithTag(PDB_SymType::PointerType);<br class="">+ InsertItemWithTag(PDB_SymType::ArrayType);<br class="">+ InsertItemWithTag(PDB_SymType::BuiltinType);<br class="">+ InsertItemWithTag(PDB_SymType::Typedef);<br class="">+ InsertItemWithTag(PDB_SymType::BaseClass);<br class="">+ InsertItemWithTag(PDB_SymType::Friend);<br class="">+ InsertItemWithTag(PDB_SymType::FunctionArg);<br class="">+ InsertItemWithTag(PDB_SymType::FuncDebugStart);<br class="">+ InsertItemWithTag(PDB_SymType::FuncDebugEnd);<br class="">+ InsertItemWithTag(PDB_SymType::UsingNamespace);<br class="">+ InsertItemWithTag(PDB_SymType::VTableShape);<br class="">+ InsertItemWithTag(PDB_SymType::VTable);<br class="">+ InsertItemWithTag(PDB_SymType::Custom);<br class="">+ InsertItemWithTag(PDB_SymType::Thunk);<br class="">+ InsertItemWithTag(PDB_SymType::CustomType);<br class="">+ InsertItemWithTag(PDB_SymType::ManagedType);<br class="">+ InsertItemWithTag(PDB_SymType::Dimension);<br class="">+ InsertItemWithTag(PDB_SymType::Max);<br class="">+ }<br class="">+<br class="">+private:<br class="">+ void InsertItemWithTag(PDB_SymType Tag) {<br class="">+ auto RawSymbol = std::unique_ptr<IPDBRawSymbol>(new MockRawSymbol(Tag));<br class="">+ auto Symbol = PDBSymbol::create(std::move(RawSymbol));<br class="">+ SymbolMap.insert(std::make_pair(Tag, std::move(Symbol)));<br class="">+ }<br class="">+<br class="">+public:<br class="">+ template <class ExpectedType> void VerifyDyncast(PDB_SymType Tag) {<br class="">+ for (auto item = SymbolMap.begin(); item != SymbolMap.end(); ++item) {<br class="">+ EXPECT_EQ(item->first == Tag, llvm::isa<ExpectedType>(*item->second));<br class="">+ }<br class="">+ }<br class="">+<br class="">+ void VerifyUnknownDyncasts() {<br class="">+ for (auto item = SymbolMap.begin(); item != SymbolMap.end(); ++item) {<br class="">+ bool should_match = false;<br class="">+ if (item->first == PDB_SymType::None || item->first >= PDB_SymType::Max)<br class="">+ should_match = true;<br class="">+<br class="">+ EXPECT_EQ(should_match, llvm::isa<PDBSymbolUnknown>(*item->second));<br class="">+ }<br class="">+ }<br class="">+};<br class="">+<br class="">+TEST_F(PDBApiTest, Dyncast) {<br class="">+<br class="">+ // Most of the types have a one-to-one mapping between Tag and concrete type.<br class="">+ VerifyDyncast<PDBSymbolExe>(PDB_SymType::Exe);<br class="">+ VerifyDyncast<PDBSymbolCompiland>(PDB_SymType::Compiland);<br class="">+ VerifyDyncast<PDBSymbolCompilandDetails>(PDB_SymType::CompilandDetails);<br class="">+ VerifyDyncast<PDBSymbolCompilandEnv>(PDB_SymType::CompilandEnv);<br class="">+ VerifyDyncast<PDBSymbolFunc>(PDB_SymType::Function);<br class="">+ VerifyDyncast<PDBSymbolBlock>(PDB_SymType::Block);<br class="">+ VerifyDyncast<PDBSymbolData>(PDB_SymType::Data);<br class="">+ VerifyDyncast<PDBSymbolAnnotation>(PDB_SymType::Annotation);<br class="">+ VerifyDyncast<PDBSymbolLabel>(PDB_SymType::Label);<br class="">+ VerifyDyncast<PDBSymbolPublicSymbol>(PDB_SymType::PublicSymbol);<br class="">+ VerifyDyncast<PDBSymbolTypeUDT>(PDB_SymType::UDT);<br class="">+ VerifyDyncast<PDBSymbolTypeEnum>(PDB_SymType::Enum);<br class="">+ VerifyDyncast<PDBSymbolTypeFunctionSig>(PDB_SymType::FunctionSig);<br class="">+ VerifyDyncast<PDBSymbolTypePointer>(PDB_SymType::PointerType);<br class="">+ VerifyDyncast<PDBSymbolTypeArray>(PDB_SymType::ArrayType);<br class="">+ VerifyDyncast<PDBSymbolTypeBuiltin>(PDB_SymType::BuiltinType);<br class="">+ VerifyDyncast<PDBSymbolTypeTypedef>(PDB_SymType::Typedef);<br class="">+ VerifyDyncast<PDBSymbolTypeBaseClass>(PDB_SymType::BaseClass);<br class="">+ VerifyDyncast<PDBSymbolTypeFriend>(PDB_SymType::Friend);<br class="">+ VerifyDyncast<PDBSymbolTypeFunctionArg>(PDB_SymType::FunctionArg);<br class="">+ VerifyDyncast<PDBSymbolFuncDebugStart>(PDB_SymType::FuncDebugStart);<br class="">+ VerifyDyncast<PDBSymbolFuncDebugEnd>(PDB_SymType::FuncDebugEnd);<br class="">+ VerifyDyncast<PDBSymbolUsingNamespace>(PDB_SymType::UsingNamespace);<br class="">+ VerifyDyncast<PDBSymbolTypeVTableShape>(PDB_SymType::VTableShape);<br class="">+ VerifyDyncast<PDBSymbolTypeVTable>(PDB_SymType::VTable);<br class="">+ VerifyDyncast<PDBSymbolCustom>(PDB_SymType::Custom);<br class="">+ VerifyDyncast<PDBSymbolThunk>(PDB_SymType::Thunk);<br class="">+ VerifyDyncast<PDBSymbolTypeCustom>(PDB_SymType::CustomType);<br class="">+ VerifyDyncast<PDBSymbolTypeManaged>(PDB_SymType::ManagedType);<br class="">+ VerifyDyncast<PDBSymbolTypeDimension>(PDB_SymType::Dimension);<br class="">+<br class="">+ VerifyUnknownDyncasts();<br class="">+}<br class="">+<br class="">+} // end anonymous namespace<br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@cs.uiuc.edu" class="">llvm-commits@cs.uiuc.edu</a><br class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br class=""></div></blockquote></div><br class=""></div></body></html>