diff options
| author | Pavel Labath <labath@google.com> | 2018-06-11 13:22:31 +0000 |
|---|---|---|
| committer | Pavel Labath <labath@google.com> | 2018-06-11 13:22:31 +0000 |
| commit | 08dae4bb3c5b4ec8eff111c1da8cbb980ba479a2 (patch) | |
| tree | 4670c3b38d3113882c9a26e47eaf11dd0b05cb2d /lldb/lit/SymbolFile | |
| parent | 8b98f5517f241ea07009cfb7c17588513c7e06ef (diff) | |
| download | bcm5719-llvm-08dae4bb3c5b4ec8eff111c1da8cbb980ba479a2.tar.gz bcm5719-llvm-08dae4bb3c5b4ec8eff111c1da8cbb980ba479a2.zip | |
DWARFDebugNames: Fix lookup in dwo files
The getDIESectionOffset function is not correct for split dwarf files
(and will probably be removed in D48009).
This patch implements correct section offset computation for split and
non-split compile units -- we first need to check if the referenced unit
is a skeleton unit, and if it is, we add the die offset to the full unit
base offset (as the full unit is the one which contains the die).
llvm-svn: 334402
Diffstat (limited to 'lldb/lit/SymbolFile')
| -rw-r--r-- | lldb/lit/SymbolFile/DWARF/find-variable-dwo.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lldb/lit/SymbolFile/DWARF/find-variable-dwo.cpp b/lldb/lit/SymbolFile/DWARF/find-variable-dwo.cpp new file mode 100644 index 00000000000..142ddc82cda --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/find-variable-dwo.cpp @@ -0,0 +1,25 @@ +// REQUIRES: lld + +// RUN: clang %s -g -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DONE | \ +// RUN: llc -accel-tables=Dwarf -filetype=obj -split-dwarf-file=%t-1.dwo -o %t-1.o +// RUN: llvm-objcopy --split-dwo=%t-1.dwo %t-1.o +// RUN: clang %s -g -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DTWO | \ +// RUN: llc -accel-tables=Dwarf -filetype=obj -split-dwarf-file=%t-2.dwo -o %t-2.o +// RUN: llvm-objcopy --split-dwo=%t-2.dwo %t-2.o +// RUN: ld.lld %t-1.o %t-2.o -o %t +// RUN: lldb-test symbols --name=foo --find=variable %t | FileCheck %s + +// CHECK: Found 2 variables: +#ifdef ONE +namespace one { +int foo; +// CHECK-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-variable-dwo.cpp:[[@LINE-1]] +} // namespace one + +extern "C" void _start() {} +#else +namespace two { +int foo; +// CHECK-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-variable-dwo.cpp:[[@LINE-1]] +} // namespace two +#endif |

