forked from OSchip/llvm-project
85 lines
1.9 KiB
Plaintext
85 lines
1.9 KiB
Plaintext
# RUN: rm -rf %t.dir
|
|
# RUN: mkdir %t.dir
|
|
# RUN: cd %t.dir
|
|
# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml -o %t.dir/file1.dwo
|
|
# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml -o %t.dir/file2.dwo
|
|
# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-main.yaml -o %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
|