You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.205
Former-commit-id: 7f59f7e792705db773f1caecdaa823092f4e2927
This commit is contained in:
parent
5cd5df71cc
commit
8e12397d70
64
external/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp
vendored
Normal file
64
external/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
// Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp"
|
||||
// Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main"
|
||||
|
||||
namespace MembersTest {
|
||||
class A {
|
||||
public:
|
||||
typedef int NestedTypedef;
|
||||
enum NestedEnum {
|
||||
NestedEnumValue1
|
||||
};
|
||||
|
||||
void MemberFunc() {}
|
||||
|
||||
private:
|
||||
int IntMemberVar;
|
||||
double DoubleMemberVar;
|
||||
};
|
||||
}
|
||||
|
||||
namespace GlobalsTest {
|
||||
int IntVar;
|
||||
double DoubleVar;
|
||||
|
||||
typedef int Typedef;
|
||||
enum Enum {
|
||||
Val1
|
||||
} EnumVar;
|
||||
Typedef TypedefVar;
|
||||
}
|
||||
|
||||
namespace BaseClassTest {
|
||||
class A {};
|
||||
class B : public virtual A {};
|
||||
class C : public virtual A {};
|
||||
class D : protected B, private C {};
|
||||
}
|
||||
|
||||
namespace UdtKindTest {
|
||||
struct A {};
|
||||
class B {};
|
||||
union C {};
|
||||
}
|
||||
|
||||
namespace BitFieldTest {
|
||||
struct A {
|
||||
int Bits1 : 1;
|
||||
int Bits2 : 2;
|
||||
int Bits3 : 3;
|
||||
int Bits4 : 4;
|
||||
int Bits22 : 22;
|
||||
int Offset0x04;
|
||||
};
|
||||
};
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
MembersTest::A v1;
|
||||
v1.MemberFunc();
|
||||
BaseClassTest::D v2;
|
||||
UdtKindTest::A v3;
|
||||
UdtKindTest::B v4;
|
||||
UdtKindTest::C v5;
|
||||
BitFieldTest::A v7;
|
||||
return 0;
|
||||
}
|
BIN
external/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb
vendored
Normal file
BIN
external/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb
vendored
Normal file
Binary file not shown.
48
external/llvm/test/tools/llvm-pdbdump/Inputs/ComplexPaddingTest.cpp
vendored
Normal file
48
external/llvm/test/tools/llvm-pdbdump/Inputs/ComplexPaddingTest.cpp
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
// Compile with "cl /c /Zi /GR- ComplexPaddingTest.cpp"
|
||||
// Link with "link ComplexPaddingTest.obj /debug /nodefaultlib /entry:main"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
extern "C" using at_exit_handler = void();
|
||||
|
||||
int atexit(at_exit_handler handler) { return 0; }
|
||||
|
||||
struct TestVB {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
virtual ~TestVB() {}
|
||||
virtual void IntroFunction1() {}
|
||||
int X;
|
||||
} A;
|
||||
|
||||
struct TestNVB {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
virtual ~TestNVB() {}
|
||||
virtual void IntroFunction2() {}
|
||||
int Y;
|
||||
} B;
|
||||
|
||||
struct TestVBLayout
|
||||
: public virtual TestVB,
|
||||
public TestNVB {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
int Z;
|
||||
} C;
|
||||
|
||||
struct TestIVBBase : public virtual TestVB {
|
||||
int A;
|
||||
} D;
|
||||
|
||||
struct TestIVBDerived : public TestIVBBase {
|
||||
int B;
|
||||
} E;
|
||||
|
||||
struct TestIVBMergedDerived
|
||||
: public virtual TestVB,
|
||||
public TestIVBBase {
|
||||
int B;
|
||||
} F;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
return 0;
|
||||
}
|
1
external/llvm/test/tools/llvm-pdbdump/Inputs/ComplexPaddingTest.pdb.REMOVED.git-id
vendored
Normal file
1
external/llvm/test/tools/llvm-pdbdump/Inputs/ComplexPaddingTest.pdb.REMOVED.git-id
vendored
Normal file
@ -0,0 +1 @@
|
||||
093276bb70816a200b7b7bfe6aa00a3ffc790c22
|
47
external/llvm/test/tools/llvm-pdbdump/Inputs/FilterTest.cpp
vendored
Normal file
47
external/llvm/test/tools/llvm-pdbdump/Inputs/FilterTest.cpp
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
// Compile with "cl /c /Zi /GR- FilterTest.cpp"
|
||||
// Link with "link FilterTest.obj /debug /nodefaultlib /entry:main"
|
||||
|
||||
class FilterTestClass {
|
||||
public:
|
||||
typedef int NestedTypedef;
|
||||
enum NestedEnum {
|
||||
NestedEnumValue1
|
||||
};
|
||||
|
||||
void MemberFunc() {}
|
||||
|
||||
int foo() const { return IntMemberVar; }
|
||||
|
||||
private:
|
||||
int IntMemberVar;
|
||||
double DoubleMemberVar;
|
||||
};
|
||||
|
||||
int IntGlobalVar;
|
||||
double DoubleGlobalVar;
|
||||
typedef int GlobalTypedef;
|
||||
char OneByte;
|
||||
char TwoBytes[2];
|
||||
char ThreeBytes[3];
|
||||
|
||||
enum GlobalEnum {
|
||||
GlobalEnumVal1
|
||||
} GlobalEnumVar;
|
||||
|
||||
int CFunc() {
|
||||
return (int)OneByte * 2;
|
||||
}
|
||||
int BFunc() {
|
||||
return 42;
|
||||
}
|
||||
int AFunc() {
|
||||
static FilterTestClass FC;
|
||||
|
||||
return (CFunc() + BFunc()) * IntGlobalVar + FC.foo();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
FilterTestClass TestClass;
|
||||
GlobalTypedef v1;
|
||||
return 0;
|
||||
}
|
BIN
external/llvm/test/tools/llvm-pdbdump/Inputs/FilterTest.pdb
vendored
Normal file
BIN
external/llvm/test/tools/llvm-pdbdump/Inputs/FilterTest.pdb
vendored
Normal file
Binary file not shown.
6
external/llvm/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.cpp
vendored
Normal file
6
external/llvm/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.cpp
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
// Compile with "cl /c /Zi /GR- LoadAddressTest.cpp"
|
||||
// Link with "link LoadAddressTest.obj /debug /nodefaultlib /entry:main"
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
return 0;
|
||||
}
|
1
external/llvm/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.pdb.REMOVED.git-id
vendored
Normal file
1
external/llvm/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.pdb.REMOVED.git-id
vendored
Normal file
@ -0,0 +1 @@
|
||||
e302e9bf3b61f436b429a74e81bdd5bda916ca61
|
168
external/llvm/test/tools/llvm-pdbdump/Inputs/SimplePaddingTest.cpp
vendored
Normal file
168
external/llvm/test/tools/llvm-pdbdump/Inputs/SimplePaddingTest.cpp
vendored
Normal file
@ -0,0 +1,168 @@
|
||||
// Compile with "cl /c /Zi /GR- SimplePaddingTest.cpp"
|
||||
// Link with "link SimplePaddingTest.obj /debug /nodefaultlib /entry:main"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
extern "C" using at_exit_handler = void();
|
||||
|
||||
int atexit(at_exit_handler handler) { return 0; }
|
||||
|
||||
struct SimplePadNoPadding {
|
||||
int32_t X;
|
||||
int32_t Y;
|
||||
// No padding anywhere, sizeof(T) = 8
|
||||
} A;
|
||||
|
||||
struct SimplePadUnion {
|
||||
union {
|
||||
int32_t X;
|
||||
int64_t Y;
|
||||
struct {
|
||||
int32_t X;
|
||||
// 4 bytes of padding here
|
||||
int64_t Y;
|
||||
} Z;
|
||||
};
|
||||
// Since the padding occurs at a location that is occupied by other storage
|
||||
// (namely the Y member), the storage will still be considered used, and so
|
||||
// there will be no unused bytes in the larger class. But in the debug
|
||||
// info for the nested struct, we should see padding.
|
||||
// sizeof(SimplePadUnion) == sizeof(Z) == 16
|
||||
} B;
|
||||
|
||||
struct SimplePadNoPadding2 {
|
||||
bool A;
|
||||
bool B;
|
||||
bool C;
|
||||
bool D;
|
||||
// No padding anywhere, sizeof(T) = 4
|
||||
} C;
|
||||
|
||||
struct alignas(4) SimplePadFields1 {
|
||||
char A;
|
||||
char B;
|
||||
char C;
|
||||
// 1 byte of padding here, sizeof(T) = 4
|
||||
} E;
|
||||
|
||||
struct SimplePadFields2 {
|
||||
int32_t Y;
|
||||
char X;
|
||||
} F;
|
||||
|
||||
struct SimplePadBase {
|
||||
// Make sure this class is 4 bytes, and the derived class requires 8 byte
|
||||
// alignment, so that padding is inserted between base and derived.
|
||||
int32_t X;
|
||||
// No padding here
|
||||
} G;
|
||||
|
||||
struct SimplePadDerived : public SimplePadBase {
|
||||
// 4 bytes of padding here due to Y requiring 8 byte alignment.
|
||||
// Thus, sizeof(T) = 16
|
||||
int64_t Y;
|
||||
} H;
|
||||
|
||||
struct SimplePadEmptyBase1 {};
|
||||
struct SimplePadEmptyBase2 {};
|
||||
|
||||
struct SimplePadEmpty : public SimplePadEmptyBase1, SimplePadEmptyBase2 {
|
||||
// Bases have to occupy at least 1 byte of storage, so this requires
|
||||
// 2 bytes of padding, plus 1 byte for each base, yielding sizeof(T) = 8
|
||||
int32_t X;
|
||||
} I;
|
||||
|
||||
struct SimplePadVfptr {
|
||||
virtual ~SimplePadVfptr() {}
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
int32_t X;
|
||||
} J;
|
||||
|
||||
struct NonEmptyBase1 {
|
||||
bool X;
|
||||
};
|
||||
|
||||
struct NonEmptyBase2 {
|
||||
bool Y;
|
||||
};
|
||||
|
||||
struct SimplePadMultiInherit : public NonEmptyBase1, public NonEmptyBase2 {
|
||||
// X and Y from the 2 bases will get squished together, leaving 2 bytes
|
||||
// of padding necessary for proper alignment of an int32.
|
||||
// Therefore, sizeof(T) = 2 + 2 + 4 = 8
|
||||
int32_t X;
|
||||
} K;
|
||||
|
||||
struct SimplePadMultiInherit2 : public SimplePadFields1, SimplePadFields2 {
|
||||
// There should be 1 byte of padding after the first class, and
|
||||
// 3 bytes of padding after the second class.
|
||||
int32_t X;
|
||||
} L;
|
||||
|
||||
struct OneLevelInherit : public NonEmptyBase1 {
|
||||
short Y;
|
||||
};
|
||||
|
||||
struct SimplePadTwoLevelInherit : public OneLevelInherit {
|
||||
// OneLevelInherit has nested padding because of its base,
|
||||
// and then padding again because of this class. So each
|
||||
// class should be 4 bytes, yielding sizeof(T) = 12.
|
||||
int64_t Z;
|
||||
} M;
|
||||
|
||||
struct SimplePadAggregate {
|
||||
NonEmptyBase1 X;
|
||||
int32_t Y;
|
||||
// the presence of X will cause 3 bytes of padding to be injected.
|
||||
SimplePadFields1 Fields;
|
||||
} N;
|
||||
|
||||
struct SimplePadVtable1 {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
virtual ~SimplePadVtable1() {}
|
||||
virtual void A1() {}
|
||||
virtual void B1() {}
|
||||
} O;
|
||||
|
||||
struct SimplePadVtable2 {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
virtual ~SimplePadVtable2() {}
|
||||
virtual void X2() {}
|
||||
virtual void Y2() {}
|
||||
virtual void Z2() {}
|
||||
} P;
|
||||
|
||||
struct SimplePadVtable3 {
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
virtual ~SimplePadVtable3() {}
|
||||
virtual void Foo3() {}
|
||||
virtual void Bar3() {}
|
||||
virtual void Baz3() {}
|
||||
virtual void Buzz3() {}
|
||||
} Q;
|
||||
|
||||
struct SimplePadMultiVTables
|
||||
: public SimplePadVtable1,
|
||||
public SimplePadVtable2,
|
||||
public SimplePadVtable3 {
|
||||
|
||||
~SimplePadMultiVTables() override {}
|
||||
static void operator delete(void *ptr, size_t sz) {}
|
||||
|
||||
// SimplePadVtable1 overrides
|
||||
void A1() override {}
|
||||
|
||||
// SimplePadVtable2 overrides
|
||||
void Y2() override {}
|
||||
void Z2() override {}
|
||||
|
||||
// SimplePadVtable3 overrides
|
||||
void Bar3() override {}
|
||||
void Baz3() override {}
|
||||
void Buzz3() override {}
|
||||
} R;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
return 0;
|
||||
}
|
1
external/llvm/test/tools/llvm-pdbdump/Inputs/SimplePaddingTest.pdb.REMOVED.git-id
vendored
Normal file
1
external/llvm/test/tools/llvm-pdbdump/Inputs/SimplePaddingTest.pdb.REMOVED.git-id
vendored
Normal file
@ -0,0 +1 @@
|
||||
f19c00660a73bc4a09deacfe9499c4dbb9388ff8
|
55
external/llvm/test/tools/llvm-pdbdump/class-layout.test
vendored
Normal file
55
external/llvm/test/tools/llvm-pdbdump/class-layout.test
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
; RUN: llvm-pdbutil pretty -all -class-recurse-depth=1 \
|
||||
; RUN: %p/Inputs/ClassLayoutTest.pdb > %t
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=GLOBALS_TEST
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=MEMBERS_TEST
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_A
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_B
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_C
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_D
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=UDT_KIND_TEST
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=BITFIELD_TEST
|
||||
|
||||
; GLOBALS_TEST: ---GLOBALS---
|
||||
; GLOBALS_TEST-DAG: int GlobalsTest::IntVar
|
||||
; GLOBALS_TEST-DAG: double GlobalsTest::DoubleVar
|
||||
; GLOBALS_TEST-DAG: GlobalsTest::Enum GlobalsTest::EnumVar
|
||||
|
||||
; MEMBERS_TEST: ---TYPES---
|
||||
; MEMBERS_TEST: class MembersTest::A [sizeof = 16] {
|
||||
; MEMBERS_TEST-DAG: typedef int NestedTypedef
|
||||
; MEMBERS_TEST-DAG: enum NestedEnum
|
||||
; MEMBERS_TEST: void MemberFunc()
|
||||
; MEMBERS_TEST-DAG: data +0x00 [sizeof=4] int IntMemberVar
|
||||
; MEMBERS_TEST-NEXT: <padding> (4 bytes)
|
||||
; MEMBERS_TEST-NEXT: data +0x08 [sizeof=8] double DoubleMemberVar
|
||||
; MEMBERS_TEST: }
|
||||
|
||||
; BASE_CLASS_A: ---TYPES---
|
||||
; BASE_CLASS_A: class BaseClassTest::A [sizeof = 1] {}
|
||||
|
||||
; BASE_CLASS_B: ---TYPES---
|
||||
; BASE_CLASS_B: class BaseClassTest::B [sizeof = 4]
|
||||
; BASE_CLASS_B-NEXT: : public virtual BaseClassTest::A {
|
||||
|
||||
; BASE_CLASS_C: ---TYPES---
|
||||
; BASE_CLASS_C: class BaseClassTest::C [sizeof = 4]
|
||||
; BASE_CLASS_C-NEXT: : public virtual BaseClassTest::A {
|
||||
|
||||
; BASE_CLASS_D: ---TYPES---
|
||||
; BASE_CLASS_D: class BaseClassTest::D [sizeof = 8]
|
||||
; BASE_CLASS_D-NEXT: protected BaseClassTest::B
|
||||
; BASE_CLASS_D-NEXT: private BaseClassTest::C
|
||||
|
||||
; UDT_KIND_TEST: ---TYPES---
|
||||
; UDT_KIND_TEST-DAG: union UdtKindTest::C [sizeof = 1] {}
|
||||
; UDT_KIND_TEST-DAG: class UdtKindTest::B [sizeof = 1] {}
|
||||
; UDT_KIND_TEST-DAG: struct UdtKindTest::A [sizeof = 1] {}
|
||||
|
||||
; BITFIELD_TEST: ---TYPES---
|
||||
; BITFIELD_TEST: struct BitFieldTest::A [sizeof = 8] {
|
||||
; BITFIELD_TEST-NEXT: +0x00 [sizeof=4] int Bits1 : 1
|
||||
; BITFIELD_TEST-NEXT: +0x00 [sizeof=4] int Bits2 : 2
|
||||
; BITFIELD_TEST-NEXT: +0x00 [sizeof=4] int Bits3 : 3
|
||||
; BITFIELD_TEST-NEXT: +0x00 [sizeof=4] int Bits4 : 4
|
||||
; BITFIELD_TEST-NEXT: +0x00 [sizeof=4] int Bits22 : 22
|
||||
; BITFIELD_TEST-NEXT: +0x04 [sizeof=4] int Offset0x04
|
53
external/llvm/test/tools/llvm-pdbdump/complex-padding-graphical.test
vendored
Normal file
53
external/llvm/test/tools/llvm-pdbdump/complex-padding-graphical.test
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
; RUN: llvm-pdbutil pretty -classes -class-definitions=layout \
|
||||
; RUN: -include-types=Test %p/Inputs/ComplexPaddingTest.pdb > %t
|
||||
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=DIRECT_VB_ONLY
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=DIRECT_VB_AND_NON_VB
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=INDIRECT_VB
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=INDIRECT_AND_DIRECT_VB
|
||||
|
||||
|
||||
; DIRECT_VB_ONLY: struct TestIVBBase [sizeof = 16]
|
||||
; DIRECT_VB_ONLY-NEXT: : public virtual TestVB {
|
||||
; DIRECT_VB_ONLY-NEXT: vbptr +0x00 [sizeof=4]
|
||||
; DIRECT_VB_ONLY-NEXT: data +0x04 [sizeof=4] int A
|
||||
; DIRECT_VB_ONLY-NEXT: vbase +0x08 [sizeof=8] TestVB
|
||||
; DIRECT_VB_ONLY-NEXT: vfptr +0x08 [sizeof=4]
|
||||
; DIRECT_VB_ONLY-NEXT: data +0x0c [sizeof=4] int X
|
||||
; DIRECT_VB_ONLY-NEXT: }
|
||||
|
||||
DIRECT_VB_AND_NON_VB: struct TestVBLayout [sizeof = 24]
|
||||
DIRECT_VB_AND_NON_VB-NEXT: : public TestNVB
|
||||
DIRECT_VB_AND_NON_VB-NEXT: , public virtual TestVB {
|
||||
DIRECT_VB_AND_NON_VB-NEXT: base +0x00 [sizeof=8] TestNVB
|
||||
DIRECT_VB_AND_NON_VB-NEXT: vfptr +0x00 [sizeof=4]
|
||||
DIRECT_VB_AND_NON_VB-NEXT: data +0x04 [sizeof=4] int Y
|
||||
DIRECT_VB_AND_NON_VB-NEXT: vbptr +0x08 [sizeof=4]
|
||||
DIRECT_VB_AND_NON_VB-NEXT: data +0x0c [sizeof=4] int Z
|
||||
DIRECT_VB_AND_NON_VB-NEXT: vbase +0x10 [sizeof=8] TestVB
|
||||
DIRECT_VB_AND_NON_VB-NEXT: vfptr +0x10 [sizeof=4]
|
||||
DIRECT_VB_AND_NON_VB-NEXT: data +0x14 [sizeof=4] int X
|
||||
DIRECT_VB_AND_NON_VB-NEXT: }
|
||||
|
||||
INDIRECT_VB: struct TestIVBDerived [sizeof = 20]
|
||||
INDIRECT_VB-NEXT: : public TestIVBBase {
|
||||
INDIRECT_VB-NEXT: base +0x00 [sizeof=8] TestIVBBase
|
||||
INDIRECT_VB-NEXT: vbptr +0x00 [sizeof=4]
|
||||
INDIRECT_VB-NEXT: data +0x04 [sizeof=4] int A
|
||||
INDIRECT_VB-NEXT: data +0x08 [sizeof=4] int B
|
||||
INDIRECT_VB-NEXT: ivbase +0x0c [sizeof=8] TestVB
|
||||
INDIRECT_VB-NEXT: vfptr +0x0c [sizeof=4]
|
||||
INDIRECT_VB-NEXT: data +0x10 [sizeof=4] int X
|
||||
INDIRECT_VB-NEXT: }
|
||||
|
||||
INDIRECT_AND_DIRECT_VB: struct TestIVBMergedDerived [sizeof = 20]
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: : public TestIVBBase
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: , public virtual TestVB {
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: base +0x00 [sizeof=8] TestIVBBase
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: vbptr +0x00 [sizeof=4]
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: data +0x04 [sizeof=4] int A
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: data +0x08 [sizeof=4] int B
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: vbase +0x0c [sizeof=8] TestVB
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: vfptr +0x0c [sizeof=4]
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: data +0x10 [sizeof=4] int X
|
||||
INDIRECT_AND_DIRECT_VB-NEXT: }
|
20
external/llvm/test/tools/llvm-pdbdump/enum-layout.test
vendored
Normal file
20
external/llvm/test/tools/llvm-pdbdump/enum-layout.test
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
; RUN: llvm-pdbutil pretty -types %p/Inputs/ClassLayoutTest.pdb > %t
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=GLOBAL_ENUM
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=MEMBER_ENUM
|
||||
|
||||
; GLOBAL_ENUM: ---TYPES---
|
||||
; GLOBAL_ENUM: Enums:
|
||||
; GLOBAL_ENUM: enum GlobalsTest::Enum {
|
||||
; GLOBAL_ENUM-NEXT: Val1 = 0
|
||||
; GLOBAL_ENUM-NEXT: }
|
||||
|
||||
; MEMBER_ENUM: ---TYPES---
|
||||
; MEMBER_ENUM: Classes:
|
||||
; MEMBER_ENUM: struct __vc_attributes::threadingAttribute [sizeof = 4] {
|
||||
; MEMBER_ENUM-NEXT: enum threading_e {
|
||||
; MEMBER_ENUM-NEXT: apartment = 1
|
||||
; MEMBER_ENUM-NEXT: single = 2
|
||||
; MEMBER_ENUM-NEXT: free = 3
|
||||
; MEMBER_ENUM-NEXT: neutral = 4
|
||||
; MEMBER_ENUM-NEXT: both = 5
|
||||
; MEMBER_ENUM-NEXT: }
|
1
external/llvm/test/tools/llvm-pdbdump/lit.local.cfg
vendored
Normal file
1
external/llvm/test/tools/llvm-pdbdump/lit.local.cfg
vendored
Normal file
@ -0,0 +1 @@
|
||||
config.unsupported = not config.have_dia_sdk
|
10
external/llvm/test/tools/llvm-pdbdump/load-address.test
vendored
Normal file
10
external/llvm/test/tools/llvm-pdbdump/load-address.test
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: llvm-pdbutil pretty -externals %p/Inputs/LoadAddressTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=RVA %s
|
||||
; RUN: llvm-pdbutil pretty -externals -load-address=0x40000000 \
|
||||
; RUN: %p/Inputs/LoadAddressTest.pdb | FileCheck --check-prefix=VA %s
|
||||
|
||||
; RVA: ---EXTERNALS---
|
||||
; RVA: [0x00001010] _main
|
||||
|
||||
; VA: ---EXTERNALS---
|
||||
; VA: [0x40001010] _main
|
29
external/llvm/test/tools/llvm-pdbdump/partial-type-stream.test
vendored
Normal file
29
external/llvm/test/tools/llvm-pdbdump/partial-type-stream.test
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
; RUN: llvm-pdbutil dump -type-index=0x1019 %p/Inputs/ClassLayoutTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=NODEPS %s
|
||||
; RUN: llvm-pdbutil dump -type-index=0x1019 -dependents %p/Inputs/ClassLayoutTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=DEPS %s
|
||||
|
||||
|
||||
NODEPS: Types (TPI Stream)
|
||||
NODEPS-NEXT: ============================================================
|
||||
NODEPS-NEXT: Showing 1 records.
|
||||
NODEPS-NEXT: 0x1019 | LF_MFUNCTION [size = 28]
|
||||
NODEPS-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100E
|
||||
NODEPS-NEXT: class type = 0x1017, this type = 0x1018, this adjust = 0
|
||||
NODEPS-NEXT: calling conv = thiscall, options = None
|
||||
|
||||
|
||||
DEPS: Types (TPI Stream)
|
||||
DEPS-NEXT: ============================================================
|
||||
DEPS-NEXT: Showing 1 records and their dependents (4 records total)
|
||||
DEPS-NEXT: 0x100E | LF_ARGLIST [size = 8]
|
||||
DEPS-NEXT: 0x1017 | LF_CLASS [size = 60] `MembersTest::A`
|
||||
DEPS-NEXT: unique name: `.?AVA@MembersTest@@`
|
||||
DEPS-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
|
||||
DEPS-NEXT: options: forward ref | has unique name
|
||||
DEPS-NEXT: 0x1018 | LF_POINTER [size = 12]
|
||||
DEPS-NEXT: referent = 0x1017, mode = pointer, opts = const, kind = ptr32
|
||||
DEPS-NEXT: 0x1019 | LF_MFUNCTION [size = 28]
|
||||
DEPS-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100E
|
||||
DEPS-NEXT: class type = 0x1017, this type = 0x1018, this adjust = 0
|
||||
DEPS-NEXT: calling conv = thiscall, options = None
|
96
external/llvm/test/tools/llvm-pdbdump/regex-filter.test
vendored
Normal file
96
external/llvm/test/tools/llvm-pdbdump/regex-filter.test
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
; RUN: llvm-pdbutil pretty -module-syms -globals -types %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=NO_FILTER %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -types -exclude-types="GlobalTypedef|NestedTypedef" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_TYPEDEFS %s
|
||||
; RUN: llvm-pdbutil pretty -classes -enums %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=EXCLUDE_TYPEDEFS %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -types -exclude-types="GlobalEnum|NestedEnum" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_ENUMS %s
|
||||
; RUN: llvm-pdbutil pretty -classes -typedefs %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=EXCLUDE_ENUMS %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -types -module-syms -globals -exclude-symbols="MemberVar|GlobalVar" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_VARS %s
|
||||
; RUN: llvm-pdbutil pretty -types -exclude-types="FilterTestClass" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_WHOLE_CLASS %s
|
||||
; RUN: llvm-pdbutil pretty -module-syms -globals -exclude-compilands="FilterTest.obj" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_COMPILAND %s
|
||||
; RUN: llvm-pdbutil pretty -types -include-types="FilterTestClass" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=INCLUDE_ONLY_TYPES %s
|
||||
; RUN: llvm-pdbutil pretty -types -module-syms -globals -include-symbols="[[:<:]](IntGlobalVar|DoubleGlobalVar)[[:>:]]" \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=INCLUDE_ONLY_VARS %s
|
||||
|
||||
; NO_FILTER: ---TYPES---
|
||||
; NO_FILTER: Enums:
|
||||
; NO_FILTER: enum GlobalEnum
|
||||
; NO_FILTER: Typedefs
|
||||
; NO_FILTER: typedef int GlobalTypedef
|
||||
; NO_FILTER: Classes:
|
||||
; NO_FILTER: struct __vc_attributes
|
||||
; NO_FILTER: class FilterTestClass
|
||||
; NO_FILTER-DAG: typedef int NestedTypedef
|
||||
; NO_FILTER-DAG: enum NestedEnum
|
||||
; NO_FILTER-DAG: int IntMemberVar
|
||||
; NO_FILTER-DAG: double DoubleMemberVar
|
||||
; NO_FILTER: ---SYMBOLS---
|
||||
; NO_FILTER: Inputs\FilterTest.obj
|
||||
; NO_FILTER: int __cdecl main(int argc, char** argv)
|
||||
; NO_FILTER: ---GLOBALS---
|
||||
; NO_FILTER-DAG: double DoubleGlobalVar
|
||||
; NO_FILTER-DAG: int IntGlobalVar
|
||||
; NO_FILTER-DAG: GlobalEnum GlobalEnumVar
|
||||
|
||||
; EXCLUDE_TYPEDEFS: ---TYPES---
|
||||
; EXCLUDE_TYPEDEFS-NOT: GlobalTypedef
|
||||
; EXCLUDE_TYPEDEFS-NOT: NestedTypedef
|
||||
; EXCLUDE_TYPEDEFS-DAG: GlobalEnum
|
||||
; EXCLUDE_TYPEDEFS-DAG: NestedEnum
|
||||
; EXCLUDE_TYPEDEFS: class FilterTestClass
|
||||
|
||||
; EXCLUDE_ENUMS: ---TYPES---
|
||||
; EXCLUDE_ENUMS-NOT: GlobalEnum
|
||||
; EXCLUDE_ENUMS-NOT: NestedEnum
|
||||
; EXCLUDE_ENUMS: GlobalTypedef
|
||||
; EXCLUDE_ENUMS: class FilterTestClass
|
||||
|
||||
; EXCLUDE_VARS: ---TYPES---
|
||||
; EXCLUDE_VARS-NOT: IntMemberVar
|
||||
; EXCLUDE_VARS-NOT: DoubleMemberVar
|
||||
; EXCLUDE_VARS-DAG: GlobalEnum
|
||||
; EXCLUDE_VARS-DAG: NestedEnum
|
||||
; EXCLUDE_VARS: GlobalTypedef
|
||||
; EXCLUDE_VARS: class FilterTestClass
|
||||
; EXCLUDE_VARS: ---GLOBALS---
|
||||
; EXCLUDE_VARS-NOT: DoubleGlobalVar
|
||||
; EXCLUDE_VARS-NOT: IntGlobalVar
|
||||
|
||||
; EXCLUDE_WHOLE_CLASS: ---TYPES---
|
||||
; EXCLUDE_WHOLE_CLASS-NOT: class FilterTestClass
|
||||
; EXCLUDE_WHOLE_CLASS-NOT: typedef int NestedTypedef
|
||||
; EXCLUDE_WHOLE_CLASS-NOT: enum NestedEnum
|
||||
; EXCLUDE_WHOLE_CLASS-NOT: int IntMemberVar
|
||||
; EXCLUDE_WHOLE_CLASS-NOT: double DoubleMemberVar
|
||||
|
||||
; EXCLUDE_COMPILAND: ---SYMBOLS---
|
||||
; EXCLUDE_COMPILAND-NOT: FilterTest.obj
|
||||
; EXCLUDE_COMPILAND-NOT: __cdecl main
|
||||
; EXCLUDE_COMPILAND: * Linker *
|
||||
; EXCLUDE_COMPILAND: ---GLOBALS---
|
||||
|
||||
; Everything but types are displayed normally. But FilterTestClass is
|
||||
; the only type that should be displayed.
|
||||
; INCLUDE_ONLY_TYPES: ---TYPES---
|
||||
; INCLUDE_ONLY_TYPES-NOT: GlobalTypedef
|
||||
; INCLUDE_ONLY_TYPES: class FilterTestClass
|
||||
|
||||
; We should only see DoubleGlobalVar and IntGlobalVar. This means that even
|
||||
; variables printed in class definitions should be filtered out.
|
||||
; INCLUDE_ONLY_VARS: ---TYPES---
|
||||
; INCLUDE_ONLY_VARS: class FilterTestClass
|
||||
; INCLUDE_ONLY_VARS-NOT: IntMemberVar
|
||||
; INCLUDE_ONLY_VARS-NOT: IntDoubleVar
|
||||
; INCLUDE_ONLY_VARS: ---GLOBALS---
|
||||
; INCLUDE_ONLY_VARS: DoubleGlobalVar
|
||||
; INCLUDE_ONLY_VARS: IntGlobalVar
|
125
external/llvm/test/tools/llvm-pdbdump/simple-padding-graphical.test
vendored
Normal file
125
external/llvm/test/tools/llvm-pdbdump/simple-padding-graphical.test
vendored
Normal file
@ -0,0 +1,125 @@
|
||||
; RUN: llvm-pdbutil pretty -classes -class-definitions=layout \
|
||||
; RUN: -include-types=SimplePad %p/Inputs/SimplePaddingTest.pdb > %t
|
||||
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=NO_PADDING
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=UNION
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=NESTED_UNION
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_FROM_FIELDS1
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_FROM_FIELDS2
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=NO_PAD_IN_BASE
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_IN_DERIVED
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=EMPTY_BASE
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=VFPTR
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=MULTIPLE_INHERIT
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=MULTIPLE_INHERIT2
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=DEEP_INHERIT
|
||||
; RUN: FileCheck -input-file=%t %s -check-prefix=AGGREGATE
|
||||
|
||||
; NO_PADDING: struct SimplePadNoPadding [sizeof = 8] {
|
||||
; NO_PADDING-NEXT: data +0x00 [sizeof=4] int X
|
||||
; NO_PADDING-NEXT: data +0x04 [sizeof=4] int Y
|
||||
; NO_PADDING-NEXT: }
|
||||
|
||||
; UNION: struct SimplePadUnion [sizeof = 16] {
|
||||
; UNION-NEXT: data +0x00 [sizeof=4] int X
|
||||
; UNION-NEXT: data +0x00 [sizeof=8] __int64 Y
|
||||
; UNION-NEXT: data +0x00 [sizeof=16] SimplePadUnion::
|
||||
; UNION-NEXT: data +0x00 [sizeof=4] int X
|
||||
; UNION-NEXT: <padding> (4 bytes)
|
||||
; UNION-NEXT: data +0x08 [sizeof=8] __int64 Y
|
||||
; UNION-NEXT: }
|
||||
|
||||
; NESTED_UNION: struct {{SimplePadUnion::.*}} [sizeof = 16] {
|
||||
; NESTED_UNION-NEXT: data +0x00 [sizeof=4] int X
|
||||
; NESTED_UNION-NEXT: <padding> (4 bytes)
|
||||
; NESTED_UNION-NEXT: data +0x08 [sizeof=8] __int64 Y
|
||||
; NESTED_UNION-NEXT: }
|
||||
|
||||
; PAD_FROM_FIELDS1: struct SimplePadFields1 [sizeof = 4] {
|
||||
; PAD_FROM_FIELDS1-NEXT: data +0x00 [sizeof=1] char A
|
||||
; PAD_FROM_FIELDS1-NEXT: data +0x01 [sizeof=1] char B
|
||||
; PAD_FROM_FIELDS1-NEXT: data +0x02 [sizeof=1] char C
|
||||
; PAD_FROM_FIELDS1-NEXT: <padding> (1 bytes)
|
||||
; PAD_FROM_FIELDS1-NEXT: }
|
||||
|
||||
; PAD_FROM_FIELDS2: struct SimplePadFields2 [sizeof = 8] {
|
||||
; PAD_FROM_FIELDS2-NEXT: data +0x00 [sizeof=4] int Y
|
||||
; PAD_FROM_FIELDS2-NEXT: data +0x04 [sizeof=1] char X
|
||||
; PAD_FROM_FIELDS2-NEXT: <padding> (3 bytes)
|
||||
; PAD_FROM_FIELDS2-NEXT: }
|
||||
|
||||
; NO_PAD_IN_BASE: struct SimplePadBase [sizeof = 4] {
|
||||
; NO_PAD_IN_BASE-NEXT: data +0x00 [sizeof=4] int X
|
||||
; NO_PAD_IN_BASE-NEXT: }
|
||||
|
||||
; PAD_IN_DERIVED: struct SimplePadDerived [sizeof = 16]
|
||||
; PAD_IN_DERIVED-NEXT: : public SimplePadBase {
|
||||
; PAD_IN_DERIVED-NEXT: base +0x00 [sizeof=4] SimplePadBase
|
||||
; PAD_IN_DERIVED-NEXT: data +0x00 [sizeof=4] int X
|
||||
; PAD_IN_DERIVED-NEXT: <padding> (4 bytes)
|
||||
; PAD_IN_DERIVED-NEXT: data +0x08 [sizeof=8] __int64 Y
|
||||
; PAD_IN_DERIVED-NEXT: }
|
||||
|
||||
; EMPTY_BASE: struct SimplePadEmpty [sizeof = 8]
|
||||
; EMPTY_BASE-NEXT: : public SimplePadEmptyBase1
|
||||
; EMPTY_BASE-NEXT: , public SimplePadEmptyBase2 {
|
||||
; EMPTY_BASE-NEXT: base +0x00 [sizeof=1] SimplePadEmptyBase1
|
||||
; EMPTY_BASE-NEXT: base +0x01 [sizeof=1] SimplePadEmptyBase2
|
||||
; EMPTY_BASE-NEXT: <padding> (2 bytes)
|
||||
; EMPTY_BASE-NEXT: data +0x04 [sizeof=4] int X
|
||||
; EMPTY_BASE-NEXT: }
|
||||
|
||||
; VFPTR: struct SimplePadVfptr [sizeof = 8] {
|
||||
; VFPTR-NEXT: vfptr +0x00 [sizeof=4]
|
||||
; VFPTR-NEXT: data +0x04 [sizeof=4] int X
|
||||
; VFPTR-NEXT: }
|
||||
|
||||
; MULTIPLE_INHERIT: struct SimplePadMultiInherit [sizeof = 8]
|
||||
; MULTIPLE_INHERIT-NEXT: : public NonEmptyBase1
|
||||
; MULTIPLE_INHERIT-NEXT: , public NonEmptyBase2 {
|
||||
; MULTIPLE_INHERIT-NEXT: base +0x00 [sizeof=1] NonEmptyBase1
|
||||
; MULTIPLE_INHERIT-NEXT: data +0x00 [sizeof=1] bool X
|
||||
; MULTIPLE_INHERIT-NEXT: base +0x01 [sizeof=1] NonEmptyBase2
|
||||
; MULTIPLE_INHERIT-NEXT: data +0x01 [sizeof=1] bool Y
|
||||
; MULTIPLE_INHERIT-NEXT: <padding> (2 bytes)
|
||||
; MULTIPLE_INHERIT-NEXT: data +0x04 [sizeof=4] int X
|
||||
; MULTIPLE_INHERIT-NEXT: }
|
||||
|
||||
; MULTIPLE_INHERIT2: SimplePadMultiInherit2 [sizeof = 16]
|
||||
; MULTIPLE_INHERIT2-NEXT: : public SimplePadFields1
|
||||
; MULTIPLE_INHERIT2-NEXT: , public SimplePadFields2 {
|
||||
; MULTIPLE_INHERIT2-NEXT: base +0x00 [sizeof=3] SimplePadFields1
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x00 [sizeof=1] char A
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x01 [sizeof=1] char B
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x02 [sizeof=1] char C
|
||||
; MULTIPLE_INHERIT2-NEXT: <padding> (1 bytes)
|
||||
; MULTIPLE_INHERIT2-NEXT: base +0x04 [sizeof=5] SimplePadFields2
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x04 [sizeof=4] int Y
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x08 [sizeof=1] char X
|
||||
; MULTIPLE_INHERIT2-NEXT: <padding> (3 bytes)
|
||||
; MULTIPLE_INHERIT2-NEXT: data +0x0c [sizeof=4] int X
|
||||
; MULTIPLE_INHERIT2-NEXT: }
|
||||
|
||||
; DEEP_INHERIT: struct SimplePadTwoLevelInherit [sizeof = 16]
|
||||
; DEEP_INHERIT-NEXT: : public OneLevelInherit {
|
||||
; DEEP_INHERIT-NEXT: base +0x00 [sizeof=4] OneLevelInherit
|
||||
; DEEP_INHERIT-NEXT: base +0x00 [sizeof=1] NonEmptyBase1
|
||||
; DEEP_INHERIT-NEXT: data +0x00 [sizeof=1] bool X
|
||||
; DEEP_INHERIT-NEXT: <padding> (1 bytes)
|
||||
; DEEP_INHERIT-NEXT: data +0x02 [sizeof=2] short Y
|
||||
; DEEP_INHERIT-NEXT: <padding> (4 bytes)
|
||||
; DEEP_INHERIT-NEXT: data +0x08 [sizeof=8] __int64 Z
|
||||
; DEEP_INHERIT-NEXT: }
|
||||
|
||||
|
||||
; AGGREGATE: struct SimplePadAggregate [sizeof = 12] {
|
||||
; AGGREGATE-NEXT: data +0x00 [sizeof=1] NonEmptyBase1 X
|
||||
; AGGREGATE-NEXT: data +0x00 [sizeof=1] bool X
|
||||
; AGGREGATE-NEXT: <padding> (3 bytes)
|
||||
; AGGREGATE-NEXT: data +0x04 [sizeof=4] int Y
|
||||
; AGGREGATE-NEXT: data +0x08 [sizeof=4] SimplePadFields1 Fields
|
||||
; AGGREGATE-NEXT: data +0x08 [sizeof=1] char A
|
||||
; AGGREGATE-NEXT: data +0x09 [sizeof=1] char B
|
||||
; AGGREGATE-NEXT: data +0x0a [sizeof=1] char C
|
||||
; AGGREGATE-NEXT: <padding> (1 bytes)
|
||||
; AGGREGATE-NEXT: }
|
74
external/llvm/test/tools/llvm-pdbdump/symbol-filters.test
vendored
Normal file
74
external/llvm/test/tools/llvm-pdbdump/symbol-filters.test
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=data %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=ONLY_DATA %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=thunks %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=ONLY_THUNKS %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=funcs %p/Inputs/FilterTest.pdb \
|
||||
; RUN: | FileCheck --check-prefix=ONLY_FUNCS %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=funcs -sym-types=data \
|
||||
; RUN: %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=TWO_TYPES %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=data \
|
||||
; RUN: -symbol-order=name %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=NAME_SORT_DATA %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=data \
|
||||
; RUN: -symbol-order=size %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=SIZE_SORT_DATA %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=funcs \
|
||||
; RUN: -symbol-order=name %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=NAME_SORT_FUNCS %s
|
||||
|
||||
; RUN: llvm-pdbutil pretty -globals -module-syms -sym-types=funcs \
|
||||
; RUN: -symbol-order=size %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=SIZE_SORT_FUNCS %s
|
||||
|
||||
; ONLY_DATA-NOT: func
|
||||
; ONLY_DATA-NOT: thunk
|
||||
; ONLY_DATA-DAG: data {{.*}} static char OneByte
|
||||
; ONLY_DATA-DAG: data {{.*}} static double DoubleGlobalVar
|
||||
; ONLY_DATA-DAG: data {{.*}} static char TwoBytes[2]
|
||||
; ONLY_DATA-DAG: data {{.*}} static char ThreeBytes[3]
|
||||
; ONLY_DATA-DAG: data {{.*}} static int IntGlobalVar
|
||||
; ONLY_DATA-DAG: data {{.*}} static GlobalEnum GlobalEnumVar
|
||||
|
||||
; ONLY_FUNCS-NOT: data
|
||||
; ONLY_FUNCS-NOT: thunk
|
||||
; ONLY_FUNCS: func {{.*}} int __cdecl main(int argc, char** argv)
|
||||
; ONLY_FUNCS: func {{.*}} int __cdecl CFunc()
|
||||
; ONLY_FUNCS: func {{.*}} int __cdecl BFunc()
|
||||
; ONLY_FUNCS: func {{.*}} int __cdecl AFunc()
|
||||
; ONLY_FUNCS: func {{.*}} int FilterTestClass::foo()
|
||||
|
||||
; ONLY_THUNKS-NOT: func
|
||||
; ONLY_THUNKS-NOT: data
|
||||
; ONLY_THUNKS-DAG: thunk {{.*}} (TrampIncremental)
|
||||
|
||||
; TWO_TYPES-NOT: thunk
|
||||
; TWO_TYPES-DAG: func {{.*}} int __cdecl main(int argc, char** argv)
|
||||
; TWO_TYPES-DAG: data {{.*}} static double DoubleGlobalVar
|
||||
|
||||
; NAME_SORT_DATA: data {{.*}} static double DoubleGlobalVar
|
||||
; NAME_SORT_DATA: data {{.*}} static GlobalEnum GlobalEnumVar
|
||||
; NAME_SORT_DATA: data {{.*}} static int IntGlobalVar
|
||||
; NAME_SORT_DATA: data {{.*}} static char OneByte
|
||||
; NAME_SORT_DATA: data {{.*}} static char ThreeBytes[3]
|
||||
; NAME_SORT_DATA: data {{.*}} static char TwoBytes[2]
|
||||
|
||||
; SIZE_SORT_DATA: data {{.*}}sizeof=8{{.*}}double DoubleGlobalVar
|
||||
; SIZE_SORT_DATA-DAG: data {{.*}}sizeof=4{{.*}}GlobalEnum GlobalEnumVar
|
||||
; SIZE_SORT_DATA-DAG: data {{.*}}sizeof=4{{.*}}int IntGlobalVar
|
||||
; SIZE_SORT_DATA: data {{.*}}sizeof=3{{.*}}char ThreeBytes[3]
|
||||
; SIZE_SORT_DATA: data {{.*}}sizeof=2{{.*}}char TwoBytes[2]
|
||||
; SIZE_SORT_DATA: data {{.*}}sizeof=1{{.*}}char OneByte
|
||||
|
||||
; NAME_SORT_FUNCS: func {{.*}}sizeof= 40{{.*}}AFunc
|
||||
; NAME_SORT_FUNCS: func {{.*}}sizeof= 10{{.*}}BFunc
|
||||
; NAME_SORT_FUNCS: func {{.*}}sizeof= 14{{.*}}CFunc
|
||||
; NAME_SORT_FUNCS: func {{.*}}sizeof= 16{{.*}}FilterTestClass::foo
|
||||
; NAME_SORT_FUNCS: func {{.*}}sizeof= 7{{.*}}main
|
||||
|
||||
; SIZE_SORT_FUNCS: func {{.*}}sizeof= 40{{.*}}AFunc
|
||||
; SIZE_SORT_FUNCS: func {{.*}}sizeof= 16{{.*}}FilterTestClass::foo
|
||||
; SIZE_SORT_FUNCS: func {{.*}}sizeof= 14{{.*}}CFunc
|
||||
; SIZE_SORT_FUNCS: func {{.*}}sizeof= 10{{.*}}BFunc
|
||||
; SIZE_SORT_FUNCS: func {{.*}}sizeof= 7{{.*}}main
|
Reference in New Issue
Block a user