[PATCH] D71664: [DebugInfo] Fix verbose printing of rows added via DW_LNE_end_sequence
James Henderson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 19 04:59:18 PST 2019
This revision was automatically updated to reflect the committed changes.
jhenderson marked an inline comment as done.
Closed by commit rG60cb33c9b854: [DebugInfo] Fix verbose printing of rows added via DW_LNE_end_sequence (authored by jhenderson).
Changed prior to commit:
https://reviews.llvm.org/D71664?vs=234544&id=234703#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71664/new/
https://reviews.llvm.org/D71664
Files:
llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
llvm/test/tools/llvm-dwarfdump/X86/debug-line-dw-lne-end-sequence.s
Index: llvm/test/tools/llvm-dwarfdump/X86/debug-line-dw-lne-end-sequence.s
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-dwarfdump/X86/debug-line-dw-lne-end-sequence.s
@@ -0,0 +1,56 @@
+## Show that the DW_LNE_end_sequence opcode resets the line state
+## properly and the rows are printed correctly.
+
+# RUN: llvm-mc -filetype obj -triple x86_64 %s -o %t.o
+# RUN: llvm-dwarfdump --debug-line %t.o | FileCheck %s --check-prefixes=HEADER,ROWS
+# RUN: llvm-dwarfdump --debug-line %t.o --verbose | FileCheck %s --check-prefix=ROWS
+
+# HEADER: Address Line Column File ISA Discriminator Flags
+# HEADER-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
+# ROWS: 0x0000000012345678 1 0 1 0 1 is_stmt basic_block prologue_end epilogue_begin end_sequence
+# ROWS: 0x0000000000000001 2 0 1 0 0 is_stmt
+# ROWS: 0x0000000000000001 2 0 1 0 0 is_stmt end_sequence
+
+.section .debug_line,"", at progbits
+.Line_table_start0:
+ .long .Line_table_end0-.Line_table_start0-4 # Length of Unit
+ .short 5 # DWARF version number
+ .byte 8 # Address Size
+ .byte 0 # Segment Selector Size
+ .long .Line_table_header_end0-.Line_table_params0 # Length of Prologue
+.Line_table_params0:
+ .byte 1 # Minimum Instruction Length
+ .byte 1 # Maximum Operations per Instruction
+ .byte 1 # Default is_stmt
+ .byte -5 # Line Base
+ .byte 14 # Line Range
+ .byte 13 # Opcode Base
+ .byte 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 # Standard Opcode Lengths
+ # Directory table format
+ .byte 1 # One element per directory entry
+ .byte 1 # DW_LNCT_path
+ .byte 0x08 # DW_FORM_string
+ # Directory table entries
+ .byte 1 # 1 directory
+ .asciz "/tmp"
+ # File table format
+ .byte 2 # 2 elements per file entry
+ .byte 1 # DW_LNCT_path
+ .byte 0x08 # DW_FORM_string
+ .byte 2 # DW_LNCT_directory_index
+ .byte 0x0b # DW_FORM_data1
+ # File table entries
+ .byte 1 # 1 file
+ .asciz "a.c"
+ .byte 0
+.Line_table_header_end0:
+ .byte 0,9,2 # DW_LNE_set_address
+ .quad 0x12345678
+ .byte 7 # DW_LNS_set_basic_block
+ .byte 10 # DW_LNS_set_prologue_end
+ .byte 11 # DW_LNS_set_epilogue_begin
+ .byte 0,2,4,1 # DW_LNE_set_discriminator 1
+ .byte 0,1,1 # DW_LNE_end_sequence
+ .byte 33 # address += 1, line += 1
+ .byte 0,1,1 # DW_LNE_end_sequence
+.Line_table_end0:
Index: llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
@@ -599,12 +599,12 @@
// address is that of the byte after the last target machine instruction
// of the sequence.
State.Row.EndSequence = true;
- State.appendRowToMatrix();
if (OS) {
*OS << "\n";
OS->indent(12);
State.Row.dump(*OS);
}
+ State.appendRowToMatrix();
State.resetRowAndSequence();
break;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71664.234703.patch
Type: text/x-patch
Size: 3527 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191219/d2e8873e/attachment.bin>
More information about the llvm-commits
mailing list