Imported Upstream version 5.18.0.207

Former-commit-id: 3b152f462918d427ce18620a2cbe4f8b79650449
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-11-17 08:23:10 +00:00
parent 8e12397d70
commit eb85e2fc17
28480 changed files with 72 additions and 3866936 deletions

View File

@ -1 +0,0 @@
config.unsupported = not config.have_dia_sdk

View File

@ -1,40 +0,0 @@
; RUN: llvm-pdbutil pretty %p/../Inputs/empty.pdb | FileCheck %s -check-prefix=NO_ARGS
; RUN: llvm-pdbutil pretty -types %p/../Inputs/empty.pdb | FileCheck %s -check-prefix=TYPES
; RUN: llvm-pdbutil pretty -compilands %p/../Inputs/empty.pdb | FileCheck %s -check-prefix=COMPILANDS
; RUN: llvm-pdbutil pretty -types -compilands %p/../Inputs/empty.pdb | FileCheck %s -check-prefix=MULTIPLE
; Check that neither symbols nor compilands are dumped when neither argument specified.
; NO_ARGS: empty.pdb
; NO_ARGS: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0}
; NO_ARGS: Attributes: HasPrivateSymbols
; NO_ARGS-NOT: ---TYPES---
; NO_ARGS-NOT: ---COMPILANDS---
; NO_ARGS-NOT: ---GLOBALS---
; NO_ARGS-NOT: ---SYMBOLS---
; Check that only types are dumped when only -types is specified.
; TYPES: empty.pdb
; TYPES: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0}
; TYPES: Attributes: HasPrivateSymbols
; TYPES: ---TYPES---
; TYPES-NOT: ---COMPILANDS---
; TYPES-NOT: ---GLOBALS---
; TYPES-NOT: ---SYMBOLS---
; Check that only compilands are dumped when only -compilands is specified.
; COMPILANDS: empty.pdb
; COMPILANDS: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0}
; COMPILANDS: Attributes: HasPrivateSymbols
; COMPILANDS: ---COMPILANDS---
; COMPILANDS-NOT: ---TYPES---
; COMPILANDS-NOT: ---GLOBALS---
; COMPILANDS-NOT: ---SYMBOLS---
; Check that types and compilands are dumped when both arguments are specified.
; MULTIPLE: empty.pdb
; MULTIPLE: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0}
; MULTIPLE: Attributes: HasPrivateSymbols
; MULTIPLE: ---COMPILANDS---
; MULTIPLE: ---TYPES---
; MULTIPLE-NOT: ---GLOBALS---
; MULTIPLE-NOT: ---SYMBOLS---

View File

@ -1,14 +0,0 @@
; RUN: llvm-pdbutil pretty -lines %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=LINE_NUMS_FPO %s
; RUN: llvm-pdbutil pretty -lines %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=LINE_NUMS %s
; LINE_NUMS_FPO: llvm\test\debuginfo\pdb\inputs\symbolformat-fpo.cpp
; LINE_NUMS_FPO: Line 5, Address: [0x000011a0 - 0x000011a5] (6 bytes)
; LINE_NUMS_FPO: Line 6, Address: [0x000011a6 - 0x000011a6] (1 bytes)
; LINE_NUMS: llvm\test\debuginfo\pdb\inputs\symbolformat.cpp
; LINE_NUMS: Line 6, Address: [0x00001060 - 0x00001066] (7 bytes)
; LINE_NUMS: Line 80, Address: [0x000010d0 - 0x000010d1] (2 bytes)
; LINE_NUMS: Line 81, Address: [0x000010d2 - 0x000010d5] (4 bytes)
; LINE_NUMS: Line 28, Address: [0x00001170 - 0x0000117a] (11 bytes)
; LINE_NUMS: Line 21, Address: [0x00001180 - 0x0000118a] (11 bytes)
; LINE_NUMS: Line 20, Address: [0x00001190 - 0x0000119a] (11 bytes)

View File

@ -1,70 +0,0 @@
; RUN: llvm-pdbutil pretty -module-syms %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=SYM_FORMAT_FPO %s
; RUN: llvm-pdbutil pretty -module-syms %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=SYM_FORMAT %s
; RUN: llvm-pdbutil pretty -types %p/../Inputs/symbolformat.pdb > %t.types
; RUN: FileCheck --check-prefix=TYPES_FORMAT %s < %t.types
; RUN: FileCheck --check-prefix=TYPES_1 %s < %t.types
; RUN: FileCheck --check-prefix=TYPES_2 %s < %t.types
; RUN: llvm-pdbutil pretty -types %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=TYPES_FORMAT %s
; RUN: llvm-pdbutil pretty -globals %p/../Inputs/symbolformat.pdb | FileCheck --check-prefix=GLOBALS %s
; The format is func [0x<rva_start>+<prologue_length> - 0x<rva_end>-<epilogue_length>]
; SYM_FORMAT_FPO: ---SYMBOLS---
; SYM_FORMAT_FPO: symbolformat-fpo.obj
; SYM_FORMAT-FPO: func [{{.*}}] (FPO) unsigned int __cdecl fpo_func(unsigned int n)
; SYM_FORMAT: ---SYMBOLS---
; SYM_FORMAT: symbolformat.obj
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) int __cdecl _purecall()
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) int __cdecl main(int argc, char** argv)
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void A::A()
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void B::B()
; SYM_FORMAT-DAG: thunk [{{.*}}] (Pcode) B::`vcall'{0}'
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) virtual void B::PureFunc()
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void A::RegularFunc()
; SYM_FORMAT-DAG: func [{{.*}}] (EBP) virtual void A::VirtualFunc()
; TYPES_FORMAT: ---TYPES---
; TYPES_FORMAT: Enums
; TYPES_FORMAT-DAG: enum TestEnum
; TYPES_FORMAT-DAG: enum TestEnumClass
; TYPES_FORMAT: Typedefs
; TYPES_FORMAT-DAG: typedef int IntType
; TYPES_FORMAT-DAG: typedef class A ClassAType
; TYPES_1: Classes
; TYPES_1: struct A [sizeof = 4] {
; TYPES_1: virtual void PureFunc() = 0
; TYPES_1: virtual void VirtualFunc()
; TYPES_1: void RegularFunc()
; TYPES_1: }
; TYPES_2: Classes
; TYPES_2: struct MemberTest [sizeof = 96] {
; TYPES_2: data +0x00 [sizeof=4] MemberTest::NestedEnum m_nested_enum
; TYPES_2: data +0x04 [sizeof=4] int m_typedef
; TYPES_2: data +0x08 [sizeof=1] bool m_bool
; TYPES_2: data +0x09 [sizeof=1] char m_char
; TYPES_2: data +0x0a [sizeof=2] wchar_t m_wchar_t
; TYPES_2: data +0x0c [sizeof=4] int m_int
; TYPES_2: data +0x10 [sizeof=4] unsigned int m_unsigned
; TYPES_2: data +0x14 [sizeof=4] long m_long
; TYPES_2: data +0x18 [sizeof=4] unsigned long m_unsigned_long
; TYPES_2: <padding> (4 bytes)
; TYPES_2: data +0x20 [sizeof=8] __int64 m_int64
; TYPES_2: data +0x28 [sizeof=8] unsigned __int64 m_unsigned_int64
; TYPES_2: data +0x30 [sizeof=4] float m_float
; TYPES_2: <padding> (4 bytes)
; TYPES_2: data +0x38 [sizeof=8] double m_double
; TYPES_2: data +0x40 [sizeof=4] void (__cdecl * m_pfn_2_args)(int, double)
; TYPES_2: data +0x44 [sizeof=24] int m_multidimensional_array[2][3]
; TYPES_2: }
; GLOBALS: ---GLOBALS---
; GLOBALS-DAG: func [{{.*}}] (FPO) unsigned int __cdecl fpo_func(unsigned int n)
; GLOBALS-DAG: data [{{.*}}, sizeof=4] static void* g_global_pointer
; GLOBALS-DAG: data [{{.*}}, sizeof=4] static int g_global_int
; GLOBALS-DAG: data [{{.*}}, sizeof=12] static int g_array[3]
; GLOBALS-DAG: data [{{.*}}, sizeof=4] static int (* g_pointer_to_array)[3]
; GLOBALS-DAG: data [{{.*}}, sizeof=4] static const int* g_pointer_to_const_int
; GLOBALS-DAG: data [sizeof=4] int* const g_const_pointer_to_int = 0
; GLOBALS-DAG: data [sizeof=4] const int* const g_const_pointer_to_const_int = 0

View File

@ -1,2 +0,0 @@
Microsoft C/C++ MSF 7.00
DS

View File

@ -1 +0,0 @@
9d9086874e5f94e9b0202df916e044a1665c0a0a

View File

@ -1,91 +0,0 @@
DbiStream:
Modules:
- Module: 'Foo.obj'
ObjFile: 'Foo.obj'
Subsections:
- !CrossModuleExports
Exports:
- LocalId: 4852
GlobalId: 9283
- LocalId: 2147487875
GlobalId: 9123
- Module: 'Bar.obj'
ObjFile: 'Bar.obj'
Subsections:
- !CrossModuleExports
Exports:
- LocalId: 4265
GlobalId: 6097
- LocalId: 4297
GlobalId: 4677
- !CrossModuleImports
Imports:
- Module: 'Foo.obj'
Imports: [ 4852, 2147487875 ]
- Module: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
ObjFile: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
SourceFiles:
- 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
Subsections:
- !FileChecksums
Checksums:
- FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
Kind: MD5
Checksum: A0A5BD0D3ECD93FC29D19DE826FBF4BC
- FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
Kind: MD5
Checksum: 1154D69F5B2650196E1FC34F4134E56B
- !Lines
CodeSize: 10
Flags: [ ]
RelocOffset: 100016
RelocSegment: 1
Blocks:
- FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
Lines:
- Offset: 0
LineStart: 5
IsStatement: true
EndDelta: 0
- Offset: 3
LineStart: 6
IsStatement: true
EndDelta: 0
- Offset: 8
LineStart: 7
IsStatement: true
EndDelta: 0
Columns:
- !InlineeLines
HasExtraFiles: false
Sites:
- FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
LineNum: 26950
Inlinee: 22767
# The following subsections don't normally appear in PDB files, but we test
# them anyway
- Module: 'ObjFileSubsections'
ObjFile: 'ObjFileSubsections'
Subsections:
- !StringTable
Strings:
- 'String1'
- 'String2'
- 'String3'
- !Symbols
Records:
- Kind: S_OBJNAME
ObjNameSym:
Signature: 0
ObjectName: 'ObjFileSubsections'
- !FrameData
Frames:
- CodeSize: 1
FrameFunc: 'MyFunc'
LocalSize: 2
MaxStackSize: 3
ParamsSize: 4
PrologSize: 5
RvaStart: 6
SavedRegsSize: 7
...

View File

@ -1,7 +0,0 @@
// Build with "cl.exe /Zi empty.cpp /link /debug /nodefaultlib /entry:main"
void *__purecall = 0;
int main() {
return 42;
}

Binary file not shown.

View File

@ -1,63 +0,0 @@
// Build with "cl.exe /Zi /GR- /GX- every-type.cpp /link /debug /nodefaultlib /entry:main"
// clang-format off
void *__purecall = 0;
void __cdecl operator delete(void *,unsigned int) {}
struct FooStruct { }; // LF_STRUCTURE
class FooClass { // LF_CLASS
// LF_FIELDLIST
enum NestedEnum { // LF_ENUM
// LF_NESTTYPE
A, B, C // LF_ENUMERATE
};
void RegularMethod() {} // LF_ARGLIST
// LF_ONEMETHOD
// LF_MFUNCTION
void OverloadedMethod(int) {} // LF_METHODLIST
// LF_METHOD
void OverloadedMethod(int, int) {}
int HiNibble : 4; // LF_BITFIELD
int LoNibble : 4;
NestedEnum EnumVariable; // LF_MEMBER
static void *StaticMember; // LF_POINTER
// LF_STMEMBER
};
void *FooClass::StaticMember = nullptr;
class Inherit : public FooClass { // LF_BCLASS
public:
virtual ~Inherit() {} // LF_VTSHAPE
// LF_VFUNCTAB
};
class VInherit : public virtual FooClass { // LF_VBCLASS
};
class IVInherit : public VInherit { // LF_IVBCLASS
};
union TheUnion {
int X; // LF_UNION
};
int SomeArray[7] = {1, 2, 3, 4, 5, 6, 7}; // LF_ARRAY
int main(int argc, char **argv) { // LF_PROCEDURE
const int X = 7; // LF_MODIFIER
FooStruct FooStructInstance;
FooClass FooClassInstance;
Inherit InheritInstance;
VInherit VInheritInstance;
IVInherit IVInheritInstance;
TheUnion UnionInstance;
return SomeArray[argc];
}

View File

@ -1,272 +0,0 @@
---
TpiStream:
Records:
# int* [Index: 0x1000]
- Kind: LF_POINTER
Pointer:
ReferentType: 116 # int
Attrs: 32778
# const int* [Index: 0x1001]
- Kind: LF_MODIFIER
Modifier:
ModifiedType: 0x1000
Modifiers: [ Const ]
# char* [Index: 0x1002]
- Kind: LF_POINTER
Pointer:
ReferentType: 1136 # char*
Attrs: 32778
# (int, char **) [Index: 0x1003]
- Kind: LF_ARGLIST
ArgList:
ArgIndicies: [ 116, 0x1002 ]
# (int, double) [Index: 0x1004]
- Kind: LF_ARGLIST
ArgList:
ArgIndicies: [ 116, 65 ] # (int, double)
# int main(int argc, char **argv) [Index: 0x1005]
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 117 # int
CallConv: NearC # __cdecl
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1003 # (int, char**)
# <label> [Index: 0x1006]
- Kind: LF_LABEL
Label:
Mode: Near
# <forward decl>
# class FooClass; [Index: 0x1007]
- Kind: LF_STRUCTURE
Class:
MemberCount: 0
Options: [ None, ForwardReference ]
FieldList: 0
Name: 'FooClass'
DerivationList: 0
VTableShape: 0
Size: 0
# char* [Index: 0x1008]
- Kind: LF_POINTER
Pointer:
ReferentType: 0x1007 # FooClass
Attrs: 33802 # const
# int (FooClass::)(int, char **) [Index: 0x1009]
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 116 # int
ClassType: 0x1007 # FooClass
ThisType: 0x1008 # const FooClass*
CallConv: ThisCall
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1003 # (int, char**)
ThisPointerAdjustment: 0
# int (FooClass::)(int, double) [Index: 0x100A]
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 116 # int
ClassType: 0x1007 # FooClass
ThisType: 0x1008 # const FooClass*
CallConv: ThisCall
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1004 # (int, double)
ThisPointerAdjustment: 0
# <method overload list>
# int (FooClass::)(int, char **)
# int (FooClass::)(int, double) [Index: 0x100B]
- Kind: LF_METHODLIST
MethodOverloadList:
Methods:
- Type: 0x1009 # int (FooClass::)(int, char **)
Attrs: 3 # public
VFTableOffset: -1
Name: ''
- Type: 0x100A # int (FooClass::)(int, double)
Attrs: 3 # public
VFTableOffset: -1
Name: ''
# <Field List>
# A, B, C [Index: 0x100C]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 0
Name: A
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 1
Name: B
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 2
Name: C
# enum FooClass::Enum : uint32_t {
# A, B, C
# }; [Index: 0x100D]
- Kind: LF_ENUM
Enum:
NumEnumerators: 3
Options: [ None, Nested ]
FieldList: 0x100C
Name: 'FooClass::Enum'
UnderlyingType: 117
# <Field List>
# public:
# enum FooEnum : uint32_t {
# A, B, C
# };
# FooEnum EnumMember;
# static int StaticInt;
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
# int FooClass::RegularMethod(int, double);
# [Index: 0x100E]
- Kind: LF_FIELDLIST
FieldList:
# enum FooEnum : uint32_t {
# A, B, C
# };
- Kind: LF_NESTTYPE
NestedType:
Type: 0x100D
Name: FooEnum
# FooEnum EnumMember;
- Kind: LF_MEMBER
DataMember:
Attrs: 3 # public
Type: 0x100D # void*
FieldOffset: 0
Name: EnumMember
# static int StaticInt;
- Kind: LF_STMEMBER
StaticDataMember:
Attrs: 3 # public
Type: 116 # int
Name: StaticInt
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
- Kind: LF_METHOD
OverloadedMethod:
NumOverloads: 2
MethodList: 0x100B
Name: OverloadedMethod
# int FooClass::RegularMethod(int, double);
- Kind: LF_ONEMETHOD
OneMethod:
Type: 0x100A
Attrs: 3 # public
VFTableOffset: -1
Name: RegularMethod
# class FooClass {
# public:
# enum FooEnum : uint32_t {
# A, B, C
# };
# FooEnum EnumMember;
# static int StaticInt;
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
# int FooClass::RegularMethod(int, double);
# }; [Index: 0x100F]
- Kind: LF_CLASS
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooClass'
DerivationList: 0
VTableShape: 0
Size: 4
# struct FooStructure; [Index: 0x1010]
- Kind: LF_STRUCTURE
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooStructure'
DerivationList: 0
VTableShape: 0
Size: 4
# interface FooInterface; [Index: 0x1011]
- Kind: LF_INTERFACE
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooInterface'
DerivationList: 0
VTableShape: 0
Size: 4
# <field list>
# : public FooClass [Index: 0x1012]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_BCLASS
Attrs: 3 # public
Type: 0x100F # FooClass
Offset: 0
# <field list>
# : public virtual FooClass [Index: 0x1013]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_VBCLASS
Attrs: 3 # public
BaseType: 0x100F # FooClass
VBPtrType: 0x1001 # const int *
VBPtrOffset: 0
VTableIndex: 1
# class Inherit : public FooClass {}; [Index: 0x1014]
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None ]
FieldList: 0x100E
Name: 'Inherit'
DerivationList: 0x1012
VTableShape: 0
Size: 4
# class VInherit : public virtual FooClass {}; [Index: 0x1015]
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None ]
FieldList: 0x100E
Name: 'Inherit'
DerivationList: 0x1012
VTableShape: 0
Size: 4
# // Member type records. These are generally not length prefixed, and appear
# // inside of a field list record.
# MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
# MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
# MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
# VirtualBaseClass)
# TYPE_RECORD(LF_ARRAY, 0x1503, Array)
# TYPE_RECORD(LF_UNION, 0x1506, Union)
# TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
# TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
# TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
# TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
# // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
# TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
# TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
# TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
# TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
# TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
# TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
# TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)

View File

@ -1 +0,0 @@
3d6639edc581d6fe531b6866a7b1c7f0f5922fba

View File

@ -1,36 +0,0 @@
IpiStream:
Records:
# 'One' [TypeIndex: 0x1000 (4096)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'One'
# 'Two' [TypeIndex: 0x1001 (4097)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'Two'
# 'OnlyInFirst' [TypeIndex: 0x1002 (4098)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'OnlyInFirst'
# 'SubOne' [TypeIndex: 0x1003 (4099)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'SubOne'
# 'SubTwo' [TypeIndex: 0x1004 (4100)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'SubTwo'
# 'SubOne', 'SubTwo' [TypeIndex: 0x1005 (4101)]
- Kind: LF_SUBSTR_LIST
StringList:
StringIndices: [ 4099, 4100 ]
# 'Main' {'SubOne', 'SubTwo'} [TypeIndex: 0x1006 (4102)]
- Kind: LF_STRING_ID
StringId:
Id: 4101
String: 'Main'

View File

@ -1,31 +0,0 @@
IpiStream:
Records:
# 'SubTwo' [TypeIndex: 0x1000 (4096)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'SubTwo'
# 'OnlyInSecond' [TypeIndex: 0x1001 (4097)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'OnlyInSecond'
# 'SubOne' [TypeIndex: 0x1002 (4098)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'SubOne'
# 'SubOne', 'SubTwo' [TypeIndex: 0x1003 (4099)]
- Kind: LF_SUBSTR_LIST
StringList:
StringIndices: [ 4098, 4096 ]
# 'One' [TypeIndex: 0x1004 (4100)]
- Kind: LF_STRING_ID
StringId:
Id: 0
String: 'One'
# 'Main' {'SubOne', 'SubTwo'} [TypeIndex: 0x1005 (4101)]
- Kind: LF_STRING_ID
StringId:
Id: 4099
String: 'Main'

View File

@ -1,113 +0,0 @@
# The idea is to set up some types in the TPI stream, and then have records in
# the IPI stream that refer to them. There are three types of IPI records that
# can refer to TPI records. They are:
# 1) LF_PROCEDURE - Referred to by LF_FUNC_ID
# 2) LF_STRUCTURE - Referred to by LF_UDT_MOD_SRC_LINE
# Referred to by LF_UDT_SRC_LINE
# 3) LF_MFUNCTION - Referred to by LF_MFUNC_ID
# We will set up one of each of these, and then create IPI records that refer to
# them. We intentionally choose an unintuitive ordering of the records in both
# streams (while still maintaining the topological sorting required by CodeView
# type streams), to make sure the merging algorithm is sufficiently exercised.
# For easy understanding, a semantic representation of the types we will set up
# is as follows:
# - int main(int, char**)
#
# - struct FooBar {
# public:
# void *FooMember;
# void FooMethod(int);
# };
TpiStream:
Records:
# TypeIndex: 4096 (0x1000)
# char**
- Kind: LF_POINTER
Pointer:
ReferentType: 1136
Attrs: 32778
# TypeIndex: 4097 (0x1001)
# public void *FooMember
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_MEMBER
DataMember:
Attrs: 3 # public
Type: 1027 # void*
FieldOffset: 0
Name: FooMember # FooMember
# TypeIndex: 4098 (0x1002)
# (int, char**)
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 116, 4096 ]
# TypeIndex: 4099 (0x1003)
# struct FooBar {
# public:
# void *FooMember;
# };
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None, HasUniqueName ]
FieldList: 4097
Name: FooBar
UniqueName: 'FooBar'
DerivationList: 0
VTableShape: 0
Size: 4
# TypeIndex: 4100 (0x1004)
# FooBar *
- Kind: LF_POINTER
Pointer:
ReferentType: 4099 # FooBar
Attrs: 32778
# TypeIndex: 4101 (0x1005)
# (int)
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 116 ]
# TypeIndex: 4102 (0x1006)
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 3 # void
ClassType: 4099 # struct FooBar
ThisType: 4100 # FooBar *
CallConv: ThisCall
Options: [ None, Constructor ]
ParameterCount: 1
ArgumentList: 4101 # (int)
ThisPointerAdjustment: 0
# TypeIndex: 4103 (0x1007)
# int (int, char**)
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 116 # int
CallConv: NearC
Options: [ None ]
ParameterCount: 2
ArgumentList: 4098 # (int, char**)
IpiStream:
Records:
# TypeIndex: 4096 (0x1000)
# int main(int, char **)
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 0
FunctionType: 4103 # int main(int, char**)
Name: main
# TypeIndex: 4097 (0x1001)
# void FooBar::FooMethod(int)
- Kind: LF_MFUNC_ID
MemberFuncId:
ClassType: 4099 # struct FooBar
FunctionType: 4102 # void FooMethod(int)
Name: FooMethod
# TypeIndex: 4098 (0x1002)
# struct FooBar
- Kind: LF_UDT_MOD_SRC_LINE
UdtModSourceLine:
UDT: 4099 # struct FooBar
SourceFile: 0 # We don't support this yet
LineNumber: 0
Module: 0 # We don't support this yet

View File

@ -1,143 +0,0 @@
# In file 1 we set up some basic types and IDs to refer to them. In this file
# we will set up the same types. For some of them we will make them identical
# but re-order the records in the file to make sure they have different type
# indices and appear in different orders. In other cases we will make slight
# adjustments to the types, to ensure that they do not get merged in.
#
# For easy understanding, a semantic representation of the types we will set up
# is as follows:
# - int main(int, char**) // This record should share an LF_PROCEDURE and id
# // record with corresponding function from the
# // first file.
# - int main2(int, char**) // This record should share the LF_PROCEDURE
# // record but have a unique id record.
# - void foo(int, char**) // This record should have a unique LF_PROCEDURE
# // record, but the LF_ARGLIST record internally
# // should be shared.
#
# - struct FooBar { // Because the type of this record exactly matches
# // the corresponding file, its entire type record
# // hierarchy should be shared.
# public:
# void *FooMember;
# void FooMethod2(int); // Note that the *type* of this member should be
# // the same as the type of the record from the
# // first stream. But since it has a different
# // name, it will not share an id record.
# };
TpiStream:
Records:
# TypeIndex: 4096 (0x1000)
# (int)
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 116 ]
# TypeIndex: 4097 (0x1001)
# public void *FooMember
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_MEMBER
DataMember:
Attrs: 3 # public
Type: 1027 # void*
FieldOffset: 0
Name: FooMember # FooMember
# TypeIndex: 4098 (0x1002)
# char**
- Kind: LF_POINTER
Pointer:
ReferentType: 1136
Attrs: 32778
# TypeIndex: 4099 (0x1003)
# (int, char**)
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 116, 4098 ]
# TypeIndex: 4100 (0x1004)
# struct FooBar {
# public:
# void *FooMember;
# };
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None, HasUniqueName ]
FieldList: 4097
Name: FooBar
UniqueName: 'FooBar'
DerivationList: 0
VTableShape: 0
Size: 4
# TypeIndex: 4101 (0x1005)
# void (int, char**)
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 3 # void
CallConv: NearC
Options: [ None ]
ParameterCount: 2
ArgumentList: 4099 # (int, char**)
# TypeIndex: 4102 (0x1006)
# FooBar *
- Kind: LF_POINTER
Pointer:
ReferentType: 4100 # FooBar
Attrs: 32778
# TypeIndex: 4103 (0x1007)
# int (int, char**)
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 116 # int
CallConv: NearC
Options: [ None ]
ParameterCount: 2
ArgumentList: 4099 # (int, char**)
# TypeIndex: 4104 (0x1008)
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 3 # void
ClassType: 4100 # struct FooBar
ThisType: 4102 # FooBar *
CallConv: ThisCall
Options: [ None, Constructor ]
ParameterCount: 1
ArgumentList: 4096 # (int)
ThisPointerAdjustment: 0
IpiStream:
Records:
# TypeIndex: 4096 (0x1000)
# struct FooBar
- Kind: LF_UDT_MOD_SRC_LINE
UdtModSourceLine:
UDT: 4100 # struct FooBar
SourceFile: 0 # We don't support this yet
LineNumber: 0
Module: 0 # We don't support this yet
# TypeIndex: 4097 (0x1001)
# int main2(int, char **)
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 0
FunctionType: 4103 # int main2(int, char**)
Name: main2
# TypeIndex: 4098 (0x1002)
# void foo(int, char **)
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 0
FunctionType: 4101 # void main2(int, char**)
Name: foo
# TypeIndex: 4099 (0x1003)
# void FooBar::FooMethod2(int)
- Kind: LF_MFUNC_ID
MemberFuncId:
ClassType: 4100 # struct FooBar
FunctionType: 4104 # void FooBar::FooMethod2(int)
Name: FooMethod2
# TypeIndex: 4100 (0x1004)
# int main(int, char **)
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 0
FunctionType: 4103 # int main(int, char**)
Name: main

View File

@ -1,52 +0,0 @@
---
TpiStream:
Records:
# uint32_t* [Index: 0x1000]
- Kind: LF_POINTER
Pointer:
ReferentType: 117
Attrs: 32778
# int64_t* [Index: 0x1001]
- Kind: LF_POINTER
Pointer:
ReferentType: 118
Attrs: 32778
# struct OnlyInMerge1 [Index: 0x1002]
- Kind: LF_STRUCTURE
Class:
MemberCount: 0
Options: [ None, ForwardReference, HasUniqueName ]
FieldList: 0
Name: 'OnlyInMerge1'
UniqueName: 'OnlyInMerge1'
DerivationList: 0
VTableShape: 0
Size: 0
# uint32_t** [Index: 0x1003]
- Kind: LF_POINTER
Pointer:
ReferentType: 4096
Attrs: 32778
# uint32_t*** [Index: 0x1004]
- Kind: LF_POINTER
Pointer:
ReferentType: 4099
Attrs: 32778
# int64_t* [Index: 0x1005]
- Kind: LF_POINTER
Pointer:
ReferentType: 4097
Attrs: 32778
# [uint32_t, uint32_t*, uint32_t**] [Index: 0x1006]
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 117, 4096, 4099 ]
# uint32_t (uint32_t, uint32_t*, uint32_t**) [Index: 0x1007]
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 117
CallConv: NearC
Options: [ None ]
ParameterCount: 0
ArgumentList: 4102
...

View File

@ -1,52 +0,0 @@
---
TpiStream:
Records:
# uint32_t* [Index: 0x1000]
- Kind: LF_POINTER
Pointer:
ReferentType: 117
Attrs: 32778
# uint32_t** [Index: 0x1001]
- Kind: LF_POINTER
Pointer:
ReferentType: 4096
Attrs: 32778
# uint32_t*** [Index: 0x1002]
- Kind: LF_POINTER
Pointer:
ReferentType: 4097
Attrs: 32778
# [uint32_t, uint32_t*, uint32_t**] [Index: 0x1003]
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 117, 4096, 4097 ]
# uint32_t (uint32_t, uint32_t*, uint32_t**) [Index: 0x1004]
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 117
CallConv: NearC
Options: [ None ]
ParameterCount: 0
ArgumentList: 4099
# int64_t* [Index: 0x1005]
- Kind: LF_POINTER
Pointer:
ReferentType: 118
Attrs: 32778
# int64_t** [Index: 0x1006]
- Kind: LF_POINTER
Pointer:
ReferentType: 4101
Attrs: 32778
# struct OnlyInMerge2 [Index: 0x1007]
- Kind: LF_STRUCTURE
Class:
MemberCount: 0
Options: [ None, ForwardReference, HasUniqueName ]
FieldList: 0
Name: 'OnlyInMerge2'
UniqueName: 'OnlyInMerge2'
DerivationList: 0
VTableShape: 0
Size: 0
...

View File

@ -1,50 +0,0 @@
--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ ]
sections:
- Name: '.debug$T'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
Types:
# char**
- Kind: LF_POINTER
Pointer:
ReferentType: 272
Attrs: 32778
# int**
- Kind: LF_POINTER
Pointer:
ReferentType: 372
Attrs: 32778
# int***
- Kind: LF_POINTER
Pointer:
ReferentType: 4097
Attrs: 32778
# (char**, int***)
- Kind: LF_ARGLIST
ArgList:
ArgIndices: [ 4096, 4098 ]
# int** (char**, int***)
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 4097
CallConv: NearC
Options: [ None ]
ParameterCount: 2
ArgumentList: 4099
symbols:
- Name: '.debug$T'
Value: 0
SectionNumber: 6
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
Length: 68
NumberOfRelocations: 0
NumberOfLinenumbers: 0
CheckSum: 2189213922
Number: 6
...

Some files were not shown because too many files have changed in this diff Show More