summaryrefslogtreecommitdiffstats
path: root/lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test')
-rw-r--r--lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test84
1 files changed, 84 insertions, 0 deletions
diff --git a/lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test b/lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test
new file mode 100644
index 00000000000..c1418ebb0d5
--- /dev/null
+++ b/lldb/test/Shell/Breakpoint/split-dwarf5-debug-stroffsets.test
@@ -0,0 +1,84 @@
+# RUN: rm -rf %t.dir
+# RUN: mkdir %t.dir
+# RUN: cd %t.dir
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml > %t.dir/file1.dwo
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml > %t.dir/file2.dwo
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-main.yaml > %t.dir/test
+# RUN: lldb-test breakpoints %t.dir/test %s | FileCheck %s
+
+# This test checks that source code location is shown correctly
+# when split DWARF 5 is used and both DWO/executable file contains
+# .debug_str_offsets/.debug_str_offsets.dwo sections.
+# Used clang version 8.0.0 (trunk 347299)
+#
+# split-dwarf5-debug-stroffsets-file1.dwo.yaml, split-dwarf5-debug-stroffsets-file2.dwo.yaml
+# and split-dwarf5-debug-stroffsets-main.yaml are reduced yaml files produces
+# from the DWO files and the corresponding executable.
+#
+# Code:
+# // decl.h
+# struct struct1 {
+# ~struct1();
+# static void f();
+# };
+#
+# struct struct2 {
+# ~struct2();
+# static void f();
+# };
+#
+# int g();
+#
+# // file1.cpp
+# #include "decls.h"
+#
+# int g() {
+# return 1;
+# }
+#
+# struct1::~struct1() {
+# int x = g();
+# }
+#
+# void struct1::f() {}
+#
+# float test() {
+# return 0.0f;
+# }
+#
+# int main() {
+# struct1::f();
+# struct2::f();
+#
+# struct1 s1;
+# struct2 s2;
+#
+# test();
+#
+# return 0;
+# }
+#
+# // file2.cpp
+#
+#
+# #include "decls.h"
+#
+# struct2::~struct2() {
+# int x = g();
+# }
+#
+# void struct2::f() {}
+#
+#
+# Invocation used was:
+# clang++ file1.cpp -o file1.o -g -fno-rtti -c -gdwarf-5 -gsplit-dwarf -ffunction-sections
+# clang++ file2.cpp -o file2.o -g -fno-rtti -c -gdwarf-5 -gsplit-dwarf -ffunction-sections
+# clang++ file1.o file2.o -g -fno-rtti -gdwarf-5 -o test -gsplit-dwarf -ffunction-sections
+
+b struct1::f
+# CHECK-LABEL: b struct1::f
+# CHECK: Address: {{.*}}struct1::f() + 4 at file1.cpp:11:20
+
+b struct2::f
+# CHECK-LABEL: b struct2::f
+# CHECK: Address: {{.*}}struct2::f() + 4 at file2.cpp:7:20
OpenPOWER on IntegriCloud