# 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
