forked from OSchip/llvm-project
82 lines
1.7 KiB
C++
82 lines
1.7 KiB
C++
// Compile with "cl /c /Zi /GR- symbolformat.cpp"
|
|
// Compile symbolformat-fpo.cpp (see file for instructions)
|
|
// Link with "link symbolformat.obj symbolformat-fpo.obj /debug /nodefaultlib
|
|
// /entry:main /out:symbolformat.exe"
|
|
|
|
int __cdecl _purecall(void) { return 0; }
|
|
|
|
enum TestEnum {
|
|
Value,
|
|
Value10 = 10
|
|
};
|
|
|
|
enum class TestEnumClass {
|
|
Value,
|
|
Value10 = 10
|
|
};
|
|
|
|
struct A {
|
|
virtual void PureFunc() = 0 {}
|
|
virtual void VirtualFunc() {}
|
|
void RegularFunc() {}
|
|
};
|
|
|
|
struct VirtualBase {
|
|
};
|
|
|
|
struct B : public A, protected virtual VirtualBase {
|
|
void PureFunc() override {}
|
|
};
|
|
|
|
struct MemberTest {
|
|
enum NestedEnum {
|
|
FirstVal,
|
|
SecondVal
|
|
};
|
|
|
|
typedef int NestedTypedef;
|
|
|
|
NestedEnum m_nested_enum;
|
|
NestedTypedef m_typedef;
|
|
bool m_bool;
|
|
char m_char;
|
|
wchar_t m_wchar_t;
|
|
int m_int;
|
|
unsigned m_unsigned;
|
|
long m_long;
|
|
unsigned long m_unsigned_long;
|
|
__int64 m_int64;
|
|
unsigned __int64 m_unsigned_int64;
|
|
float m_float;
|
|
double m_double;
|
|
void (*m_pfn_2_args)(int, double);
|
|
int m_multidimensional_array[2][3];
|
|
};
|
|
|
|
typedef int IntType;
|
|
typedef A ClassAType;
|
|
|
|
int g_global_int;
|
|
void *g_global_pointer = nullptr;
|
|
|
|
typedef int int_array[3];
|
|
int_array g_array = { 1, 2, 3 };
|
|
int_array *g_pointer_to_array = &g_array;
|
|
const int *g_pointer_to_const_int = nullptr;
|
|
int * const g_const_pointer_to_int = nullptr;
|
|
const int * const g_const_pointer_to_const_int = nullptr;
|
|
|
|
int main(int argc, char **argv) {
|
|
// Force symbol references so the linker generates debug info
|
|
B b;
|
|
MemberTest members;
|
|
auto PureAddr = &B::PureFunc;
|
|
auto VirtualAddr = &A::PureFunc;
|
|
auto RegularAddr = &A::RegularFunc;
|
|
TestEnum Enum = Value;
|
|
TestEnumClass EnumClass = TestEnumClass::Value10;
|
|
IntType Int = 12;
|
|
ClassAType *ClassA = &b;
|
|
return 0;
|
|
}
|