[PATCH] D78006: [DWARF5] Added support for DW_MACRO_import form in llvm-dwarfdump..
Sourabh Singh Tomar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 13 00:29:51 PDT 2020
SouraVX created this revision.
SouraVX added reviewers: dblaikie, probinson, jini.susan.george.
SouraVX added projects: debug-info, LLVM.
Herald added subscribers: llvm-commits, hiraditya, aprantl.
GCC emits this new form along with others forms(supported in llvm-dwardump) and since it's support was missing in llvm-dwarfdump, it was not able to correctly dump the content a `debug_macro` section for GCC generated binaries.
This patch extends llvm-dwarfdump to support this form, now GCC generated `debug_macro` section can be correctly dumped using llvm-dwarfdump.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D78006
Files:
llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
llvm/lib/DebugInfo/DWARF/DWARFDebugMacro.cpp
llvm/test/DebugInfo/X86/debug-macro-v5.s
Index: llvm/test/DebugInfo/X86/debug-macro-v5.s
===================================================================
--- llvm/test/DebugInfo/X86/debug-macro-v5.s
+++ llvm/test/DebugInfo/X86/debug-macro-v5.s
@@ -12,9 +12,10 @@
# CHECK-NEXT: DW_MACRO_define_strp - lineno: 1 macro: FOO 5
# CHECK-NEXT: DW_MACRO_end_file
# CHECK-NEXT: DW_MACRO_undef_strp - lineno: 8 macro: WORLD1
+# CHECK-NEXT: DW_MACRO_import - Import Offset: 0x[[OFFSET:[0-9]+]]
# CHECK-NEXT:DW_MACRO_end_file
-# CHECK:0x{{.*}}:
+# CHECK:0x[[OFFSET]]:
# CHECK-NEXT:macro header: version = 0x0005, flags = 0x00
# CHECK-NEXT:DW_MACRO_define_strp - lineno: 0 macro: WORLD 2
@@ -36,8 +37,12 @@
.byte 6 # DW_MACRO_undef_strp
.byte 8 # Line Number
.long .Linfo_string1 # Macro String
+ .byte 7 # DW_MACRO_import
+ .long .Lmacro1 # Macro Unit Offset
.byte 4 # DW_MACRO_end_file
.byte 0 # End Of Macro List Mark
+
+.Lmacro1:
.short 5 # Macro information version
.byte 0 # Flags: 32 bit
.byte 5 # DW_MACRO_define_strp
Index: llvm/lib/DebugInfo/DWARF/DWARFDebugMacro.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFDebugMacro.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFDebugMacro.cpp
@@ -69,6 +69,9 @@
OS << " - lineno: " << E.Line;
OS << " filenum: " << E.File;
break;
+ case DW_MACRO_import:
+ OS << format(" - Import Offset: 0x%08" PRIx64, E.ImportOffset);
+ break;
case DW_MACRO_end_file:
break;
case DW_MACINFO_vendor_ext:
@@ -146,6 +149,10 @@
break;
case DW_MACRO_end_file:
break;
+ case DW_MACRO_import:
+ // FIXME: Add support for DWARF64
+ E.ImportOffset = Data.getRelocatedValue(/*OffsetSize=*/4, &Offset);
+ break;
case DW_MACINFO_vendor_ext:
// 2. Vendor extension constant
E.ExtConstant = Data.getULEB128(&Offset);
Index: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
===================================================================
--- llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
+++ llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
@@ -69,6 +69,8 @@
uint64_t Line;
/// Vendor extension constant value.
uint64_t ExtConstant;
+ /// Macro unit import offset.
+ uint64_t ImportOffset;
};
union {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78006.256934.patch
Type: text/x-patch
Size: 2545 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200413/637953cb/attachment.bin>
More information about the llvm-commits
mailing list