summaryrefslogtreecommitdiffstats
path: root/lldb/lit/SymbolFile
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2019-01-02 18:32:50 +0000
committerZachary Turner <zturner@google.com>2019-01-02 18:32:50 +0000
commitb3130b4fdf5824ec9b33eaac580a57fa8edd1147 (patch)
tree12f719ab52931b2358688f4b7648686c100dc001 /lldb/lit/SymbolFile
parent8dd7bd2cd7575e125307b2d392d45ecfbe0ac1f4 (diff)
downloadbcm5719-llvm-b3130b4fdf5824ec9b33eaac580a57fa8edd1147.tar.gz
bcm5719-llvm-b3130b4fdf5824ec9b33eaac580a57fa8edd1147.zip
[NativePDB] Fix setting breakpoint by file and line.
There were several problems preventing this from working. The first is that when the PDB had an absolute path to the main source file, we would construct an invalid path by prepending the compilation directory to it anyway. So we needed to check if the path is already absolute first. Second, LLDB assumes that the zero'th item in the support file list is the main compilation unit. We were respecting this requirement, but LLDB *also* requires that file to appear somewhere in the list starting from index 1 as well. So the main compilation file should appear in the support file list twice. And when parsing a line table, it expects the LineEntry records to be constructed using the 1-based index. With these two fixes we can now set breakpoints by file and line using the native PDB reader. llvm-svn: 350240
Diffstat (limited to 'lldb/lit/SymbolFile')
-rw-r--r--lldb/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit (renamed from lldb/lit/SymbolFile/NativePDB/Inputs/breakpoints.lldbinit)0
-rw-r--r--lldb/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit3
-rw-r--r--lldb/lit/SymbolFile/NativePDB/break-by-function.cpp (renamed from lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp)28
-rw-r--r--lldb/lit/SymbolFile/NativePDB/break-by-line.cpp26
4 files changed, 40 insertions, 17 deletions
diff --git a/lldb/lit/SymbolFile/NativePDB/Inputs/breakpoints.lldbinit b/lldb/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit
index ff9bf21a886..ff9bf21a886 100644
--- a/lldb/lit/SymbolFile/NativePDB/Inputs/breakpoints.lldbinit
+++ b/lldb/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit
diff --git a/lldb/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit b/lldb/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit
new file mode 100644
index 00000000000..7daa53ba24e
--- /dev/null
+++ b/lldb/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit
@@ -0,0 +1,3 @@
+break set -f break-by-line.cpp -l 14
+break list
+quit
diff --git a/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp b/lldb/lit/SymbolFile/NativePDB/break-by-function.cpp
index a590fab1faa..c0c26f7617c 100644
--- a/lldb/lit/SymbolFile/NativePDB/simple-breakpoints.cpp
+++ b/lldb/lit/SymbolFile/NativePDB/break-by-function.cpp
@@ -4,10 +4,11 @@
// Test that we can set simple breakpoints using PDB on any platform.
// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
-// RUN: %p/Inputs/breakpoints.lldbinit | FileCheck %s
+// RUN: %p/Inputs/break-by-function.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;
}
@@ -33,31 +34,24 @@ int main(int argc, char **argv) {
}
-// CHECK: (lldb) target create "{{.*}}simple-breakpoints.cpp.tmp.exe"
-// CHECK: Current executable set to '{{.*}}simple-breakpoints.cpp.tmp.exe'
+// CHECK: (lldb) target create "{{.*}}break-by-function.cpp.tmp.exe"
+// CHECK: Current executable set to '{{.*}}break-by-function.cpp.tmp.exe'
// CHECK: (lldb) break set -n main
-// CHECK: Breakpoint 1: where = simple-breakpoints.cpp.tmp.exe`main + {{[0-9]+}}
-// CHECK-SAME: at simple-breakpoints.cpp:30
+// CHECK: Breakpoint 1: where = break-by-function.cpp.tmp.exe`main + {{[0-9]+}}
// 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 + {{[0-9]+}}
-// CHECK-SAME: at simple-breakpoints.cpp:23
+// CHECK: Breakpoint 3: where = break-by-function.cpp.tmp.exe`StaticFn + {{[0-9]+}}
// 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 + {{[0-9]+}}
-// CHECK-SAME: at simple-breakpoints.cpp:30
+// CHECK: 1.1: where = break-by-function.cpp.tmp.exe`main + {{[0-9]+}}
// CHECK: 2: name = 'OvlGlobalFn', locations = 3
-// CHECK: 2.1: where = simple-breakpoints.cpp.tmp.exe`OvlGlobalFn + {{[0-9]+}}
-// 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 + {{[0-9]+}}
-// CHECK-SAME: at simple-breakpoints.cpp:19
+// CHECK: 2.1: where = break-by-function.cpp.tmp.exe`OvlGlobalFn + {{[0-9]+}}
+// CHECK: 2.2: where = break-by-function.cpp.tmp.exe`OvlGlobalFn
+// CHECK: 2.3: where = break-by-function.cpp.tmp.exe`OvlGlobalFn + {{[0-9]+}}
// CHECK: 3: name = 'StaticFn', locations = 1
-// CHECK: 3.1: where = simple-breakpoints.cpp.tmp.exe`StaticFn + {{[0-9]+}}
-// CHECK-SAME: at simple-breakpoints.cpp:23
+// CHECK: 3.1: where = break-by-function.cpp.tmp.exe`StaticFn + {{[0-9]+}}
// CHECK: 4: name = 'DoesntExist', locations = 0 (pending)
diff --git a/lldb/lit/SymbolFile/NativePDB/break-by-line.cpp b/lldb/lit/SymbolFile/NativePDB/break-by-line.cpp
new file mode 100644
index 00000000000..ae3269f3719
--- /dev/null
+++ b/lldb/lit/SymbolFile/NativePDB/break-by-line.cpp
@@ -0,0 +1,26 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can set simple breakpoints using PDB on any platform.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN: %p/Inputs/break-by-line.lldbinit | FileCheck %s
+
+// This is a separate test from break-by-function.cpp because this test is
+// sensitive to edits in the source file.
+
+namespace NS {
+ int NamespaceFn(int X) {
+ return X + 42;
+ }
+}
+
+int main(int argc, char **argv) {
+ return NS::NamespaceFn(argc);
+}
+
+
+// CHECK: (lldb) target create "{{.*}}break-by-line.cpp.tmp.exe"
+// CHECK: Current executable set to '{{.*}}break-by-line.cpp.tmp.exe'
+// CHECK: (lldb) break set -f break-by-line.cpp -l 14
+// CHECK: Breakpoint 1: where = break-by-line.cpp.tmp.exe`NS::NamespaceFn + {{[0-9]+}} at break-by-line.cpp:14
OpenPOWER on IntegriCloud