xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/debug-line-dw-lne-end-sequence.s (revision 6aa94c64a532237674433713a70ec2bda57b4fed)
1## Show that the DW_LNE_end_sequence opcode resets the line state
2## properly and the rows are printed correctly.
3
4# RUN: llvm-mc -filetype obj -triple x86_64 %s -o %t.o
5# RUN: llvm-dwarfdump --debug-line %t.o | FileCheck %s --check-prefixes=HEADER,ROWS
6# RUN: llvm-dwarfdump --debug-line %t.o --verbose | FileCheck %s --check-prefix=ROWS
7
8# HEADER:      Address            Line   Column File   ISA Discriminator OpIndex Flags
9# HEADER-NEXT: ------------------ ------ ------ ------ --- ------------- ------- -------------
10# ROWS:        0x0000000012345678      1      0      1   0             1       0  is_stmt basic_block prologue_end epilogue_begin end_sequence
11# ROWS:        0x0000000000000001      2      0      1   0             0       0  is_stmt
12# ROWS:        0x0000000000000001      2      0      1   0             0       0  is_stmt end_sequence
13
14.section .debug_line,"",@progbits
15.Line_table_start0:
16  .long   .Line_table_end0-.Line_table_start0-4   # Length of Unit
17  .short  5               # DWARF version number
18  .byte   8               # Address Size
19  .byte   0               # Segment Selector Size
20  .long   .Line_table_header_end0-.Line_table_params0     # Length of Prologue
21.Line_table_params0:
22  .byte   1               # Minimum Instruction Length
23  .byte   1               # Maximum Operations per Instruction
24  .byte   1               # Default is_stmt
25  .byte   -5              # Line Base
26  .byte   14              # Line Range
27  .byte   13              # Opcode Base
28  .byte   0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 # Standard Opcode Lengths
29  # Directory table format
30  .byte   1               # One element per directory entry
31  .byte   1               # DW_LNCT_path
32  .byte   0x08            # DW_FORM_string
33  # Directory table entries
34  .byte   1               # 1 directory
35  .asciz  "/tmp"
36  # File table format
37  .byte   2               # 2 elements per file entry
38  .byte   1               # DW_LNCT_path
39  .byte   0x08            # DW_FORM_string
40  .byte   2               # DW_LNCT_directory_index
41  .byte   0x0b            # DW_FORM_data1
42  # File table entries
43  .byte   1               # 1 file
44  .asciz  "a.c"
45  .byte   0
46.Line_table_header_end0:
47  .byte   0,9,2           # DW_LNE_set_address
48  .quad   0x12345678
49  .byte   7               # DW_LNS_set_basic_block
50  .byte   10              # DW_LNS_set_prologue_end
51  .byte   11              # DW_LNS_set_epilogue_begin
52  .byte   0,2,4,1         # DW_LNE_set_discriminator 1
53  .byte   0,1,1           # DW_LNE_end_sequence
54  .byte   33              # address += 1, line += 1
55  .byte   0,1,1           # DW_LNE_end_sequence
56.Line_table_end0:
57