blob: 2bd960308f8725ec92e1499572f01eaa2c89d034 [file] [log] [blame]
.section .debug_line,"",@progbits
# Leading good section.
.long .Lunit1_end - .Lunit1_start # Length of Unit (DWARF-32 format)
.Lunit1_start:
.short 4 # DWARF version number
.long .Lprologue1_end-.Lprologue1_start # Length of Prologue
.Lprologue1_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 0, 0
.byte 0
.Lprologue1_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x0badbeef
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit1_end:
# Version 0.
.long .Lunit_v0_end - .Lunit_v0_start # unit length
.Lunit_v0_start:
.short 0 # version
.Lunit_v0_end:
# Version 1.
.long .Lunit_v1_end - .Lunit_v1_start # unit length
.Lunit_v1_start:
.short 1 # version
.Lunit_v1_end:
# Version 5 malformed line/include table.
.long .Lunit_v5_end - .Lunit_v5_start # unit length
.Lunit_v5_start:
.short 5 # version
.byte 8 # address size
.byte 8 # segment selector
.long .Lprologue_v5_end-.Lprologue_v5_start # Length of Prologue
.Lprologue_v5_start:
.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
.byte 0 # directory table (invalid as no path component)
.Lprologue_v5_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x8877665544332211
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit_v5_end:
# Short prologue.
.long .Lunit_short_prologue_end - .Lunit_short_prologue_start # unit length
.Lunit_short_prologue_start:
.short 4 # version
.long .Lprologue_short_prologue_end-.Lprologue_short_prologue_start # Length of Prologue
.Lprologue_short_prologue_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 1, 2, 3
.asciz "file2"
.byte 1, 2
.Lprologue_short_prologue_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x1122334455667788
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit_short_prologue_end:
# Over-long prologue.
.long .Lunit_long_prologue_end - .Lunit_long_prologue_start # unit length
.Lunit_long_prologue_start:
.short 4 # version
.long .Lprologue_long_prologue_end-.Lprologue_long_prologue_start # Length of Prologue
.Lprologue_long_prologue_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 2, 3
.byte 0
# Skipped byte (treated as part of prologue).
.byte 6
.Lprologue_long_prologue_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x1111222233334444
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit_long_prologue_end:
# Incorrect length extended opcodes.
.long .Lunit_long_opcode_end - .Lunit_long_opcode_start # unit length
.Lunit_long_opcode_start:
.short 4 # version
.long .Lprologue_long_opcode_end-.Lprologue_long_opcode_start # Length of Prologue
.Lprologue_long_opcode_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 0, 0
.byte 0
.Lprologue_long_opcode_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xabbadaba
.byte 0, 2, 1 # DW_LNE_end_sequence (too long)
.byte 6 # DW_LNS_negate_stmt (but will be consumed with the end sequence above).
.byte 0, 1, 4 # DW_LNE_set_discriminator (too short)
.byte 0xa # Parsed as argument for set_discriminator and also DW_LNS_set_prologue_end.
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xbabb1e45
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit_long_opcode_end:
# No end of sequence.
.long .Lunit_no_eos_end - .Lunit_no_eos_start # unit length
.Lunit_no_eos_start:
.short 4 # version
.long .Lprologue_no_eos_end-.Lprologue_no_eos_start # Length of Prologue
.Lprologue_no_eos_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 0, 0
.byte 0
.Lprologue_no_eos_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xdeadfade
.byte 1 # DW_LNS_copy
.Lunit_no_eos_end:
# V5 very short prologue length.
.long .Linvalid_description_end0-.Linvalid_description_start0 # Length of Unit
.Linvalid_description_start0:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_description_header_end0 - .Linvalid_description_params0 # Length of Prologue (invalid)
.Linvalid_description_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, 0, 1 # Standard Opcode Lengths
.Linvalid_description_header_end0:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xbabb1ebabb1e
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_description_end0:
# V5 prologue ends during file table.
.long .Linvalid_file_end0-.Linvalid_file_start0 # Length of Unit
.Linvalid_file_start0:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_file_header_end0 - .Linvalid_file_params0 # Length of Prologue (invalid)
.Linvalid_file_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
.Linvalid_file_header_end0:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xab4acadab4a
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_file_end0:
# V5 prologue ends during directory table.
.long .Linvalid_dir_end0-.Linvalid_dir_start0 # Length of Unit
.Linvalid_dir_start0:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_dir_header_end0 - .Linvalid_dir_params0 # Length of Prologue (invalid)
.Linvalid_dir_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
.Linvalid_dir_header_end0:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x4444333322221111
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_dir_end0:
# Header truncated while reading the MD5 data.
.long .Linvalid_md5_end0-.Linvalid_md5_start0 # Length of Unit
.Linvalid_md5_start0:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_md5_header_end0-.Linvalid_md5_params0 # Length of Prologue
.Linvalid_md5_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 3 # 3 elements per file entry
.byte 1 # DW_LNCT_path
.byte 0x08 # DW_FORM_string
.byte 5 # DW_LNCT_MD5
.byte 0x1e # DW_FORM_data16
.byte 2 # DW_LNCT_directory_index
.byte 0x0b # DW_FORM_data1
# File table entries
.byte 1 # 1 file
.asciz "a.c"
.byte 0
# Data to show that the rest of the prologue is skipped.
.byte 1
.Linvalid_md5_header_end0:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x1234123412341234
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_md5_end0:
# Header truncated while reading the MD5 form.
.long .Linvalid_md5_end1-.Linvalid_md5_start1 # Length of Unit
.Linvalid_md5_start1:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_md5_header_end1 - .Linvalid_md5_params1 # Length of Prologue
.Linvalid_md5_params1:
.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 5 # DW_LNCT_MD5
.Linvalid_md5_header_end1:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0x4321432143214321
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_md5_end1:
# V5 invalid directory content description has unsupported form.
.long .Linvalid_dir_form_end0-.Linvalid_dir_form_start0 # Length of Unit
.Linvalid_dir_form_start0:
.short 5 # DWARF version number
.byte 8 # Address Size
.byte 0 # Segment Selector Size
.long .Linvalid_dir_form_header_end0 - .Linvalid_dir_form_params0
.Linvalid_dir_form_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 2 # Two elements per directory entry
.byte 1 # DW_LNCT_path
.byte 0x08 # DW_FORM_string
.byte 2 # DW_LNCT_directory_index (ignored)
.byte 0x7f # Unknown form
# Directory table entries
.byte 2 # 2 directories
.asciz "/foo" # Directory name
.byte 0xff # Arbitrary data for unknown form
.asciz "/bar" # Directory name
.byte 0xff # Arbitrary data for unknown form
# File table format
.byte 1 # 1 element per file entry
.byte 1 # DW_LNCT_path
.byte 0x08 # DW_FORM_string
# File table entries
.byte 1 # 1 file
.asciz "xyz" # File names
.Linvalid_dir_form_header_end0:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xaaaabbbbccccdddd
.byte 0, 1, 1 # DW_LNE_end_sequence
.Linvalid_dir_form_end0:
# Zero opcode base.
.long .Lzero_opcode_base_end - .Lzero_opcode_base_start # unit length
.Lzero_opcode_base_start:
.short 4 # version
.long .Lzero_opcode_base_prologue_end-.Lzero_opcode_base_prologue_start # Length of Prologue
.Lzero_opcode_base_prologue_start:
.byte 1 # Minimum Instruction Length
.byte 1 # Maximum Operations per Instruction
.byte 1 # Default is_stmt
.byte 0 # Line Base
.byte 1 # Line Range
.byte 0 # Opcode Base
.asciz "dir1" # Include table
.byte 0
.asciz "file1"
.byte 1, 2, 3
.byte 0
.Lzero_opcode_base_prologue_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xffffeeeeddddcccc
.byte 0x1 # Special opcode
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lzero_opcode_base_end:
# V4 table with unterminated include directory table.
.long .Lunterminated_include_end - .Lunterminated_include_start # unit length
.Lunterminated_include_start:
.short 4 # version
.long .Lunterminated_include_prologue_end-.Lunterminated_include_prologue_start # Length of Prologue
.Lunterminated_include_prologue_start:
.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
.asciz "dir1" # Include table
.Lunterminated_include_prologue_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xabcdef0123456789
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunterminated_include_end:
# V4 table with unterminated file name table.
.long .Lunterminated_files_end - .Lunterminated_files_start # unit length
.Lunterminated_files_start:
.short 4 # version
.long .Lunterminated_files_prologue_end-.Lunterminated_files_prologue_start # Length of Prologue
.Lunterminated_files_prologue_start:
.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
.asciz "dir1" # Include table
.byte 0
.asciz "foo.c" # File table
.byte 1, 2, 3
.Lunterminated_files_prologue_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xababcdcdefef0909
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunterminated_files_end:
# Opcode extends past the end of the table, as claimed by the unit length field.
.long .Lextended_past_end_end - .Lextended_past_end_start # Length of Unit
.Lextended_past_end_start:
.short 4 # DWARF version number
.long .Lprologue_extended_past_end_end-.Lprologue_extended_past_end_start # Length of Prologue
.Lprologue_extended_past_end_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 0, 0
.byte 0
.Lprologue_extended_past_end_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xfeedfeed
.byte 1 # DW_LNS_copy
.byte 0, 9, 2 # DW_LNE_set_address
.long 0xf001f000 # Truncated address (should be 8 bytes)
.byte 0xf0, 0, 1
.Lextended_past_end_end:
# Trailing good section.
.long .Lunit_good_end - .Lunit_good_start # Length of Unit (DWARF-32 format)
.Lunit_good_start:
.short 4 # DWARF version number
.long .Lprologue_good_end-.Lprologue_good_start # Length of Prologue
.Lprologue_good_start:
.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
.asciz "dir1" # Include table
.asciz "dir2"
.byte 0
.asciz "file1" # File table
.byte 0, 0, 0
.asciz "file2"
.byte 1, 0, 0
.byte 0
.Lprologue_good_end:
.byte 0, 9, 2 # DW_LNE_set_address
.quad 0xcafebabe
.byte 0, 1, 1 # DW_LNE_end_sequence
.Lunit_good_end: