1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
# RUN: llvm-mc %S/Inputs/debug_rnglists_short_section.s -filetype obj -triple x86_64-pc-linux -o - | \
# RUN: not llvm-dwarfdump --debug-rnglists - 2>&1 | FileCheck %s --check-prefix=SHORT
# SHORT-NOT: error:
# SHORT-NOT: range list header
# SHORT: error: parsing .debug_rnglists table at offset 0x0: unexpected end of data at offset 0x3
# SHORT-NOT: range list header
# SHORT-NOT: error:
# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o - | \
# RUN: not 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, format = DWARF32, 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: <End of list>
# GOOD-NEXT: range list header: length = 0x0000001a, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000
# GOOD-NEXT: ranges:
# GOOD-NEXT: [0x0000000000000030, 0x0000000000000040)
# GOOD-NEXT: <End of list>
# 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: 3
# 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: read past end of table when reading 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 3 # 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
|