diff options
author | Zachary Turner <zturner@google.com> | 2015-02-20 23:05:57 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-02-20 23:05:57 +0000 |
commit | d1b1136e0e84bdeac1981bf9b52f300f7743f8ab (patch) | |
tree | 2f2c60d4c79307ec2670e547c6a4c087d5e2c7ea /llvm/test | |
parent | 2da9cd26d679180fa6c730e185ff2808be353bb4 (diff) | |
download | bcm5719-llvm-d1b1136e0e84bdeac1981bf9b52f300f7743f8ab.tar.gz bcm5719-llvm-d1b1136e0e84bdeac1981bf9b52f300f7743f8ab.zip |
[llvm-pdbdump] Add some tests for llvm-pdbdump.
This adds only a very basic set of tests that dump a few
functions and object files.
Differential Revision: http://reviews.llvm.org/D7656
Reviewed By: David Blaikie
llvm-svn: 230083
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/empty.cpp | 7 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/empty.pdb | bin | 0 -> 102400 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/symbolformat-fpo.cpp | 6 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/symbolformat.cpp | 24 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/Inputs/symbolformat.pdb | bin | 0 -> 110592 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/PDB/lit.local.cfg | 1 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/pdbdump-flags.test | 14 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test | 14 | ||||
-rw-r--r-- | llvm/test/lit.site.cfg.in | 1 |
9 files changed, 67 insertions, 0 deletions
diff --git a/llvm/test/DebugInfo/PDB/Inputs/empty.cpp b/llvm/test/DebugInfo/PDB/Inputs/empty.cpp new file mode 100644 index 00000000000..f27ea18832e --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/empty.cpp @@ -0,0 +1,7 @@ +// Build with "cl.exe /Zi empty.cpp /link /debug /nodefaultlib /entry:main"
+
+void *__purecall = 0;
+
+int main() {
+ return 42;
+}
diff --git a/llvm/test/DebugInfo/PDB/Inputs/empty.pdb b/llvm/test/DebugInfo/PDB/Inputs/empty.pdb Binary files differnew file mode 100644 index 00000000000..ae65c3a885c --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/empty.pdb diff --git a/llvm/test/DebugInfo/PDB/Inputs/symbolformat-fpo.cpp b/llvm/test/DebugInfo/PDB/Inputs/symbolformat-fpo.cpp new file mode 100644 index 00000000000..3a7200809d1 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/symbolformat-fpo.cpp @@ -0,0 +1,6 @@ +// Compile with "cl /GR- /Zi /c /Ox /Oy symbolformat-fpo.cpp"
+// Refer to symbolformat.cpp for linking instructions.
+
+unsigned fpo_func(unsigned n) {
+ return n * 2;
+}
diff --git a/llvm/test/DebugInfo/PDB/Inputs/symbolformat.cpp b/llvm/test/DebugInfo/PDB/Inputs/symbolformat.cpp new file mode 100644 index 00000000000..86135a4c285 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/symbolformat.cpp @@ -0,0 +1,24 @@ +// 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; }
+
+struct A {
+ virtual void PureFunc() = 0 {}
+ virtual void VirtualFunc() {}
+ void RegularFunc() {}
+};
+
+struct B : public A {
+ void PureFunc() override {}
+};
+
+int main(int argc, char **argv) {
+ B b;
+ auto PureAddr = &B::PureFunc;
+ auto VirtualAddr = &A::PureFunc;
+ auto RegularAddr = &A::RegularFunc;
+ return 0;
+}
diff --git a/llvm/test/DebugInfo/PDB/Inputs/symbolformat.pdb b/llvm/test/DebugInfo/PDB/Inputs/symbolformat.pdb Binary files differnew file mode 100644 index 00000000000..3bbc7bb1389 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/Inputs/symbolformat.pdb diff --git a/llvm/test/DebugInfo/PDB/lit.local.cfg b/llvm/test/DebugInfo/PDB/lit.local.cfg new file mode 100644 index 00000000000..28a895f5114 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/lit.local.cfg @@ -0,0 +1 @@ +config.unsupported = not config.have_dia_sdk diff --git a/llvm/test/DebugInfo/PDB/pdbdump-flags.test b/llvm/test/DebugInfo/PDB/pdbdump-flags.test new file mode 100644 index 00000000000..fd14e8a2a98 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/pdbdump-flags.test @@ -0,0 +1,14 @@ +; RUN: llvm-pdbdump %p/Inputs/empty.pdb | FileCheck %s -check-prefix SUMMARY_CHECK +; RUN: llvm-pdbdump -functions %p/Inputs/empty.pdb | FileCheck %s -check-prefix MAIN_CHECK + +; Check PDB file summary information +; SUMMARY_CHECK: empty.pdb +; SUMMARY_CHECK: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0} +; SUMMARY_CHECK: Attributes: HasPrivateSymbols + +; Check that running with only -compilands doesn't include unwanted symbol types +; MAIN_CHECK: (EBP) int32_t __cdecl main() +; MAIN_CHECK-NOT: vtbl: +; MAIN_CHECK-NOT: enum: +; MAIN_CHECK-NOT: class: +; MAIN_CHECK-NOT: data: diff --git a/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test b/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test new file mode 100644 index 00000000000..64753df16b9 --- /dev/null +++ b/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test @@ -0,0 +1,14 @@ +; RUN: llvm-pdbdump -all -hidden -group-by=compiland %p/Inputs/symbolformat.pdb | FileCheck --check-prefix=FORMAT %s + +; The format here is func [0x<rva_start>+<prologue_length> - 0x<rva_end>-<epilogue_length>] +; FORMAT: test\DebugInfo\PDB\Inputs\symbolformat-fpo.obj +; FORMAT-DAG: func [0x001130+0 - 0x001137-1] (VFrame) uint32_t __cdecl fpo_func(uint32_t) +; FORMAT: d:\src\llvm\test\DebugInfo\PDB\Inputs\symbolformat.obj +; FORMAT-DAG: func [0x001060+3 - 0x001067-2] (EBP) int32_t __cdecl _purecall() +; FORMAT-DAG: func [0x001070+6 - 0x001099-4] (EBP) int32_t __cdecl main(int32_t, char**) +; FORMAT-DAG: func [0x0010b0+7 - 0x0010c7-4] (EBP) void __thiscall A::A() +; FORMAT-DAG: func [0x0010d0+7 - 0x0010ef-4] (EBP) void __thiscall B::B() +; FORMAT-DAG: thunk [0x000010f6 - 0x000010fa] (Pcode) B::`vcall'{0}' +; FORMAT-DAG: func [0x001100+7 - 0x00110b-4] (EBP) virtual void __thiscall B::PureFunc() +; FORMAT-DAG: func [0x001110+7 - 0x00111b-4] (EBP) void __thiscall A::RegularFunc() +; FORMAT-DAG: func [0x001120+7 - 0x00112b-4] (EBP) virtual void __thiscall A::VirtualFunc() diff --git a/llvm/test/lit.site.cfg.in b/llvm/test/lit.site.cfg.in index 9336c76369a..f964a28551f 100644 --- a/llvm/test/lit.site.cfg.in +++ b/llvm/test/lit.site.cfg.in @@ -31,6 +31,7 @@ config.host_ldflags = "@HOST_LDFLAGS@" config.llvm_use_intel_jitevents = "@LLVM_USE_INTEL_JITEVENTS@" config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@" config.have_zlib = "@HAVE_LIBZ@" +config.have_dia_sdk = "@HAVE_DIA_SDK@" config.enable_ffi = "@LLVM_ENABLE_FFI@" # Support substitution of the tools_dir with user parameters. This is |