summaryrefslogtreecommitdiffstats
path: root/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp')
-rw-r--r--lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp b/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp
new file mode 100644
index 00000000000..8fe2ea4b9a8
--- /dev/null
+++ b/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp
@@ -0,0 +1,63 @@
+// clang-format off
+
+// Test that we can set simple breakpoints using PDB on any platform.
+// RUN: clang-cl /Z7 /GS- /GR- /c %s /Fo%t.obj
+// RUN: lld-link /DEBUG /nodefaultlib /entry:main /OUT:%t.exe /PDB:%t.pdb %t.obj
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb -f %t.exe -s \
+// RUN: %p/Inputs/breakpoints.lldbinit | FileCheck %s
+
+// Use different indentation style for each overload so that the starting
+// line is in a different place.
+int OvlGlobalFn(int X) {
+ return X + 42;
+}
+
+int OvlGlobalFn(int X, int Y) { return X + Y + 42; }
+
+int OvlGlobalFn(int X, int Y, int Z)
+{
+ return X + Y + Z + 42;
+}
+
+static int StaticFn(int X) {
+ return X + 42;
+}
+
+int main(int argc, char **argv) {
+ // Make sure they don't get optimized out.
+ // Note the comments here, we want to make sure the line number reported
+ // for the breakpoint is the first actual line of code.
+ int Result = OvlGlobalFn(argc) + OvlGlobalFn(argc, argc)
+ + OvlGlobalFn(argc, argc, argc) + StaticFn(argc);
+ return Result;
+}
+
+
+// CHECK: (lldb) target create "{{.*}}simple-breakpoints.cpp.tmp.exe"
+// CHECK: Current executable set to '{{.*}}simple-breakpoints.cpp.tmp.exe' (x86_64).
+// CHECK: (lldb) break set -n main
+// CHECK: Breakpoint 1: where = simple-breakpoints.cpp.tmp.exe`main + 21
+// CHECK-SAME: at simple-breakpoints.cpp:30
+// CHECK: (lldb) break set -n OvlGlobalFn
+// CHECK: Breakpoint 2: 3 locations.
+// CHECK: (lldb) break set -n StaticFn
+// CHECK: Breakpoint 3: where = simple-breakpoints.cpp.tmp.exe`StaticFn + 5
+// CHECK-SAME: at simple-breakpoints.cpp:23
+// CHECK: (lldb) break set -n DoesntExist
+// CHECK: Breakpoint 4: no locations (pending).
+// CHECK: (lldb) break list
+// CHECK: Current breakpoints:
+// CHECK: 1: name = 'main', locations = 1
+// CHECK: 1.1: where = simple-breakpoints.cpp.tmp.exe`main + 21
+// CHECK-SAME: at simple-breakpoints.cpp:30
+// CHECK: 2: name = 'OvlGlobalFn', locations = 3
+// CHECK: 2.1: where = simple-breakpoints.cpp.tmp.exe`OvlGlobalFn + 5
+// CHECK-SAME: at simple-breakpoints.cpp:12
+// CHECK: 2.2: where = simple-breakpoints.cpp.tmp.exe`OvlGlobalFn
+// CHECK-SAME: at simple-breakpoints.cpp:15
+// CHECK: 2.3: where = simple-breakpoints.cpp.tmp.exe`OvlGlobalFn + 17
+// CHECK-SAME: at simple-breakpoints.cpp:19
+// CHECK: 3: name = 'StaticFn', locations = 1
+// CHECK: 3.1: where = simple-breakpoints.cpp.tmp.exe`StaticFn + 5
+// CHECK-SAME: at simple-breakpoints.cpp:23
+// CHECK: 4: name = 'DoesntExist', locations = 0 (pending)
OpenPOWER on IntegriCloud