Compiler projects using llvm
# RUN: llvm-mc %s -filetype obj -triple i386-pc-linux -o %t.o
# RUN: llvm-dwarfdump -v -debug-info -debug-line -debug-addr -debug-rnglists -debug-ranges %t.o | FileCheck --implicit-check-not=DW_TAG --implicit-check-not=DW_AT %s

# Test that llvm - dwarfdump strips addresses relating to dead code(using the
# DWARFv6 - proposed tombstone constant & nearest equivalent for debug_ranges)
# Testing the tombstone use in debug_info (addr/addrx), debug_ranges,
# debug_rnglists, debug_ranges, and debug_line.

# CHECK-DAG: .debug_info contents:
# CHECK:     DW_TAG_compile_unit
# CHECK:       DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
# CHECK-NEXT:    [0x00000042, 0x00000048))
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addr]     (0xffffffff (dead code))
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addr]     (0x00000042)
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:     DW_TAG_compile_unit
# CHECK:       DW_AT_addr_base
# CHECK:       DW_AT_ranges [DW_FORM_sec_offset] (0x0000000c
# CHECK-NEXT:    [0x00000042, 0x00000048)
# CHECK-NEXT:    [0x00000042, 0x00000048)
# CHECK-NEXT:    [0x00000042, 0x00000048)
# CHECK-NEXT:    [0x00000042, 0x00000042)
# CHECK-NEXT:    [0x00000042, 0x00000048)
# CHECK-NEXT:    [0x00000042, 0x00000048))
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addrx]     (indexed (00000000) address = 0xffffffff (dead code))
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addrx]     (indexed (00000001) address = 0x00000042)
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:     DW_TAG_compile_unit
# CHECK:       DW_AT_ranges [DW_FORM_sec_offset] (0x00000018
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048))
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addr]     (0xffffffffffffffff (dead code))
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addr]     (0x0000000000000042)
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:     DW_TAG_compile_unit
# CHECK:       DW_AT_addr_base


# CHECK:       DW_AT_ranges
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000042)
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT:    [0x0000000000000042, 0x0000000000000048))
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addrx]     (indexed (00000000) address = 0xffffffffffffffff (dead code))
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)
# CHECK:       DW_TAG_subprogram
# CHECK:         DW_AT_low_pc [DW_FORM_addrx]     (indexed (00000001) address = 0x0000000000000042)
# CHECK:         DW_AT_high_pc [DW_FORM_data4]   (0x00000006)

# CHECK-DAG: .debug_line contents:
# CHECK:      Address Line
# CHECK-NEXT: --------------
# CHECK-NEXT: DW_LNE_set_address (0xffffffff)
# CHECK-NEXT: DW_LNS_copy
# CHECK-NEXT: DW_LNS_advance_pc (1)
# CHECK-NEXT: DW_LNE_end_sequence
# CHECK-NEXT: DW_LNE_set_address (0x00000042)
# CHECK-NEXT: DW_LNS_copy
# CHECK-NEXT:   0x0000000000000042 1
# CHECK-NEXT: DW_LNS_advance_pc (1)
# CHECK-NEXT: DW_LNE_end_sequence
# CHECK:      Address Line
# CHECK-NEXT: --------------
# CHECK-NEXT: DW_LNE_set_address (0xffffffffffffffff)
# CHECK-NEXT: DW_LNS_copy
# CHECK-NEXT: DW_LNS_advance_pc (1)
# CHECK-NEXT: DW_LNE_end_sequence
# CHECK-NEXT: DW_LNE_set_address (0x0000000000000042)
# CHECK-NEXT: DW_LNS_copy
# CHECK-NEXT:   0x0000000000000042 1
# CHECK-NEXT: DW_LNS_advance_pc (1)
# CHECK-NEXT: DW_LNE_end_sequence

# Dumping of the debug_addr, ranges, and rnglists sections don't do anything
# different with tombstoned addresses, but dump them just for
# documentation/comparison with the tombstone-filtered renderings in the
# debug_info section above

# CHECK-DAG: .debug_addr contents:
# CHECK-NEXT: addr_size = 0x04
# CHECK-NEXT: Addrs: [
# CHECK-NEXT: 0xffffffff
# CHECK-NEXT: 0x00000042
# CHECK-NEXT: ]
# CHECK-NEXT: addr_size = 0x08
# CHECK-NEXT: Addrs: [
# CHECK-NEXT: 0xffffffffffffffff
# CHECK-NEXT: 0x0000000000000042
# CHECK-NEXT: ]

# CHECK-DAG: .debug_ranges contents:
# CHECK-NEXT: fffffffe fffffffe
# CHECK-NEXT: 00000042 00000048
# CHECK-NEXT: <End of list>
# FIXME: Would be nice if we didn't assume all the contributions were of the
#        same address size, instead dumping them based on the address size of
#        the unit that references them. Maybe optimistically guessing at any
#        unreferenced chunks. (this would be more like libdwarf/dwarfdump).
#        But for now, these 64bit address ranges are mangled/being rendered
#        here as though they were a 32 bit address range.
# CHECK-NEXT: fffffffe ffffffff
# CHECK-NEXT: fffffffe ffffffff
# CHECK-NEXT: 00000042 00000000
# CHECK-NEXT: 00000048 00000000
# CHECK-NEXT: <End of list>

# CHECK-DAG: .debug_rnglists contents:
# CHECK-NEXT: addr_size = 0x04
# CHECK-NEXT: ranges:
# CHECK-NEXT: [DW_RLE_start_length ]:  0xffffffff, 0x00000006
# CHECK-NEXT: [DW_RLE_start_length ]:  0x00000042, 0x00000006
# CHECK-NEXT: [DW_RLE_startx_length]:  0x00000000, 0x00000006
# CHECK-NEXT: [DW_RLE_startx_length]:  0x00000001, 0x00000006
# CHECK-NEXT: [DW_RLE_start_end    ]: [0xffffffff, 0xffffffff)
# CHECK-NEXT: [DW_RLE_start_end    ]: [0x00000042, 0x00000048)
# CHECK-NEXT: [DW_RLE_startx_endx  ]:  0x00000000, 0x00000000
# CHECK-NEXT: [DW_RLE_startx_endx  ]:  0x00000001, 0x00000001
# CHECK-NEXT: [DW_RLE_base_address ]:  0x00000040
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x00000002, 0x00000008 => [0x00000042, 0x00000048)
# CHECK-NEXT: [DW_RLE_base_address ]:  0xffffffff
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x00000002, 0x00000008 => dead code
# CHECK-NEXT: [DW_RLE_base_addressx]:  0x00000000
# FIXME: Don't print "computed" values that aren't really computed/instead
#        still refer to the index instead of the resulting address
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x00000000, 0x00000006 => [0x00000000, 0x00000006)
# CHECK-NEXT: [DW_RLE_base_addressx]:  0x00000001
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x00000000, 0x00000006 => [0x00000001, 0x00000007)
# CHECK-NEXT: [DW_RLE_end_of_list  ]
# CHECK-NEXT: addr_size = 0x08
# CHECK-NEXT: ranges:
# CHECK-NEXT: [DW_RLE_start_length ]:  0xffffffffffffffff, 0x0000000000000006
# CHECK-NEXT: [DW_RLE_start_length ]:  0x0000000000000042, 0x0000000000000006
# CHECK-NEXT: [DW_RLE_startx_length]:  0x0000000000000000, 0x0000000000000006
# CHECK-NEXT: [DW_RLE_startx_length]:  0x0000000000000001, 0x0000000000000006
# CHECK-NEXT: [DW_RLE_start_end    ]: [0xffffffffffffffff, 0xffffffffffffffff)
# CHECK-NEXT: [DW_RLE_start_end    ]: [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT: [DW_RLE_startx_endx  ]:  0x0000000000000000, 0x0000000000000000
# CHECK-NEXT: [DW_RLE_startx_endx  ]:  0x0000000000000001, 0x0000000000000001
# CHECK-NEXT: [DW_RLE_base_address ]:  0x0000000000000040
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x0000000000000002, 0x0000000000000008 => [0x0000000000000042, 0x0000000000000048)
# CHECK-NEXT: [DW_RLE_base_address ]:  0xffffffffffffffff
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x0000000000000002, 0x0000000000000008 => dead code
# CHECK-NEXT: [DW_RLE_base_addressx]:  0x0000000000000000
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x0000000000000006 => [0x0000000000000000, 0x0000000000000006)
# CHECK-NEXT: [DW_RLE_base_addressx]:  0x0000000000000001
# CHECK-NEXT: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x0000000000000006 => [0x0000000000000001, 0x0000000000000007)
# CHECK-NEXT: [DW_RLE_end_of_list  ]

	.section	.debug_abbrev,"",@progbits
.Ldebug_abbrev4:
	.byte	1                               # Abbreviation Code
	.byte	17                              # DW_TAG_compile_unit
	.byte	1                               # DW_CHILDREN_yes
	.byte	85                              # DW_AT_ranges
	.byte	23                              # DW_FORM_sec_offset
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	2                               # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	0                               # DW_CHILDREN_no
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	0                               # EOM(3)
.Ldebug_abbrev5:
	.byte	1                               # Abbreviation Code
	.byte	17                              # DW_TAG_compile_unit
	.byte	1                               # DW_CHILDREN_yes
	.byte	115                             # DW_AT_addr_base
	.byte	23                              # DW_FORM_sec_offset
	.byte	85                              # DW_AT_ranges
	.byte	23                              # DW_FORM_sec_offset
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	2                               # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	0                               # DW_CHILDREN_no
	.byte	17                              # DW_AT_low_pc
	.byte	27                              # DW_FORM_addrx
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	0                               # EOM(3)

	.section	.debug_info,"",@progbits
	.long	.Ldebug_info4_end-.Ldebug_info4_begin # Length of Unit
.Ldebug_info4_begin:
	.short	4                               # DWARF version number
	.long	.Ldebug_abbrev4                 # Offset Into Abbrev. Section
	.byte	4                               # Address Size (in bytes)
	.byte	1                               # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
	.long	.Ldebug_ranges                  # DW_AT_ranges
	.byte	2                               # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram
	.long	0xffffffff                      # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	2                               # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram
	.long	0x42                            # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	0                               # End Of Children Mark
.Ldebug_info4_end:
	.long	.Ldebug_info5_end-.Ldebug_info5_begin # Length of Unit
.Ldebug_info5_begin:
	.short	5                               # DWARF version number
	.byte	1                               # DWARF Unit Type
	.byte	4                               # Address Size (in bytes)
	.long	.Ldebug_abbrev5                 # Offset Into Abbrev. Section
	.byte	1                               # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
	.long	.Ldebug_addr_base               # DW_AT_addr_base
	.long	.Ldebug_rnglists                # DW_AT_ranges
	.byte	2                               # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram
	.uleb128 0                              # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	2                               # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram
	.uleb128 1                              # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	0                               # End Of Children Mark
.Ldebug_info5_end:
	.long	.Ldebug_info4_64_end-.Ldebug_info4_64_begin # Length of Unit
.Ldebug_info4_64_begin:
	.short	4                               # DWARF version number
	.long	.Ldebug_abbrev4                 # Offset Into Abbrev. Section
	.byte	8                               # Address Size (in bytes)
	.byte	1                               # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
	.long	.Ldebug_ranges_64               # DW_AT_ranges
	.byte	2                               # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram
	.quad	0xffffffffffffffff              # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	2                               # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram
	.quad	0x42                            # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	0                               # End Of Children Mark
.Ldebug_info4_64_end:
	.long	.Ldebug_info5_64_end-.Ldebug_info5_64_begin # Length of Unit
.Ldebug_info5_64_begin:
	.short	5                               # DWARF version number
	.byte	1                               # DWARF Unit Type
	.byte	8                               # Address Size (in bytes)
	.long	.Ldebug_abbrev5                 # Offset Into Abbrev. Section
	.byte	1                               # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
	.long	.Ldebug_addr_64_base            # DW_AT_addr_base
	.long	.Ldebug_rnglists_64             # DW_AT_ranges
	.byte	2                               # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram
	.uleb128 0                              # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	2                               # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram
	.uleb128 1                              # DW_AT_low_pc
	.long	0x6                             # DW_AT_high_pc
	.byte	0                               # End Of Children Mark
.Ldebug_info5_64_end:

	.section	.debug_ranges,"",@progbits
.Ldebug_ranges:
	.long	0xfffffffe
	.long	0xfffffffe
	.long	0x42
	.long	0x48
	.long	0
	.long	0
.Ldebug_ranges_64:
	.quad	0xfffffffffffffffe
	.quad	0xfffffffffffffffe
	.quad	0x42
	.quad	0x48
	.quad	0
	.quad	0

	.section	.debug_rnglists,"",@progbits
	.long	.Ldebug_rnglists_end-.Ldebug_rnglists_begin # Length
.Ldebug_rnglists_begin:
	.short	5                               # Version
	.byte	4                               # Address size
	.byte	0                               # Segment selector size
	.long	0                               # Offset entry count
.Ldebug_rnglists:
	.byte	7                               # DW_RLE_start_length
	.long	0xffffffff                      #   start address
	.uleb128 0x6                            #   length
	.byte	7                               # DW_RLE_start_length
	.long	0x42                            #   start address
	.uleb128 0x6                            #   length
	.byte	3                               # DW_RLE_startx_length
	.uleb128 0                              #   start index
	.uleb128 0x6                            #   length
	.byte	3                               # DW_RLE_startx_length
	.uleb128 1                              #   start index
	.uleb128 0x6                            #   length
	.byte	6                               # DW_RLE_start_end
	.long	0xffffffff                      #   start address
	.long	0xffffffff                      #   end address
	.byte	6                               # DW_RLE_start_end
	.long	0x42                            #   start address
	.long   0x48                            #   length
	.byte	2                               # DW_RLE_startx_endx
	.uleb128 0                              #   start index
	.uleb128 0                              #   end index
	.byte	2                               # DW_RLE_startx_endx
	.uleb128 1                              #   start index
	.uleb128 1                              #   end index
	.byte	5                               # DW_RLE_base_address
	.long	0x40                            #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 2                              #   start offset
	.uleb128 8                              #   end offset
	.byte	5                               # DW_RLE_base_address
	.long	0xffffffff                      #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 2                              #   start offset
	.uleb128 8                              #   end offset
	.byte	1                               # DW_RLE_base_addressx
	.uleb128 0                              #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 0                              #   start offset
	.uleb128 6                              #   end offset
	.byte	1                               # DW_RLE_base_addressx
	.uleb128 1                              #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 0                              #   start offset
	.uleb128 6                              #   end offset
	.byte	0                               # DW_RLE_end_of_list
.Ldebug_rnglists_end:
	.long	.Ldebug_rnglists_64_end-.Ldebug_rnglists_64_begin # Length
.Ldebug_rnglists_64_begin:
	.short	5                               # Version
	.byte	8                               # Address size
	.byte	0                               # Segment selector size
	.long	0                               # Offset entry count
.Ldebug_rnglists_64:
	.byte	7                               # DW_RLE_start_length
	.quad	0xffffffffffffffff              #   start address
	.uleb128 0x6                            #   length
	.byte	7                               # DW_RLE_start_length
	.quad	0x42                            #   start address
	.uleb128 0x6                            #   length
	.byte	3                               # DW_RLE_startx_length
	.uleb128 0                              #   start index
	.uleb128 0x6                            #   length
	.byte	3                               # DW_RLE_startx_length
	.uleb128 1                              #   start index
	.uleb128 0x6                            #   length
	.byte	6                               # DW_RLE_start_end
	.quad	0xffffffffffffffff              #   start address
	.quad	0xffffffffffffffff              #   end address
	.byte	6                               # DW_RLE_start_end
	.quad	0x42                            #   start address
	.quad   0x48                            #   length
	.byte	2                               # DW_RLE_startx_endx
	.uleb128 0                              #   start index
	.uleb128 0                              #   end index
	.byte	2                               # DW_RLE_startx_endx
	.uleb128 1                              #   start index
	.uleb128 1                              #   end index
	.byte	5                               # DW_RLE_base_address
	.quad	0x40                            #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 2                              #   start offset
	.uleb128 8                              #   end offset
	.byte	5                               # DW_RLE_base_address
	.quad	0xffffffffffffffff              #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 2                              #   start offset
	.uleb128 8                              #   end offset
	.byte	1                               # DW_RLE_base_addressx
	.uleb128 0                              #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 0                              #   start offset
	.uleb128 6                              #   end offset
	.byte	1                               # DW_RLE_base_addressx
	.uleb128 1                              #   address
	.byte	4                               # DW_RLE_offset_pair
	.uleb128 0                              #   start offset
	.uleb128 6                              #   end offset
	.byte	0                               # DW_RLE_end_of_list
.Ldebug_rnglists_64_end:

	.section	.debug_addr,"",@progbits
	.long	.Ldebug_addr_end-.Ldebug_addr_begin # Length of contribution
.Ldebug_addr_begin:
	.short	5                               # DWARF version number
	.byte	4                               # Address size
	.byte	0                               # Segment selector size
.Ldebug_addr_base:
	.long	0xffffffff
	.long	0x42
.Ldebug_addr_end:
	.long	.Ldebug_addr_64_end-.Ldebug_addr_64_begin # Length of contribution
.Ldebug_addr_64_begin:
	.short	5                               # DWARF version number
	.byte	8                               # Address size
	.byte	0                               # Segment selector size
.Ldebug_addr_64_base:
	.quad	0xffffffffffffffff
	.quad	0x42
.Ldebug_addr_64_end:

	.section	.debug_line,"",@progbits
.Ldebug_line5:
	.long   .Ldebug_line5_end-.Ldebug_line5_begin   # Length of Unit (DWARF-32 format)
.Ldebug_line5_begin:
	.short  5               # DWARF version number
	.byte   4               # Address Size
	.byte   0               # Segment Selector Size
	.long   .Ldebug_line5_header_end-.Ldebug_line5_header_begin     # Length of Prologue
.Ldebug_line5_header_begin:
	.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               # Standard Opcode Lengths
	.byte   1
	.byte   1
	.byte   1
	.byte   1
	.byte   0
	.byte   0
	.byte   0
	.byte   1
	.byte   0
	.byte   0
	.byte   1
	# 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               # Two directory entries
	.asciz "dir1"
	# File table format
	.byte   2               # Four elements per file entry
	.byte   2               # DW_LNCT_directory_index
	.byte   0x0b            # DW_FORM_data1
	.byte   1               # DW_LNCT_path
	.byte   0x08            # DW_FORM_string
	# File table entries
	.byte   1               # Two file entries
	.byte   1
	.asciz   "file1"
.Ldebug_line5_header_end:
	.byte   0               # Extended opcode
	.byte   5               #   Size 5
	.byte   2               #   Opcode: DW_LNE_set_address
	.long   0xffffffff      #     address
	.byte	1               # DW_LNS_copy
	.byte	2               # DW_LNS_advance_pc
	.uleb128 1              #   instruction increment
	.byte   0               # Extended opcode
	.byte   1               #   Size 1
	.byte   1               #   Opcode: DW_LNE_end_sequence
	.byte   0               # Extended opcode
	.byte   5               #   Size 5
	.byte   2               #   Opcode: DW_LNE_set_address
	.long   0x42            #     address
	.byte	1               # DW_LNS_copy
	.byte	2               # DW_LNS_advance_pc
	.uleb128 1              #   instruction increment
	.byte   0               # Extended opcode
	.byte   1               #   Size 1
	.byte   1               #   Opcode: DW_LNE_end_sequence
.Ldebug_line5_end:

.Ldebug_line5_64:
	.long   .Ldebug_line5_64_end-.Ldebug_line5_64_begin   # Length of Unit (DWARF-32 format)
.Ldebug_line5_64_begin:
	.short  5               # DWARF version number
	.byte   8               # Address Size
	.byte   0               # Segment Selector Size
	.long   .Ldebug_line5_64_header_end-.Ldebug_line5_64_header_begin     # Length of Prologue
.Ldebug_line5_64_header_begin:
	.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               # Standard Opcode Lengths
	.byte   1
	.byte   1
	.byte   1
	.byte   1
	.byte   0
	.byte   0
	.byte   0
	.byte   1
	.byte   0
	.byte   0
	.byte   1
	# 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               # Two directory entries
	.asciz "dir1"
	# File table format
	.byte   2               # Four elements per file entry
	.byte   2               # DW_LNCT_directory_index
	.byte   0x0b            # DW_FORM_data1
	.byte   1               # DW_LNCT_path
	.byte   0x08            # DW_FORM_string
	# File table entries
	.byte   1               # Two file entries
	.byte   1
	.asciz   "file1"
.Ldebug_line5_64_header_end:
	.byte   0               # Extended opcode
	.byte   9               #   Size 9
	.byte   2               #   Opcode: DW_LNE_set_address
	.quad   0xffffffffffffffff #     address
	.byte	1               # DW_LNS_copy
	.byte	2               # DW_LNS_advance_pc
	.uleb128 1              #   instruction increment
	.byte   0               # Extended opcode
	.byte   1               #   Size 1
	.byte   1               #   Opcode: DW_LNE_end_sequence
	.byte   0               # Extended opcode
	.byte   9               #   Size 9
	.byte   2               #   Opcode: DW_LNE_set_address
	.quad   0x42            #     address
	.byte	1               # DW_LNS_copy
	.byte	2               # DW_LNS_advance_pc
	.uleb128 1              #   instruction increment
	.byte   0               # Extended opcode
	.byte   1               #   Size 1
	.byte   1               #   Opcode: DW_LNE_end_sequence
.Ldebug_line5_64_end: