You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

543 lines
25 KiB

# 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: