# RUN: llvm-mc %S/Inputs/debug_rnglists_short_section.s -filetype obj -triple x86_64-pc-linux -o - | \ # RUN: llvm-dwarfdump --debug-rnglists - 2>&1 | FileCheck %s --check-prefix=SHORT # SHORT-NOT: error: # SHORT-NOT: range list header # SHORT: error: section is not large enough to contain a .debug_rnglists table length at offset 0 # SHORT-NOT: range list header # SHORT-NOT: error: # RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o - | \ # RUN: llvm-dwarfdump --debug-rnglists - 2> %t.err | FileCheck %s --check-prefix=GOOD # RUN: FileCheck %s --input-file %t.err # GOOD: .debug_rnglists contents: # GOOD-NEXT: range list header: length = 0x0000001e, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000001 # GOOD-NEXT: offsets: [ # GOOD-NEXT: 0x00000004 # GOOD-NEXT: ] # GOOD-NEXT: ranges: # GOOD-NEXT: [0x0000000000000010, 0x0000000000000020) # GOOD-NEXT: # GOOD-NEXT: range list header: length = 0x0000001a, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000 # GOOD-NEXT: ranges: # GOOD-NEXT: [0x0000000000000030, 0x0000000000000040) # GOOD-NEXT: # GOOD-NOT: range list header # CHECK-NOT: error: # CHECK: error: .debug_rnglists table at offset 0x22 has too small length (0xb) to contain a complete header # CHECK-NEXT: error: unrecognised .debug_rnglists table version 4 in table at offset 0x2d # CHECK-NEXT: error: .debug_rnglists table at offset 0x39 has unsupported address size 2 # CHECK-NEXT: error: .debug_rnglists table at offset 0x45 has unsupported segment selector size 4 # CHECK-NEXT: error: .debug_rnglists table at offset 0x51 has more offset entries (12345678) than there is space for # CHECK-NEXT: error: insufficient space remaining in table for DW_RLE_start_end encoding at offset 0x69 # CHECK-NEXT: error: read past end of table when reading DW_RLE_start_length encoding at offset 0x82 # CHECK-NEXT: error: unknown rnglists encoding 0x2a at offset 0x98 # CHECK-NEXT: error: no end of list marker detected at end of .debug_rnglists table starting at offset 0xaa # CHECK-NEXT: error: section is not large enough to contain a .debug_rnglists table of length 0x1f at offset 0xe5 # CHECK-NOT: error: .section .debug_rnglists,"",@progbits # Table 1 (good) .long 30 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 1 # Offset entry count # Offsets .long 4 # First range list .byte 6 # DW_RLE_start_length .quad 0x10, 0x20 # Encoding payload .byte 0 # DW_RLE_end_of_list # Table 2 (length too small for header) .long 7 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .byte 0, 0, 0 # Truncated offset entry count # Table 3 (unknown version) .long 8 # Table length .short 4 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # Table 4 (unsupported address size) .long 8 # Table length .short 5 # Version .byte 2 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # Table 5 (unsupported segment selector size) .long 8 # Table length .short 5 # Version .byte 8 # Address size .byte 4 # Segment selector size .long 0 # Offset entry count # Table 6 (bad offset entry count) .long 8 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 12345678 # Offset entry count # Table 7 (malformed DW_RLE_start_end) .long 21 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 6 # DW_RLE_start_end .quad 1 # Start address .long 4 # Truncated end address # Table 8 (malformed DW_RLE_start_length) .long 18 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 7 # DW_RLE_start_length .quad 1 # Start address .byte 0xFF # Length - invalid ULEB, so will continue reading past the end # Table 9 (unknown encoding) .long 26 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 42 # Unknown encoding .quad 0x10, 0x20 # Encoding payload .byte 0 # DW_RLE_end_of_list # Table 10 (missing end of list marker) .long 25 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 6 # DW_RLE_start_length .quad 0x10, 0x20 # Encoding payload # Table 11 (good) .long 26 # Table length .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 6 # DW_RLE_start_length .quad 0x30, 0x40 # Encoding payload .byte 0 # DW_RLE_end_of_list # Table 12 (length too long) .long 27 # Table length - 1 greater than actual contents .short 5 # Version .byte 8 # Address size .byte 0 # Segment selector size .long 0 # Offset entry count # First range list .byte 6 # DW_RLE_start_end .quad 1, 2 # Start, end address .byte 0 # DW_RLE_end_of_list