<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>