[llvm] r344068 - [DWARF] Make llvm-dwarfdump display the .debug_loc.dwo section. Fixes PR38991.

Wolfgang Pieb via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 9 11:38:55 PDT 2018


Author: wolfgangp
Date: Tue Oct  9 11:38:55 2018
New Revision: 344068

URL: http://llvm.org/viewvc/llvm-project?rev=344068&view=rev
Log:
[DWARF] Make llvm-dwarfdump display the .debug_loc.dwo section. Fixes PR38991.

Reviewer: dblaikie

Differential Revision: https://reviews.llvm.org/D52444

Added:
    llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s
Modified:
    llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp?rev=344068&r1=344067&r2=344068&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp Tue Oct  9 11:38:55 2018
@@ -692,11 +692,10 @@ const DWARFDebugLocDWO *DWARFContext::ge
 
   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();
 }
 

Added: llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s?rev=344068&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s (added)
+++ llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_loc_dwo.s Tue Oct  9 11:38:55 2018
@@ -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,"", at 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




More information about the llvm-commits mailing list