Files
clang-p2996/debuginfo-tests/win_cdb/realigned-frame.cpp
Reid Kleckner 75d38f1e48 Add debuginfo-tests that use cdb on Windows
This is an initial prototype of how we can run debugger integration
tests on Windows. cdb and windbg share a command language and debugger
engine. Visual Studio has its own, but we should at least be able to use
cdb as the basis for optimized debug info integration tests.

There's a lot of work to do here still. For example:
- Make fewer assumptions about the SDK location
- Don't assume x64 (important, I need x86 testing)
- More environment isolation, have lit setup vcvars instead of passing
  LIB and INCLUDE down.
- Write a .py file to replace the grep+sed RUN line

But, this seemed like a good enough concept to commit as is, since it's
useful to me already.

Reviewers: aprantl, zturner

Differential Revision: https://reviews.llvm.org/D54187

llvm-svn: 361889
2019-05-28 23:03:33 +00:00

35 lines
852 B
C++

// RUN: %clang_cl %s -o %t.exe -fuse-ld=lld -Z7
// RUN: grep DE[B]UGGER: %s | sed -e 's/.*DE[B]UGGER: //' > %t.script
// RUN: %cdb -cf %t.script %t.exe | FileCheck %s --check-prefixes=DEBUGGER,CHECK
// From https://llvm.org/pr38857, where we had issues with stack realignment.
struct Foo {
int x = 42;
int __declspec(noinline) foo();
void __declspec(noinline) bar(int *a, int *b, double *c);
};
int Foo::foo() {
int a = 1;
int b = 2;
double __declspec(align(32)) force_alignment = 0.42;
bar(&a, &b, &force_alignment);
// DEBUGGER: g
// DEBUGGER: .frame 1
// DEBUGGER: dv
// CHECK: a = 0n1
// CHECK: b = 0n2
// CHECK: force_alignment = 0.41999{{.*}}
// DEBUGGER: q
x += (int)force_alignment;
return x;
}
void Foo::bar(int *a, int *b, double *c) {
__debugbreak();
*c += *a + *b;
}
int main() {
Foo o;
o.foo();
}