diff options
| author | Wolfgang Pieb <Wolfgang.Pieb@sony.com> | 2018-10-09 18:38:55 +0000 |
|---|---|---|
| committer | Wolfgang Pieb <Wolfgang.Pieb@sony.com> | 2018-10-09 18:38:55 +0000 |
| commit | a9ea9c5034ddca7ccd5285b34a3d1c2772b12862 (patch) | |
| tree | 475f202f767bba0763f5899f6d2fe3a406b03d3d | |
| parent | 1238e6c2070451aa90b2da5066e14710ede5c03a (diff) | |
| download | bcm5719-llvm-a9ea9c5034ddca7ccd5285b34a3d1c2772b12862.tar.gz bcm5719-llvm-a9ea9c5034ddca7ccd5285b34a3d1c2772b12862.zip | |
[DWARF] Make llvm-dwarfdump display the .debug_loc.dwo section. Fixes PR38991.
Reviewer: dblaikie
Differential Revision: https://reviews.llvm.org/D52444
llvm-svn: 344068
| -rw-r--r-- | llvm/lib/DebugInfo/DWARF/DWARFContext.cpp | 9 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s | 20 |
2 files changed, 24 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp index 118a2ebf127..ddabc7a4652 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -692,11 +692,10 @@ const DWARFDebugLocDWO *DWARFContext::getDebugLocDWO() { LocDWO.reset(new DWARFDebugLocDWO()); // Assume all compile units have the same address byte size. - if (getNumCompileUnits()) { - DataExtractor LocData(DObj->getLocDWOSection().Data, isLittleEndian(), - getUnitAtIndex(0)->getAddressByteSize()); - LocDWO->parse(LocData); - } + // FIXME: We don't need AddressSize for split DWARF since relocatable + // addresses cannot appear there. At the moment DWARFExpression requires it. + DataExtractor LocData(DObj->getLocDWOSection().Data, isLittleEndian(), 4); + LocDWO->parse(LocData); return LocDWO.get(); } diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s new file mode 100644 index 00000000000..b1555df02ad --- /dev/null +++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o %t.o +# RUN: llvm-dwarfdump --debug-loc %t.o | FileCheck %s + +# We make sure that llvm-dwarfdump can dump the .debug_loc.dwo section +# without requiring a compilation unit in the .debug_info.dwo section. + +# CHECK: .debug_loc.dwo contents: +# CHECK-NEXT: 0x00000000: +# CHECK-NEXT: Addr idx 1 (w/ length 16): DW_OP_reg5 RDI + +.section .debug_loc.dwo,"",@progbits +# One location list. The pre-DWARF v5 implementation only recognizes +# DW_LLE_startx_length as an entry kind in .debug_loc.dwo (besides +# end_of_list), which is what llvm generates as well. +.byte 3 # DW_LLE_startx_length +.byte 0x01 # Index +.long 0x10 # Length +.short 1 # Loc expr size +.byte 85 # DW_OP_reg5 +.byte 0 # DW_LLE_end_of_list |

