Run dos2unix against llvm-pdbdump.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227262 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Zachary Turner 2015-01-27 23:02:23 +00:00
parent 08aea7d1b6
commit 7ce32460db
6 changed files with 1612 additions and 1612 deletions

View File

@ -1,28 +1,28 @@
set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK") set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
# Due to a bug in MSVC 2013's installation software, it is possible # Due to a bug in MSVC 2013's installation software, it is possible
# for MSVC 2013 to write the DIA SDK into the Visual Studio 2012 # for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
# install directory. If this happens, the installation is corrupt # install directory. If this happens, the installation is corrupt
# and there's nothing we can do. It happens with enough frequency # and there's nothing we can do. It happens with enough frequency
# though that we should handle it. We do so by simply checking that # though that we should handle it. We do so by simply checking that
# the DIA SDK folder exists. Should this happen you will need to # the DIA SDK folder exists. Should this happen you will need to
# uninstall VS 2012 and then re-install VS 2013. # uninstall VS 2012 and then re-install VS 2013.
if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR}) if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
set(LLVM_LINK_COMPONENTS set(LLVM_LINK_COMPONENTS
Support Support
) )
include_directories(${MSVC_DIA_SDK_DIR}/include) include_directories(${MSVC_DIA_SDK_DIR}/include)
if (CMAKE_SIZEOF_VOID_P EQUAL 8) if (CMAKE_SIZEOF_VOID_P EQUAL 8)
link_directories(${MSVC_DIA_SDK_DIR}/lib/amd64) link_directories(${MSVC_DIA_SDK_DIR}/lib/amd64)
else() else()
link_directories(${MSVC_DIA_SDK_DIR}/lib) link_directories(${MSVC_DIA_SDK_DIR}/lib)
endif() endif()
add_llvm_tool(llvm-pdbdump add_llvm_tool(llvm-pdbdump
llvm-pdbdump.cpp llvm-pdbdump.cpp
DIAExtras.cpp DIAExtras.cpp
DIASymbol.cpp DIASymbol.cpp
) )
target_link_libraries(llvm-pdbdump diaguids) target_link_libraries(llvm-pdbdump diaguids)
endif() endif()

View File

@ -1,176 +1,176 @@
//===- DIAExtras.cpp - Helper classes and functions for DIA C++ ---------*-===// //===- DIAExtras.cpp - Helper classes and functions for DIA C++ ---------*-===//
// //
// The LLVM Compiler Infrastructure // The LLVM Compiler Infrastructure
// //
// This file is distributed under the University of Illinois Open Source // This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details. // License. See LICENSE.TXT for details.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "llvm/Support/Format.h" #include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h" #include "llvm/Support/raw_ostream.h"
#include "llvm-pdbdump.h" #include "llvm-pdbdump.h"
#include "DIAExtras.h" #include "DIAExtras.h"
using namespace llvm; using namespace llvm;
using namespace llvm::sys::windows; using namespace llvm::sys::windows;
#define PRINT_ENUM_VALUE_CASE(Value) \ #define PRINT_ENUM_VALUE_CASE(Value) \
case Value: \ case Value: \
outs() << #Value; \ outs() << #Value; \
break; break;
raw_ostream &llvm::operator<<(raw_ostream &Stream, DiaSymTagEnum SymTag) { raw_ostream &llvm::operator<<(raw_ostream &Stream, DiaSymTagEnum SymTag) {
switch (SymTag) { switch (SymTag) {
PRINT_ENUM_VALUE_CASE(SymTagNull) PRINT_ENUM_VALUE_CASE(SymTagNull)
PRINT_ENUM_VALUE_CASE(SymTagExe) PRINT_ENUM_VALUE_CASE(SymTagExe)
PRINT_ENUM_VALUE_CASE(SymTagCompiland) PRINT_ENUM_VALUE_CASE(SymTagCompiland)
PRINT_ENUM_VALUE_CASE(SymTagCompilandDetails) PRINT_ENUM_VALUE_CASE(SymTagCompilandDetails)
PRINT_ENUM_VALUE_CASE(SymTagCompilandEnv) PRINT_ENUM_VALUE_CASE(SymTagCompilandEnv)
PRINT_ENUM_VALUE_CASE(SymTagFunction) PRINT_ENUM_VALUE_CASE(SymTagFunction)
PRINT_ENUM_VALUE_CASE(SymTagBlock) PRINT_ENUM_VALUE_CASE(SymTagBlock)
PRINT_ENUM_VALUE_CASE(SymTagData) PRINT_ENUM_VALUE_CASE(SymTagData)
PRINT_ENUM_VALUE_CASE(SymTagAnnotation) PRINT_ENUM_VALUE_CASE(SymTagAnnotation)
PRINT_ENUM_VALUE_CASE(SymTagLabel) PRINT_ENUM_VALUE_CASE(SymTagLabel)
PRINT_ENUM_VALUE_CASE(SymTagPublicSymbol) PRINT_ENUM_VALUE_CASE(SymTagPublicSymbol)
PRINT_ENUM_VALUE_CASE(SymTagUDT) PRINT_ENUM_VALUE_CASE(SymTagUDT)
PRINT_ENUM_VALUE_CASE(SymTagEnum) PRINT_ENUM_VALUE_CASE(SymTagEnum)
PRINT_ENUM_VALUE_CASE(SymTagFunctionType) PRINT_ENUM_VALUE_CASE(SymTagFunctionType)
PRINT_ENUM_VALUE_CASE(SymTagPointerType) PRINT_ENUM_VALUE_CASE(SymTagPointerType)
PRINT_ENUM_VALUE_CASE(SymTagArrayType) PRINT_ENUM_VALUE_CASE(SymTagArrayType)
PRINT_ENUM_VALUE_CASE(SymTagBaseType) PRINT_ENUM_VALUE_CASE(SymTagBaseType)
PRINT_ENUM_VALUE_CASE(SymTagTypedef) PRINT_ENUM_VALUE_CASE(SymTagTypedef)
PRINT_ENUM_VALUE_CASE(SymTagBaseClass) PRINT_ENUM_VALUE_CASE(SymTagBaseClass)
PRINT_ENUM_VALUE_CASE(SymTagFriend) PRINT_ENUM_VALUE_CASE(SymTagFriend)
PRINT_ENUM_VALUE_CASE(SymTagFunctionArgType) PRINT_ENUM_VALUE_CASE(SymTagFunctionArgType)
PRINT_ENUM_VALUE_CASE(SymTagFuncDebugStart) PRINT_ENUM_VALUE_CASE(SymTagFuncDebugStart)
PRINT_ENUM_VALUE_CASE(SymTagFuncDebugEnd) PRINT_ENUM_VALUE_CASE(SymTagFuncDebugEnd)
PRINT_ENUM_VALUE_CASE(SymTagUsingNamespace) PRINT_ENUM_VALUE_CASE(SymTagUsingNamespace)
PRINT_ENUM_VALUE_CASE(SymTagVTableShape) PRINT_ENUM_VALUE_CASE(SymTagVTableShape)
PRINT_ENUM_VALUE_CASE(SymTagVTable) PRINT_ENUM_VALUE_CASE(SymTagVTable)
PRINT_ENUM_VALUE_CASE(SymTagCustom) PRINT_ENUM_VALUE_CASE(SymTagCustom)
PRINT_ENUM_VALUE_CASE(SymTagThunk) PRINT_ENUM_VALUE_CASE(SymTagThunk)
PRINT_ENUM_VALUE_CASE(SymTagCustomType) PRINT_ENUM_VALUE_CASE(SymTagCustomType)
PRINT_ENUM_VALUE_CASE(SymTagManagedType) PRINT_ENUM_VALUE_CASE(SymTagManagedType)
PRINT_ENUM_VALUE_CASE(SymTagDimension) PRINT_ENUM_VALUE_CASE(SymTagDimension)
PRINT_ENUM_VALUE_CASE(SymTagCallSite) PRINT_ENUM_VALUE_CASE(SymTagCallSite)
PRINT_ENUM_VALUE_CASE(SymTagInlineSite) PRINT_ENUM_VALUE_CASE(SymTagInlineSite)
PRINT_ENUM_VALUE_CASE(SymTagBaseInterface) PRINT_ENUM_VALUE_CASE(SymTagBaseInterface)
PRINT_ENUM_VALUE_CASE(SymTagVectorType) PRINT_ENUM_VALUE_CASE(SymTagVectorType)
PRINT_ENUM_VALUE_CASE(SymTagMatrixType) PRINT_ENUM_VALUE_CASE(SymTagMatrixType)
PRINT_ENUM_VALUE_CASE(SymTagHLSLType) PRINT_ENUM_VALUE_CASE(SymTagHLSLType)
#if (_MSC_FULL_VER >= 180031101) #if (_MSC_FULL_VER >= 180031101)
PRINT_ENUM_VALUE_CASE(SymTagCaller) PRINT_ENUM_VALUE_CASE(SymTagCaller)
PRINT_ENUM_VALUE_CASE(SymTagCallee) PRINT_ENUM_VALUE_CASE(SymTagCallee)
#endif #endif
PRINT_ENUM_VALUE_CASE(SymTagMax) PRINT_ENUM_VALUE_CASE(SymTagMax)
} }
outs() << " {" << (DWORD)SymTag << "}"; outs() << " {" << (DWORD)SymTag << "}";
return Stream; return Stream;
} }
raw_ostream &llvm::operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType) { raw_ostream &llvm::operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType) {
switch (CpuType) { switch (CpuType) {
PRINT_ENUM_VALUE_CASE(CV_CFL_8080) PRINT_ENUM_VALUE_CASE(CV_CFL_8080)
PRINT_ENUM_VALUE_CASE(CV_CFL_8086) PRINT_ENUM_VALUE_CASE(CV_CFL_8086)
PRINT_ENUM_VALUE_CASE(CV_CFL_80286) PRINT_ENUM_VALUE_CASE(CV_CFL_80286)
PRINT_ENUM_VALUE_CASE(CV_CFL_80386) PRINT_ENUM_VALUE_CASE(CV_CFL_80386)
PRINT_ENUM_VALUE_CASE(CV_CFL_80486) PRINT_ENUM_VALUE_CASE(CV_CFL_80486)
PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUM) PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUM)
PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMPRO) PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMPRO)
PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMIII) PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMIII)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS16) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS16)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS32) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS32)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS64) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS64)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSI) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSI)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSII) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSII)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIII) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIII)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIV) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIV)
PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSV) PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSV)
PRINT_ENUM_VALUE_CASE(CV_CFL_M68000) PRINT_ENUM_VALUE_CASE(CV_CFL_M68000)
PRINT_ENUM_VALUE_CASE(CV_CFL_M68010) PRINT_ENUM_VALUE_CASE(CV_CFL_M68010)
PRINT_ENUM_VALUE_CASE(CV_CFL_M68020) PRINT_ENUM_VALUE_CASE(CV_CFL_M68020)
PRINT_ENUM_VALUE_CASE(CV_CFL_M68030) PRINT_ENUM_VALUE_CASE(CV_CFL_M68030)
PRINT_ENUM_VALUE_CASE(CV_CFL_M68040) PRINT_ENUM_VALUE_CASE(CV_CFL_M68040)
PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA) PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA)
PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164) PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164)
PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164A) PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164A)
PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21264) PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21264)
PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21364) PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21364)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPC601) PRINT_ENUM_VALUE_CASE(CV_CFL_PPC601)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPC603) PRINT_ENUM_VALUE_CASE(CV_CFL_PPC603)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPC604) PRINT_ENUM_VALUE_CASE(CV_CFL_PPC604)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPC620) PRINT_ENUM_VALUE_CASE(CV_CFL_PPC620)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPCFP) PRINT_ENUM_VALUE_CASE(CV_CFL_PPCFP)
PRINT_ENUM_VALUE_CASE(CV_CFL_PPCBE) PRINT_ENUM_VALUE_CASE(CV_CFL_PPCBE)
PRINT_ENUM_VALUE_CASE(CV_CFL_SH3) PRINT_ENUM_VALUE_CASE(CV_CFL_SH3)
PRINT_ENUM_VALUE_CASE(CV_CFL_SH3E) PRINT_ENUM_VALUE_CASE(CV_CFL_SH3E)
PRINT_ENUM_VALUE_CASE(CV_CFL_SH3DSP) PRINT_ENUM_VALUE_CASE(CV_CFL_SH3DSP)
PRINT_ENUM_VALUE_CASE(CV_CFL_SH4) PRINT_ENUM_VALUE_CASE(CV_CFL_SH4)
PRINT_ENUM_VALUE_CASE(CV_CFL_SHMEDIA) PRINT_ENUM_VALUE_CASE(CV_CFL_SHMEDIA)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM3) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM3)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4T) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4T)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5T) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5T)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM6) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM6)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_XMAC) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_XMAC)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_WMMX) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_WMMX)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM7) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM7)
PRINT_ENUM_VALUE_CASE(CV_CFL_OMNI) PRINT_ENUM_VALUE_CASE(CV_CFL_OMNI)
PRINT_ENUM_VALUE_CASE(CV_CFL_IA64) PRINT_ENUM_VALUE_CASE(CV_CFL_IA64)
PRINT_ENUM_VALUE_CASE(CV_CFL_IA64_2) PRINT_ENUM_VALUE_CASE(CV_CFL_IA64_2)
PRINT_ENUM_VALUE_CASE(CV_CFL_CEE) PRINT_ENUM_VALUE_CASE(CV_CFL_CEE)
PRINT_ENUM_VALUE_CASE(CV_CFL_AM33) PRINT_ENUM_VALUE_CASE(CV_CFL_AM33)
PRINT_ENUM_VALUE_CASE(CV_CFL_M32R) PRINT_ENUM_VALUE_CASE(CV_CFL_M32R)
PRINT_ENUM_VALUE_CASE(CV_CFL_TRICORE) PRINT_ENUM_VALUE_CASE(CV_CFL_TRICORE)
PRINT_ENUM_VALUE_CASE(CV_CFL_X64) PRINT_ENUM_VALUE_CASE(CV_CFL_X64)
PRINT_ENUM_VALUE_CASE(CV_CFL_EBC) PRINT_ENUM_VALUE_CASE(CV_CFL_EBC)
PRINT_ENUM_VALUE_CASE(CV_CFL_THUMB) PRINT_ENUM_VALUE_CASE(CV_CFL_THUMB)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARMNT) PRINT_ENUM_VALUE_CASE(CV_CFL_ARMNT)
#if (_MSC_FULL_VER >= 180031101) #if (_MSC_FULL_VER >= 180031101)
PRINT_ENUM_VALUE_CASE(CV_CFL_ARM64) PRINT_ENUM_VALUE_CASE(CV_CFL_ARM64)
#endif #endif
PRINT_ENUM_VALUE_CASE(CV_CFL_D3D11_SHADER) PRINT_ENUM_VALUE_CASE(CV_CFL_D3D11_SHADER)
} }
outs() << " {" << llvm::format_hex((DWORD)CpuType, 2, true) << "}"; outs() << " {" << llvm::format_hex((DWORD)CpuType, 2, true) << "}";
return Stream; return Stream;
} }
raw_ostream &llvm::operator<<(raw_ostream &Stream, raw_ostream &llvm::operator<<(raw_ostream &Stream,
MachineTypeEnum MachineType) { MachineTypeEnum MachineType) {
switch (MachineType) { switch (MachineType) {
PRINT_ENUM_VALUE_CASE(MachineTypeUnknown) PRINT_ENUM_VALUE_CASE(MachineTypeUnknown)
PRINT_ENUM_VALUE_CASE(MachineTypeX86) PRINT_ENUM_VALUE_CASE(MachineTypeX86)
PRINT_ENUM_VALUE_CASE(MachineTypeR3000) PRINT_ENUM_VALUE_CASE(MachineTypeR3000)
PRINT_ENUM_VALUE_CASE(MachineTypeR4000) PRINT_ENUM_VALUE_CASE(MachineTypeR4000)
PRINT_ENUM_VALUE_CASE(MachineTypeR10000) PRINT_ENUM_VALUE_CASE(MachineTypeR10000)
PRINT_ENUM_VALUE_CASE(MachineTypeWCEMIPSv2) PRINT_ENUM_VALUE_CASE(MachineTypeWCEMIPSv2)
PRINT_ENUM_VALUE_CASE(MachineTypeAlpha) PRINT_ENUM_VALUE_CASE(MachineTypeAlpha)
PRINT_ENUM_VALUE_CASE(MachineTypeSH3) PRINT_ENUM_VALUE_CASE(MachineTypeSH3)
PRINT_ENUM_VALUE_CASE(MachineTypeSH3DSP) PRINT_ENUM_VALUE_CASE(MachineTypeSH3DSP)
PRINT_ENUM_VALUE_CASE(MachineTypeSH3E) PRINT_ENUM_VALUE_CASE(MachineTypeSH3E)
PRINT_ENUM_VALUE_CASE(MachineTypeSH4) PRINT_ENUM_VALUE_CASE(MachineTypeSH4)
PRINT_ENUM_VALUE_CASE(MachineTypeSH5) PRINT_ENUM_VALUE_CASE(MachineTypeSH5)
PRINT_ENUM_VALUE_CASE(MachineTypeArm) PRINT_ENUM_VALUE_CASE(MachineTypeArm)
PRINT_ENUM_VALUE_CASE(MachineTypeThumb) PRINT_ENUM_VALUE_CASE(MachineTypeThumb)
PRINT_ENUM_VALUE_CASE(MachineTypeArmNT) PRINT_ENUM_VALUE_CASE(MachineTypeArmNT)
PRINT_ENUM_VALUE_CASE(MachineTypeAM33) PRINT_ENUM_VALUE_CASE(MachineTypeAM33)
PRINT_ENUM_VALUE_CASE(MachineTypePowerPC) PRINT_ENUM_VALUE_CASE(MachineTypePowerPC)
PRINT_ENUM_VALUE_CASE(MachineTypePowerPCFP) PRINT_ENUM_VALUE_CASE(MachineTypePowerPCFP)
PRINT_ENUM_VALUE_CASE(MachineTypeIa64) PRINT_ENUM_VALUE_CASE(MachineTypeIa64)
PRINT_ENUM_VALUE_CASE(MachineTypeMips16) PRINT_ENUM_VALUE_CASE(MachineTypeMips16)
PRINT_ENUM_VALUE_CASE(MachineTypeAlpha64) PRINT_ENUM_VALUE_CASE(MachineTypeAlpha64)
PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu) PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu)
PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu16) PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu16)
PRINT_ENUM_VALUE_CASE(MachineTypeTriCore) PRINT_ENUM_VALUE_CASE(MachineTypeTriCore)
PRINT_ENUM_VALUE_CASE(MachineTypeCEF) PRINT_ENUM_VALUE_CASE(MachineTypeCEF)
PRINT_ENUM_VALUE_CASE(MachineTypeEBC) PRINT_ENUM_VALUE_CASE(MachineTypeEBC)
PRINT_ENUM_VALUE_CASE(MachineTypeAmd64) PRINT_ENUM_VALUE_CASE(MachineTypeAmd64)
PRINT_ENUM_VALUE_CASE(MachineTypeM32R) PRINT_ENUM_VALUE_CASE(MachineTypeM32R)
PRINT_ENUM_VALUE_CASE(MachineTypeCEE) PRINT_ENUM_VALUE_CASE(MachineTypeCEE)
} }
outs() << " {" << llvm::format_hex((DWORD)MachineType, 2, true) << "}"; outs() << " {" << llvm::format_hex((DWORD)MachineType, 2, true) << "}";
return Stream; return Stream;
} }

View File

@ -1,127 +1,127 @@
//===- DIAExtras.h - Helper classes and functions for accessing DIA C++ -*-===// //===- DIAExtras.h - Helper classes and functions for accessing DIA C++ -*-===//
// //
// The LLVM Compiler Infrastructure // The LLVM Compiler Infrastructure
// //
// This file is distributed under the University of Illinois Open Source // This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details. // License. See LICENSE.TXT for details.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
// Defines helper types, classes, and functions for working with DIA. // Defines helper types, classes, and functions for working with DIA.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H #ifndef LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H
#define LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H #define LLVM_TOOLS_LLVMPDBDUMP_DIAEXTRAS_H
#include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallString.h"
#include "llvm/Support/raw_ostream.h" #include "llvm/Support/raw_ostream.h"
#include "COMExtras.h" #include "COMExtras.h"
namespace llvm { namespace llvm {
namespace sys { namespace sys {
namespace windows { namespace windows {
typedef llvm::SmallString<16> DIAString; typedef llvm::SmallString<16> DIAString;
template <class T> class DIAResult { template <class T> class DIAResult {
public: public:
DIAResult() : IsValid(false) {} DIAResult() : IsValid(false) {}
DIAResult(const T &ResultValue) : Result(ResultValue), IsValid(true) {} DIAResult(const T &ResultValue) : Result(ResultValue), IsValid(true) {}
bool hasValue() const { return IsValid; } bool hasValue() const { return IsValid; }
T value() const { return Result; } T value() const { return Result; }
void dump(StringRef Name, unsigned IndentLevel) const { void dump(StringRef Name, unsigned IndentLevel) const {
if (!hasValue()) if (!hasValue())
return; return;
outs().indent(IndentLevel); outs().indent(IndentLevel);
outs() << Name << ": " << value() << "\n"; outs() << Name << ": " << value() << "\n";
} }
private: private:
T Result; T Result;
bool IsValid; bool IsValid;
}; };
template <> template <>
void DIAResult<BOOL>::dump(StringRef Name, unsigned IndentLevel) const { void DIAResult<BOOL>::dump(StringRef Name, unsigned IndentLevel) const {
if (!hasValue()) if (!hasValue())
return; return;
outs().indent(IndentLevel); outs().indent(IndentLevel);
outs() << Name << ": " << (value() ? "true" : "false") << "\n"; outs() << Name << ": " << (value() ? "true" : "false") << "\n";
} }
template <> template <>
void DIAResult<GUID>::dump(StringRef Name, unsigned IndentLevel) const { void DIAResult<GUID>::dump(StringRef Name, unsigned IndentLevel) const {
if (!hasValue()) if (!hasValue())
return; return;
std::string Guid8; std::string Guid8;
CComBSTR GuidBSTR(value()); CComBSTR GuidBSTR(value());
BSTRToUTF8(GuidBSTR.m_str, Guid8); BSTRToUTF8(GuidBSTR.m_str, Guid8);
outs().indent(IndentLevel); outs().indent(IndentLevel);
outs() << Name << ": " << Guid8 << "\n"; outs() << Name << ": " << Guid8 << "\n";
} }
// MSDN documents the IDiaSymbol::get_machineType method as returning a value // MSDN documents the IDiaSymbol::get_machineType method as returning a value
// from the CV_CPU_TYPE_e enumeration. This documentation is wrong, however, // from the CV_CPU_TYPE_e enumeration. This documentation is wrong, however,
// and this method actually returns a value from the IMAGE_FILE_xxx set of // and this method actually returns a value from the IMAGE_FILE_xxx set of
// defines from winnt.h. These correspond to the platform magic number in // defines from winnt.h. These correspond to the platform magic number in
// the COFF file. This enumeration is built from the set of values in winnt.h // the COFF file. This enumeration is built from the set of values in winnt.h
enum MachineTypeEnum { enum MachineTypeEnum {
MachineTypeUnknown = IMAGE_FILE_MACHINE_UNKNOWN, MachineTypeUnknown = IMAGE_FILE_MACHINE_UNKNOWN,
MachineTypeX86 = IMAGE_FILE_MACHINE_I386, MachineTypeX86 = IMAGE_FILE_MACHINE_I386,
MachineTypeR3000 = IMAGE_FILE_MACHINE_R3000, MachineTypeR3000 = IMAGE_FILE_MACHINE_R3000,
MachineTypeR4000 = IMAGE_FILE_MACHINE_R4000, MachineTypeR4000 = IMAGE_FILE_MACHINE_R4000,
MachineTypeR10000 = IMAGE_FILE_MACHINE_R10000, MachineTypeR10000 = IMAGE_FILE_MACHINE_R10000,
MachineTypeWCEMIPSv2 = IMAGE_FILE_MACHINE_WCEMIPSV2, MachineTypeWCEMIPSv2 = IMAGE_FILE_MACHINE_WCEMIPSV2,
MachineTypeAlpha = IMAGE_FILE_MACHINE_ALPHA, MachineTypeAlpha = IMAGE_FILE_MACHINE_ALPHA,
MachineTypeSH3 = IMAGE_FILE_MACHINE_SH3, MachineTypeSH3 = IMAGE_FILE_MACHINE_SH3,
MachineTypeSH3DSP = IMAGE_FILE_MACHINE_SH3DSP, MachineTypeSH3DSP = IMAGE_FILE_MACHINE_SH3DSP,
MachineTypeSH3E = IMAGE_FILE_MACHINE_SH3E, MachineTypeSH3E = IMAGE_FILE_MACHINE_SH3E,
MachineTypeSH4 = IMAGE_FILE_MACHINE_SH4, MachineTypeSH4 = IMAGE_FILE_MACHINE_SH4,
MachineTypeSH5 = IMAGE_FILE_MACHINE_SH5, MachineTypeSH5 = IMAGE_FILE_MACHINE_SH5,
MachineTypeArm = IMAGE_FILE_MACHINE_ARM, MachineTypeArm = IMAGE_FILE_MACHINE_ARM,
MachineTypeThumb = IMAGE_FILE_MACHINE_THUMB, MachineTypeThumb = IMAGE_FILE_MACHINE_THUMB,
MachineTypeArmNT = IMAGE_FILE_MACHINE_ARMNT, MachineTypeArmNT = IMAGE_FILE_MACHINE_ARMNT,
MachineTypeAM33 = IMAGE_FILE_MACHINE_AM33, MachineTypeAM33 = IMAGE_FILE_MACHINE_AM33,
MachineTypePowerPC = IMAGE_FILE_MACHINE_POWERPC, MachineTypePowerPC = IMAGE_FILE_MACHINE_POWERPC,
MachineTypePowerPCFP = IMAGE_FILE_MACHINE_POWERPCFP, MachineTypePowerPCFP = IMAGE_FILE_MACHINE_POWERPCFP,
MachineTypeIa64 = IMAGE_FILE_MACHINE_IA64, MachineTypeIa64 = IMAGE_FILE_MACHINE_IA64,
MachineTypeMips16 = IMAGE_FILE_MACHINE_MIPS16, MachineTypeMips16 = IMAGE_FILE_MACHINE_MIPS16,
MachineTypeAlpha64 = IMAGE_FILE_MACHINE_ALPHA64, MachineTypeAlpha64 = IMAGE_FILE_MACHINE_ALPHA64,
MachineTypeMipsFpu = IMAGE_FILE_MACHINE_MIPSFPU, MachineTypeMipsFpu = IMAGE_FILE_MACHINE_MIPSFPU,
MachineTypeMipsFpu16 = IMAGE_FILE_MACHINE_MIPSFPU16, MachineTypeMipsFpu16 = IMAGE_FILE_MACHINE_MIPSFPU16,
MachineTypeTriCore = IMAGE_FILE_MACHINE_TRICORE, MachineTypeTriCore = IMAGE_FILE_MACHINE_TRICORE,
MachineTypeCEF = IMAGE_FILE_MACHINE_CEF, MachineTypeCEF = IMAGE_FILE_MACHINE_CEF,
MachineTypeEBC = IMAGE_FILE_MACHINE_EBC, MachineTypeEBC = IMAGE_FILE_MACHINE_EBC,
MachineTypeAmd64 = IMAGE_FILE_MACHINE_AMD64, MachineTypeAmd64 = IMAGE_FILE_MACHINE_AMD64,
MachineTypeM32R = IMAGE_FILE_MACHINE_M32R, MachineTypeM32R = IMAGE_FILE_MACHINE_M32R,
MachineTypeCEE = IMAGE_FILE_MACHINE_CEE, MachineTypeCEE = IMAGE_FILE_MACHINE_CEE,
}; };
// SymTagEnum has the unfortunate property that it is not only the name of // SymTagEnum has the unfortunate property that it is not only the name of
// the enum, but also the name of one of the values of the enum. So that we // the enum, but also the name of one of the values of the enum. So that we
// don't have to always type "enum SymTagEnum", we typedef this to a different // don't have to always type "enum SymTagEnum", we typedef this to a different
// name so that we can refer to it more easily. // name so that we can refer to it more easily.
typedef enum SymTagEnum DiaSymTagEnum; typedef enum SymTagEnum DiaSymTagEnum;
typedef CComPtr<IDiaSymbol> DiaSymbolPtr; typedef CComPtr<IDiaSymbol> DiaSymbolPtr;
} // namespace windows } // namespace windows
} // namespace sys } // namespace sys
} // namespace llvm } // namespace llvm
namespace llvm { namespace llvm {
class raw_ostream; class raw_ostream;
raw_ostream &operator<<(raw_ostream &Stream, raw_ostream &operator<<(raw_ostream &Stream,
llvm::sys::windows::DiaSymTagEnum SymTag); llvm::sys::windows::DiaSymTagEnum SymTag);
raw_ostream &operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType); raw_ostream &operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType);
raw_ostream &operator<<(raw_ostream &Stream, raw_ostream &operator<<(raw_ostream &Stream,
llvm::sys::windows::MachineTypeEnum CpuType); llvm::sys::windows::MachineTypeEnum CpuType);
} }
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -1,282 +1,282 @@
//===- DIASymbol.h - Dump debug info from a PDB file ------------*- C++ -*-===// //===- DIASymbol.h - Dump debug info from a PDB file ------------*- C++ -*-===//
// //
// The LLVM Compiler Infrastructure // The LLVM Compiler Infrastructure
// //
// This file is distributed under the University of Illinois Open Source // This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details. // License. See LICENSE.TXT for details.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
// Provides a wrapper around the IDiaSymbol interface. IDiaSymbol is used to // Provides a wrapper around the IDiaSymbol interface. IDiaSymbol is used to
// represent any kind of symbol from functions, to compilands, to source files. // represent any kind of symbol from functions, to compilands, to source files.
// It provides a monolithic interface of close to 200 operations, and the set // It provides a monolithic interface of close to 200 operations, and the set
// of operations that are valid depends on the type of the symbol. Since it is // of operations that are valid depends on the type of the symbol. Since it is
// not clearly documented which set of operations is valid for which type of // not clearly documented which set of operations is valid for which type of
// symbol, the best way of figuring it out is to dump every method for every // symbol, the best way of figuring it out is to dump every method for every
// symbol, and see which methods return errors. This wrapper provides a clean // symbol, and see which methods return errors. This wrapper provides a clean
// way of doing this without involving needing to embed lots of unsightly // way of doing this without involving needing to embed lots of unsightly
// HRESULT checking at every callsite. // HRESULT checking at every callsite.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H #ifndef LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H
#define LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H #define LLVM_TOOLS_LLVMPDBDUMP_DIASYMBOL_H
#include "DIAExtras.h" #include "DIAExtras.h"
#include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallString.h"
namespace llvm { namespace llvm {
namespace sys { namespace sys {
namespace windows { namespace windows {
class DIASymbol { class DIASymbol {
public: public:
DIASymbol(IDiaSymbol *DiaSymbol); DIASymbol(IDiaSymbol *DiaSymbol);
~DIASymbol(); ~DIASymbol();
/// Dumps the value of every property (if it exists) with a default name. /// Dumps the value of every property (if it exists) with a default name.
/// This is useful for understanding what symbol types support what methods /// This is useful for understanding what symbol types support what methods
/// during development time. /// during development time.
void fullDump(int IndentLevel); void fullDump(int IndentLevel);
// TODO: The following methods are present on IDiaSymbol but do not yet have // TODO: The following methods are present on IDiaSymbol but do not yet have
// wrapper methods. // wrapper methods.
// //
// HRESULT get_value(VARIANT *pRetVal) = 0; // HRESULT get_value(VARIANT *pRetVal) = 0;
// HRESULT get_undecoratedNameEx(DWORD undecorateOptions, BSTR *name) = 0; // HRESULT get_undecoratedNameEx(DWORD undecorateOptions, BSTR *name) = 0;
// HRESULT getSrcLineOnTypeDefn(IDiaLineNumber **ppResult) = 0; // HRESULT getSrcLineOnTypeDefn(IDiaLineNumber **ppResult) = 0;
// HRESULT get_dataBytes(DWORD cbData, DWORD *pcbData, BYTE *pbData) = 0; // HRESULT get_dataBytes(DWORD cbData, DWORD *pcbData, BYTE *pbData) = 0;
// HRESULT get_types(DWORD cTypes, DWORD *pcTypes, IDiaSymbol **pTypes) = 0; // HRESULT get_types(DWORD cTypes, DWORD *pcTypes, IDiaSymbol **pTypes) = 0;
// HRESULT get_typeIds(DWORD cTypeIds, DWORD *pcTypeIds, DWORD *pdwTypeIds) = 0; // HRESULT get_typeIds(DWORD cTypeIds, DWORD *pcTypeIds, DWORD *pdwTypeIds) = 0;
// HRESULT get_numericProperties(DWORD cnt, DWORD *pcnt, // HRESULT get_numericProperties(DWORD cnt, DWORD *pcnt,
// DWORD *pProperties) = 0; // DWORD *pProperties) = 0;
// HRESULT get_modifierValues(DWORD cnt, DWORD *pcnt, WORD *pModifiers) = 0; // HRESULT get_modifierValues(DWORD cnt, DWORD *pcnt, WORD *pModifiers) = 0;
// HRESULT get_acceleratorPointerTags(DWORD cnt, DWORD *pcnt, DWORD // HRESULT get_acceleratorPointerTags(DWORD cnt, DWORD *pcnt, DWORD
// *pPointerTags) = 0; // *pPointerTags) = 0;
// HRESULT get_hfaFloat(BOOL *pRetVal) = 0; // HRESULT get_hfaFloat(BOOL *pRetVal) = 0;
// HRESULT get_hfaDouble(BOOL *pRetVal) = 0; // HRESULT get_hfaDouble(BOOL *pRetVal) = 0;
// HRESULT get_paramBasePointerRegisterId(DWORD *pRetVal) = 0; // HRESULT get_paramBasePointerRegisterId(DWORD *pRetVal) = 0;
// HRESULT get_isWinRTPointer(BOOL *pRetVal) = 0; // HRESULT get_isWinRTPointer(BOOL *pRetVal) = 0;
#if (_MSC_FULL_VER >= 180031101) #if (_MSC_FULL_VER >= 180031101)
// These methods are only available on VS 2013 SP 4 and higher. // These methods are only available on VS 2013 SP 4 and higher.
DIAResult<BOOL> isPGO(); DIAResult<BOOL> isPGO();
DIAResult<BOOL> hasValidPGOCounts(); DIAResult<BOOL> hasValidPGOCounts();
DIAResult<BOOL> isOptimizedForSpeed(); DIAResult<BOOL> isOptimizedForSpeed();
DIAResult<DWORD> getPGOEntryCount(); DIAResult<DWORD> getPGOEntryCount();
DIAResult<DWORD> getPGOEdgeCount(); DIAResult<DWORD> getPGOEdgeCount();
DIAResult<ULONGLONG> getPGODynamicInstructionCount(); DIAResult<ULONGLONG> getPGODynamicInstructionCount();
DIAResult<DWORD> getStaticSize(); DIAResult<DWORD> getStaticSize();
DIAResult<DWORD> getFinalLiveStaticSize(); DIAResult<DWORD> getFinalLiveStaticSize();
DIAResult<DIAString> getPhaseName(); DIAResult<DIAString> getPhaseName();
DIAResult<BOOL> hasControlFlowCheck(); DIAResult<BOOL> hasControlFlowCheck();
#endif #endif
DIAResult<DiaSymbolPtr> getLexicalParent(); DIAResult<DiaSymbolPtr> getLexicalParent();
DIAResult<DiaSymbolPtr> getClassParent(); DIAResult<DiaSymbolPtr> getClassParent();
DIAResult<DiaSymbolPtr> getType(); DIAResult<DiaSymbolPtr> getType();
DIAResult<DiaSymbolPtr> getArrayIndexType(); DIAResult<DiaSymbolPtr> getArrayIndexType();
DIAResult<DiaSymbolPtr> getVirtualTableShape(); DIAResult<DiaSymbolPtr> getVirtualTableShape();
DIAResult<DiaSymbolPtr> getLowerBound(); DIAResult<DiaSymbolPtr> getLowerBound();
DIAResult<DiaSymbolPtr> getUpperBound(); DIAResult<DiaSymbolPtr> getUpperBound();
DIAResult<DiaSymbolPtr> getObjectPointerType(); DIAResult<DiaSymbolPtr> getObjectPointerType();
DIAResult<DiaSymbolPtr> getContainer(); DIAResult<DiaSymbolPtr> getContainer();
DIAResult<DiaSymbolPtr> getVirtualBaseTableType(); DIAResult<DiaSymbolPtr> getVirtualBaseTableType();
DIAResult<DiaSymbolPtr> getUnmodifiedType(); DIAResult<DiaSymbolPtr> getUnmodifiedType();
DIAResult<DiaSymbolPtr> getSubType(); DIAResult<DiaSymbolPtr> getSubType();
DIAResult<DiaSymbolPtr> getBaseSymbol(); DIAResult<DiaSymbolPtr> getBaseSymbol();
DIAResult<DWORD> getAccess(); DIAResult<DWORD> getAccess();
DIAResult<DWORD> getAddressOffset(); DIAResult<DWORD> getAddressOffset();
DIAResult<DWORD> getAddressSection(); DIAResult<DWORD> getAddressSection();
DIAResult<DWORD> getAge(); DIAResult<DWORD> getAge();
DIAResult<DWORD> getArrayIndexTypeId(); DIAResult<DWORD> getArrayIndexTypeId();
DIAResult<DWORD> getBackEndBuild(); DIAResult<DWORD> getBackEndBuild();
DIAResult<DWORD> getBackEndMajor(); DIAResult<DWORD> getBackEndMajor();
DIAResult<DWORD> getBackEndMinor(); DIAResult<DWORD> getBackEndMinor();
DIAResult<DWORD> getBackEndQFE(); DIAResult<DWORD> getBackEndQFE();
DIAResult<DWORD> getBaseDataOffset(); DIAResult<DWORD> getBaseDataOffset();
DIAResult<DWORD> getBaseDataSlot(); DIAResult<DWORD> getBaseDataSlot();
DIAResult<DWORD> getBaseSymbolId(); DIAResult<DWORD> getBaseSymbolId();
DIAResult<DWORD> getBaseType(); DIAResult<DWORD> getBaseType();
DIAResult<DWORD> getBitPosition(); DIAResult<DWORD> getBitPosition();
DIAResult<DWORD> getBuiltInKind(); DIAResult<DWORD> getBuiltInKind();
DIAResult<CV_call_e> getCallingConvention(); DIAResult<CV_call_e> getCallingConvention();
DIAResult<DWORD> getClassParentId(); DIAResult<DWORD> getClassParentId();
DIAResult<DIAString> getCompilerName(); DIAResult<DIAString> getCompilerName();
DIAResult<DWORD> getCount(); DIAResult<DWORD> getCount();
DIAResult<DWORD> getCountLiveRanges(); DIAResult<DWORD> getCountLiveRanges();
DIAResult<DWORD> getFrontEndBuild(); DIAResult<DWORD> getFrontEndBuild();
DIAResult<DWORD> getFrontEndMajor(); DIAResult<DWORD> getFrontEndMajor();
DIAResult<DWORD> getFrontEndMinor(); DIAResult<DWORD> getFrontEndMinor();
DIAResult<DWORD> getFrontEndQFE(); DIAResult<DWORD> getFrontEndQFE();
DIAResult<CV_CFL_LANG> getLanguage(); DIAResult<CV_CFL_LANG> getLanguage();
DIAResult<DWORD> getLexicalParentId(); DIAResult<DWORD> getLexicalParentId();
DIAResult<DIAString> getLibraryName(); DIAResult<DIAString> getLibraryName();
DIAResult<DWORD> getLiveRangeStartAddressOffset(); DIAResult<DWORD> getLiveRangeStartAddressOffset();
DIAResult<DWORD> getLiveRangeStartAddressSection(); DIAResult<DWORD> getLiveRangeStartAddressSection();
DIAResult<DWORD> getLiveRangeStartRelativeVirtualAddress(); DIAResult<DWORD> getLiveRangeStartRelativeVirtualAddress();
DIAResult<DWORD> getLocalBasePointerRegisterId(); DIAResult<DWORD> getLocalBasePointerRegisterId();
DIAResult<DWORD> getLowerBoundId(); DIAResult<DWORD> getLowerBoundId();
DIAResult<DWORD> getMemorySpaceKind(); DIAResult<DWORD> getMemorySpaceKind();
DIAResult<DIAString> getName(); DIAResult<DIAString> getName();
DIAResult<DWORD> getNumberOfAcceleratorPointerTags(); DIAResult<DWORD> getNumberOfAcceleratorPointerTags();
DIAResult<DWORD> getNumberOfColumns(); DIAResult<DWORD> getNumberOfColumns();
DIAResult<DWORD> getNumberOfModifiers(); DIAResult<DWORD> getNumberOfModifiers();
DIAResult<DWORD> getNumberOfRegisterIndices(); DIAResult<DWORD> getNumberOfRegisterIndices();
DIAResult<DWORD> getNumberOfRows(); DIAResult<DWORD> getNumberOfRows();
DIAResult<DIAString> getObjectFileName(); DIAResult<DIAString> getObjectFileName();
DIAResult<DWORD> getOemSymbolId(); DIAResult<DWORD> getOemSymbolId();
DIAResult<DWORD> getOffsetInUdt(); DIAResult<DWORD> getOffsetInUdt();
DIAResult<CV_CPU_TYPE_e> getPlatform(); DIAResult<CV_CPU_TYPE_e> getPlatform();
DIAResult<DWORD> getRank(); DIAResult<DWORD> getRank();
DIAResult<DWORD> getRegisterId(); DIAResult<DWORD> getRegisterId();
DIAResult<DWORD> getRegisterType(); DIAResult<DWORD> getRegisterType();
DIAResult<DWORD> getRelativeVirtualAddress(); DIAResult<DWORD> getRelativeVirtualAddress();
DIAResult<DWORD> getSamplerSlot(); DIAResult<DWORD> getSamplerSlot();
DIAResult<DWORD> getSignature(); DIAResult<DWORD> getSignature();
DIAResult<DWORD> getSizeInUdt(); DIAResult<DWORD> getSizeInUdt();
DIAResult<DWORD> getSlot(); DIAResult<DWORD> getSlot();
DIAResult<DIAString> getSourceFileName(); DIAResult<DIAString> getSourceFileName();
DIAResult<DWORD> getStride(); DIAResult<DWORD> getStride();
DIAResult<DWORD> getSubTypeId(); DIAResult<DWORD> getSubTypeId();
DIAResult<DIAString> getSymbolsFileName(); DIAResult<DIAString> getSymbolsFileName();
DIAResult<DWORD> getSymIndexId(); DIAResult<DWORD> getSymIndexId();
DIAResult<DWORD> getTargetOffset(); DIAResult<DWORD> getTargetOffset();
DIAResult<DWORD> getTargetRelativeVirtualAddress(); DIAResult<DWORD> getTargetRelativeVirtualAddress();
DIAResult<DWORD> getTargetSection(); DIAResult<DWORD> getTargetSection();
DIAResult<DWORD> getTextureSlot(); DIAResult<DWORD> getTextureSlot();
DIAResult<DWORD> getTimeStamp(); DIAResult<DWORD> getTimeStamp();
DIAResult<DWORD> getToken(); DIAResult<DWORD> getToken();
DIAResult<DWORD> getUavSlot(); DIAResult<DWORD> getUavSlot();
DIAResult<DIAString> getUndecoratedName(); DIAResult<DIAString> getUndecoratedName();
DIAResult<DWORD> getUnmodifiedTypeId(); DIAResult<DWORD> getUnmodifiedTypeId();
DIAResult<DWORD> getUpperBoundId(); DIAResult<DWORD> getUpperBoundId();
DIAResult<DWORD> getVirtualBaseDispIndex(); DIAResult<DWORD> getVirtualBaseDispIndex();
DIAResult<DWORD> getVirtualBaseOffset(); DIAResult<DWORD> getVirtualBaseOffset();
DIAResult<DWORD> getVirtualTableShapeId(); DIAResult<DWORD> getVirtualTableShapeId();
DIAResult<DataKind> getDataKind(); DIAResult<DataKind> getDataKind();
DIAResult<DiaSymTagEnum> getSymTag(); DIAResult<DiaSymTagEnum> getSymTag();
DIAResult<GUID> getGuid(); DIAResult<GUID> getGuid();
DIAResult<LONG> getOffset(); DIAResult<LONG> getOffset();
DIAResult<LONG> getThisAdjust(); DIAResult<LONG> getThisAdjust();
DIAResult<LONG> getVirtualBasePointerOffset(); DIAResult<LONG> getVirtualBasePointerOffset();
DIAResult<LocationType> getLocationType(); DIAResult<LocationType> getLocationType();
DIAResult<MachineTypeEnum> getMachineType(); DIAResult<MachineTypeEnum> getMachineType();
DIAResult<THUNK_ORDINAL> getThunkOrdinal(); DIAResult<THUNK_ORDINAL> getThunkOrdinal();
DIAResult<ULONGLONG> getLength(); DIAResult<ULONGLONG> getLength();
DIAResult<ULONGLONG> getLiveRangeLength(); DIAResult<ULONGLONG> getLiveRangeLength();
DIAResult<ULONGLONG> getTargetVirtualAddress(); DIAResult<ULONGLONG> getTargetVirtualAddress();
DIAResult<ULONGLONG> getVirtualAddress(); DIAResult<ULONGLONG> getVirtualAddress();
DIAResult<UdtKind> getUdtKind(); DIAResult<UdtKind> getUdtKind();
DIAResult<BOOL> hasConstructor(); DIAResult<BOOL> hasConstructor();
DIAResult<BOOL> hasCustomCallingConvention(); DIAResult<BOOL> hasCustomCallingConvention();
DIAResult<BOOL> hasFarReturn(); DIAResult<BOOL> hasFarReturn();
DIAResult<BOOL> isCode(); DIAResult<BOOL> isCode();
DIAResult<BOOL> isCompilerGenerated(); DIAResult<BOOL> isCompilerGenerated();
DIAResult<BOOL> isConstType(); DIAResult<BOOL> isConstType();
DIAResult<BOOL> isEditAndContinueEnabled(); DIAResult<BOOL> isEditAndContinueEnabled();
DIAResult<BOOL> isFunction(); DIAResult<BOOL> isFunction();
DIAResult<BOOL> getAddressTaken(); DIAResult<BOOL> getAddressTaken();
DIAResult<BOOL> getNoStackOrdering(); DIAResult<BOOL> getNoStackOrdering();
DIAResult<BOOL> hasAlloca(); DIAResult<BOOL> hasAlloca();
DIAResult<BOOL> hasAssignmentOperator(); DIAResult<BOOL> hasAssignmentOperator();
DIAResult<BOOL> hasCTypes(); DIAResult<BOOL> hasCTypes();
DIAResult<BOOL> hasCastOperator(); DIAResult<BOOL> hasCastOperator();
DIAResult<BOOL> hasDebugInfo(); DIAResult<BOOL> hasDebugInfo();
DIAResult<BOOL> hasEH(); DIAResult<BOOL> hasEH();
DIAResult<BOOL> hasEHa(); DIAResult<BOOL> hasEHa();
DIAResult<BOOL> hasInlAsm(); DIAResult<BOOL> hasInlAsm();
DIAResult<BOOL> hasInlineAttribute(); DIAResult<BOOL> hasInlineAttribute();
DIAResult<BOOL> hasInterruptReturn(); DIAResult<BOOL> hasInterruptReturn();
DIAResult<BOOL> hasLongJump(); DIAResult<BOOL> hasLongJump();
DIAResult<BOOL> hasManagedCode(); DIAResult<BOOL> hasManagedCode();
DIAResult<BOOL> hasNestedTypes(); DIAResult<BOOL> hasNestedTypes();
DIAResult<BOOL> hasNoInlineAttribute(); DIAResult<BOOL> hasNoInlineAttribute();
DIAResult<BOOL> hasNoReturnAttribute(); DIAResult<BOOL> hasNoReturnAttribute();
DIAResult<BOOL> hasOptimizedCodeDebugInfo(); DIAResult<BOOL> hasOptimizedCodeDebugInfo();
DIAResult<BOOL> hasOverloadedOperator(); DIAResult<BOOL> hasOverloadedOperator();
DIAResult<BOOL> hasSEH(); DIAResult<BOOL> hasSEH();
DIAResult<BOOL> hasSecurityChecks(); DIAResult<BOOL> hasSecurityChecks();
DIAResult<BOOL> hasSetJump(); DIAResult<BOOL> hasSetJump();
DIAResult<BOOL> hasStrictGSCheck(); DIAResult<BOOL> hasStrictGSCheck();
DIAResult<BOOL> isAcceleratorGroupSharedLocal(); DIAResult<BOOL> isAcceleratorGroupSharedLocal();
DIAResult<BOOL> isAcceleratorPointerTagLiveRange(); DIAResult<BOOL> isAcceleratorPointerTagLiveRange();
DIAResult<BOOL> isAcceleratorStubFunction(); DIAResult<BOOL> isAcceleratorStubFunction();
DIAResult<BOOL> isAggregated(); DIAResult<BOOL> isAggregated();
DIAResult<BOOL> isBaseVirtualFunction(); DIAResult<BOOL> isBaseVirtualFunction();
DIAResult<BOOL> isCVTCIL(); DIAResult<BOOL> isCVTCIL();
DIAResult<BOOL> isConstructorVirtualBase(); DIAResult<BOOL> isConstructorVirtualBase();
DIAResult<BOOL> isCxxReturnUdt(); DIAResult<BOOL> isCxxReturnUdt();
DIAResult<BOOL> isDataAligned(); DIAResult<BOOL> isDataAligned();
DIAResult<BOOL> isHLSLData(); DIAResult<BOOL> isHLSLData();
DIAResult<BOOL> isHotpatchable(); DIAResult<BOOL> isHotpatchable();
DIAResult<BOOL> isIndirectVirtualBaseClass(); DIAResult<BOOL> isIndirectVirtualBaseClass();
DIAResult<BOOL> isInterfaceUdt(); DIAResult<BOOL> isInterfaceUdt();
DIAResult<BOOL> isIntrinsic(); DIAResult<BOOL> isIntrinsic();
DIAResult<BOOL> isLTCG(); DIAResult<BOOL> isLTCG();
DIAResult<BOOL> isLocationControlFlowDependent(); DIAResult<BOOL> isLocationControlFlowDependent();
DIAResult<BOOL> isMSILNetmodule(); DIAResult<BOOL> isMSILNetmodule();
DIAResult<BOOL> isManagedRef(); DIAResult<BOOL> isManagedRef();
DIAResult<BOOL> isMatrixRowMajor(); DIAResult<BOOL> isMatrixRowMajor();
DIAResult<BOOL> isMsilRef(); DIAResult<BOOL> isMsilRef();
DIAResult<BOOL> isMultipleInheritance(); DIAResult<BOOL> isMultipleInheritance();
DIAResult<BOOL> isNaked(); DIAResult<BOOL> isNaked();
DIAResult<BOOL> isNested(); DIAResult<BOOL> isNested();
DIAResult<BOOL> isOptimizedAway(); DIAResult<BOOL> isOptimizedAway();
DIAResult<BOOL> isPacked(); DIAResult<BOOL> isPacked();
DIAResult<BOOL> isPointerBasedOnSymbolValue(); DIAResult<BOOL> isPointerBasedOnSymbolValue();
DIAResult<BOOL> isPointerToDataMember(); DIAResult<BOOL> isPointerToDataMember();
DIAResult<BOOL> isPointerToMemberFunction(); DIAResult<BOOL> isPointerToMemberFunction();
DIAResult<BOOL> isPureVirtual(); DIAResult<BOOL> isPureVirtual();
DIAResult<BOOL> isRValueReference(); DIAResult<BOOL> isRValueReference();
DIAResult<BOOL> isRefUdt(); DIAResult<BOOL> isRefUdt();
DIAResult<BOOL> isReference(); DIAResult<BOOL> isReference();
DIAResult<BOOL> isRestrictedType(); DIAResult<BOOL> isRestrictedType();
DIAResult<BOOL> isReturnValue(); DIAResult<BOOL> isReturnValue();
DIAResult<BOOL> isSafeBuffers(); DIAResult<BOOL> isSafeBuffers();
DIAResult<BOOL> isScoped(); DIAResult<BOOL> isScoped();
DIAResult<BOOL> isSdl(); DIAResult<BOOL> isSdl();
DIAResult<BOOL> isSingleInheritance(); DIAResult<BOOL> isSingleInheritance();
DIAResult<BOOL> isSplitted(); DIAResult<BOOL> isSplitted();
DIAResult<BOOL> isStatic(); DIAResult<BOOL> isStatic();
DIAResult<BOOL> isStripped(); DIAResult<BOOL> isStripped();
DIAResult<BOOL> isUnalignedType(); DIAResult<BOOL> isUnalignedType();
DIAResult<BOOL> isUnreached(); DIAResult<BOOL> isUnreached();
DIAResult<BOOL> isValueUdt(); DIAResult<BOOL> isValueUdt();
DIAResult<BOOL> isVirtual(); DIAResult<BOOL> isVirtual();
DIAResult<BOOL> isVirtualBaseClass(); DIAResult<BOOL> isVirtualBaseClass();
DIAResult<BOOL> isVirtualInheritance(); DIAResult<BOOL> isVirtualInheritance();
DIAResult<BOOL> isVolatileType(); DIAResult<BOOL> isVolatileType();
private: private:
template <class T, class U = T> template <class T, class U = T>
DIAResult<U> DIAResult<U>
InternalGetDIAValue(HRESULT (__stdcall IDiaSymbol::*Method)(T *)) { InternalGetDIAValue(HRESULT (__stdcall IDiaSymbol::*Method)(T *)) {
T Value; T Value;
if (S_OK == (Symbol->*Method)(&Value)) if (S_OK == (Symbol->*Method)(&Value))
return DIAResult<U>(U(Value)); return DIAResult<U>(U(Value));
else else
return DIAResult<U>(); return DIAResult<U>();
} }
DIAResult<DIAString> DIAResult<DIAString>
InternalGetDIAStringValue(HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) { InternalGetDIAStringValue(HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
BSTR String16; BSTR String16;
if (S_OK == (Symbol->*Method)(&String16)) { if (S_OK == (Symbol->*Method)(&String16)) {
std::string String8; std::string String8;
llvm::sys::windows::BSTRToUTF8(String16, String8); llvm::sys::windows::BSTRToUTF8(String16, String8);
SysFreeString(String16); SysFreeString(String16);
return DIAResult<DIAString>(DIAString(String8)); return DIAResult<DIAString>(DIAString(String8));
} else } else
return DIAResult<DIAString>(); return DIAResult<DIAString>();
} }
IDiaSymbol *Symbol; IDiaSymbol *Symbol;
}; };
} // namespace windows } // namespace windows
} // namespace sys } // namespace sys
} // namespace llvm } // namespace llvm
#endif #endif

View File

@ -1,32 +1,32 @@
//===- llvm-pdbdump.h - Common includes for llvm-pdbdump --------*- C++ -*-===// //===- llvm-pdbdump.h - Common includes for llvm-pdbdump --------*- C++ -*-===//
// //
// The LLVM Compiler Infrastructure // The LLVM Compiler Infrastructure
// //
// This file is distributed under the University of Illinois Open Source // This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details. // License. See LICENSE.TXT for details.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// Common defines and header includes for all llvm-pdbdump. The definitions // Common defines and header includes for all llvm-pdbdump. The definitions
// here configure the necessary #defines and include system headers in the // here configure the necessary #defines and include system headers in the
// proper order for using DIA. // proper order for using DIA.
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H #ifndef LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H
#define LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H #define LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H
#define NTDDI_VERSION NTDDI_VISTA #define NTDDI_VERSION NTDDI_VISTA
#define _WIN32_WINNT _WIN32_WINNT_VISTA #define _WIN32_WINNT _WIN32_WINNT_VISTA
#define WINVER _WIN32_WINNT_VISTA #define WINVER _WIN32_WINNT_VISTA
#ifndef NOMINMAX #ifndef NOMINMAX
#define NOMINMAX #define NOMINMAX
#endif #endif
// atlbase.h has to come before windows.h // atlbase.h has to come before windows.h
#include <atlbase.h> #include <atlbase.h>
#include <windows.h> #include <windows.h>
// DIA headers must come after windows headers. // DIA headers must come after windows headers.
#include <cvconst.h> #include <cvconst.h>
#include <dia2.h> #include <dia2.h>
#endif #endif