summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Pieb <Wolfgang.Pieb@sony.com>2018-10-09 18:38:55 +0000
committerWolfgang Pieb <Wolfgang.Pieb@sony.com>2018-10-09 18:38:55 +0000
commita9ea9c5034ddca7ccd5285b34a3d1c2772b12862 (patch)
tree475f202f767bba0763f5899f6d2fe3a406b03d3d
parent1238e6c2070451aa90b2da5066e14710ede5c03a (diff)
downloadbcm5719-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.cpp9
-rw-r--r--llvm/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s20
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
OpenPOWER on IntegriCloud