|
1 | | -## Test the different error cases in the debug line parsing and how they prevent |
2 | | -## or don't prevent further dumping of section contents. |
3 | | -
|
4 | | -## Show that a bad length stops parsing of the section. |
5 | | -# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_reserved_length.s -filetype=obj -o %t-reserved.o |
6 | | -# RUN: llvm-dwarfdump -debug-line %t-reserved.o 2> %t-reserved.err \ |
7 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL |
8 | | -# RUN: FileCheck %s --input-file=%t-reserved.err --check-prefix=RESERVED |
9 | | -# RUN: llvm-dwarfdump -debug-line %t-reserved.o -verbose 2> %t-reserved-verbose.err \ |
10 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL |
11 | | -# RUN: FileCheck %s --input-file=%t-reserved-verbose.err --check-prefix=RESERVED |
12 | | -
|
13 | | -## We only produce warnings for malformed tables after the specified unit if |
14 | | -## parsing can continue. |
15 | | -# RUN: llvm-dwarfdump -debug-line=0 %t-reserved.o 2> %t-reserved-off-first.err \ |
16 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER |
17 | | -# RUN: FileCheck %s --input-file=%t-reserved-off-first.err --check-prefix=RESERVED |
18 | | -
|
19 | | -## Stop looking for the specified unit, if a fatally-bad prologue is detected. |
20 | | -# RUN: llvm-dwarfdump -debug-line=0x4b %t-reserved.o 2> %t-reserved-off-last.err \ |
21 | | -# RUN: | FileCheck %s --check-prefixes=NOFIRST,NOLATER |
22 | | -# RUN: FileCheck %s --input-file=%t-reserved-off-last.err --check-prefix=RESERVED |
23 | | -
|
24 | | -## Show that non-fatal errors do not prevent parsing the rest of the section. |
25 | | -# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_malformed.s -filetype=obj -o %t-malformed.o |
26 | | -# RUN: llvm-dwarfdump -debug-line %t-malformed.o 2> %t-malformed.err \ |
27 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL,LAST --implicit-check-not='debug_line[{{.*}}]' |
28 | | -# RUN: FileCheck %s --input-file=%t-malformed.err --check-prefixes=ALL,OTHER |
29 | | -# RUN: llvm-dwarfdump -debug-line %t-malformed.o -verbose 2> %t-malformed-verbose.err \ |
30 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL,LAST --implicit-check-not='debug_line[{{.*}}]' |
31 | | -# RUN: FileCheck %s --input-file=%t-malformed-verbose.err --check-prefixes=ALL,OTHER |
32 | | -
|
33 | | -## We should still produce warnings for malformed tables after the specified unit. |
34 | | -# RUN: llvm-dwarfdump -debug-line=0 %t-malformed.o 2> %t-malformed-off-first.err \ |
35 | | -# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER |
36 | | -# RUN: FileCheck %s --input-file=%t-malformed-off-first.err --check-prefix=ALL |
37 | | -
|
38 | | -## Don't stop looking for the later unit if non-fatal issues are found. |
39 | | -# RUN: llvm-dwarfdump -debug-line=0x332 %t-malformed.o 2> %t-malformed-off-last.err \ |
40 | | -# RUN: | FileCheck %s --check-prefix=LAST --implicit-check-not='debug_line[{{.*}}]' |
41 | | -# RUN: FileCheck %s --input-file=%t-malformed-off-last.err --check-prefix=ALL |
42 | | -
|
43 | | -# FIRST: debug_line[0x00000000] |
44 | | -# FIRST: 0x000000000badbeef {{.*}} end_sequence |
45 | | -# NOFIRST-NOT: debug_line[0x00000000] |
46 | | -# NOFIRST-NOT: 0x000000000badbeef {{.*}} end_sequence |
47 | | -# NOLATER-NOT: debug_line[{{.*}}] |
48 | | -# NOLATER-NOT: end_sequence |
49 | | -
|
50 | | -## For fatal issues, the following table(s) should not be dumped. |
51 | | -# FATAL: debug_line[0x00000048] |
52 | | -# FATAL-NEXT: Line table prologue |
53 | | -# FATAL-NEXT: total_length: 0xfffffffe |
54 | | -# FATAL-NOT: debug_line |
55 | | -
|
56 | | -## For non-fatal issues, the table data should be dumped. |
57 | | -## Case 1: Version 0 table. |
58 | | -# NONFATAL: debug_line[0x00000048] |
59 | | -# NONFATAL-NEXT: Line table prologue |
60 | | -# NONFATAL-NOT: Address |
61 | | -
|
62 | | -## Case 2: Version 1 table. |
63 | | -# NONFATAL: debug_line[0x0000004e] |
64 | | -# NONFATAL-NEXT: Line table prologue |
65 | | -# NONFATAL-NOT: Address |
66 | | -
|
67 | | -## Case 3: Malformed directory format with no path component. |
68 | | -# NONFATAL: debug_line[0x00000054] |
69 | | -# NONFATAL-NEXT: Line table prologue |
70 | | -# NONFATAL-NOT: include_directories |
71 | | -# NONFATAL-NOT: file_names |
72 | | -# NONFATAL: 0x8877665544332211 {{.*}} end_sequence |
73 | | -
|
74 | | -## Case 4: Prologue with length shorter than parsed. |
75 | | -# NONFATAL: debug_line[0x00000081] |
76 | | -# NONFATAL-NEXT: Line table prologue |
77 | | -# NONFATAL: file_names[ 2]: |
78 | | -# NONFATAL-NEXT: name: "file2" |
79 | | -# NONFATAL-NEXT: dir_index: 1 |
80 | | -# NONFATAL-NEXT: mod_time: 0x00000002 |
81 | | -# NONFATAL-NEXT: length: 0x00000006 |
82 | | -# NONFATAL: 0x1122334455667788 {{.*}} 0 end_sequence{{$}} |
83 | | -
|
84 | | -## Case 5: Prologue with length longer than parsed. |
85 | | -# NONFATAL: debug_line[0x000000c8] |
86 | | -# NONFATAL-NEXT: Line table prologue |
87 | | -# NONFATAL: file_names[ 2]: |
88 | | -# NONFATAL-NEXT: name: "file2" |
89 | | -# NONFATAL-NEXT: dir_index: 1 |
90 | | -# NONFATAL-NEXT: mod_time: 0x00000002 |
91 | | -# NONFATAL-NEXT: length: 0x00000003 |
92 | | -# NONFATAL-NOT: file_names |
93 | | -# NONFATAL: 0x1111222233334444 {{.*}} is_stmt end_sequence |
94 | | -
|
95 | | -## Case 6: Extended opcode with incorrect length versus expected. |
96 | | -# NONFATAL: debug_line[0x00000111] |
97 | | -# NONFATAL-NEXT: Line table prologue |
98 | | -# NONFATAL: 0x00000000abbadaba {{.*}} end_sequence |
99 | | -# NONFATAL: 0x00000000babb1e45 {{.*}} 10 is_stmt prologue_end end_sequence{{$}} |
100 | | -
|
101 | | -## Case 7: No end of sequence. |
102 | | -# NONFATAL: debug_line[0x0000016c] |
103 | | -# NONFATAL-NEXT: Line table prologue |
104 | | -# NONFATAL: 0x00000000deadfade {{.*}} is_stmt |
105 | | -# NONFATAL-NOT: end_sequence |
106 | | -
|
107 | | -## Case 8: Very short prologue length for V5 (ends during parameters). |
108 | | -# NONFATAL: debug_line[0x000001b2] |
109 | | -# NONFATAL-NEXT: Line table prologue |
110 | | -# NONFATAL: standard_opcode_lengths[DW_LNS_set_isa] = 1 |
111 | | -# NONFATAL-NEXT: include_directories[ 0] = "/tmp" |
112 | | -# NONFATAL-NEXT: file_names[ 0]: |
113 | | -# NONFATAL-NEXT: name: "xyz" |
114 | | -# NONFATAL: 0x0000000000000000 1 0 1 0 0 is_stmt end_sequence |
115 | | -# NONFATAL: 0x0000babb1ebabb1e {{.*}} end_sequence |
116 | | -
|
117 | | -## Case 9: V5 prologue ends during file table. |
118 | | -# NONFATAL: debug_line[0x000001ee] |
119 | | -# NONFATAL-NEXT: Line table prologue |
120 | | -# NONFATAL: include_directories[ 0] = "/tmp" |
121 | | -# NONFATAL-NEXT: file_names[ 0]: |
122 | | -# NONFATAL-NEXT: name: "xyz" |
123 | | -# NONFATAL-NEXT: dir_index: 1 |
124 | | -# NONFATAL: 0x0000000000000000 {{.*}} epilogue_begin |
125 | | -# NONFATAL: 0x00000ab4acadab4a {{.*}} end_sequence |
126 | | -
|
127 | | -## Case 10: V5 prologue ends during directory table. |
128 | | -# NONFATAL: debug_line[0x0000022f] |
129 | | -# NONFATAL-NEXT: Line table prologue |
130 | | -# NONFATAL: include_directories[ 0] = "/tmp" |
131 | | -# NONFATAL-NEXT: file_names[ 0]: |
132 | | -# NONFATAL-NEXT: name: "xyz" |
133 | | -# NONFATAL: 0x0000000000000002 2 0 1 0 0 is_stmt{{$}} |
134 | | -# NONFATAL: 0x4444333322221111 {{.*}} end_sequence |
135 | | -
|
136 | | -## Case 11: V5 invalid MD5 hash form when there is still data to be read. |
137 | | -# NONFATAL: debug_line[0x0000026b] |
138 | | -# NONFATAL-NEXT: Line table prologue |
139 | | -# NONFATAL: include_directories[ 0] = "/tmp" |
140 | | -# NONFATAL-NOT: file_names |
141 | | -# NONFATAL-NOT: is_stmt |
142 | | -# NONFATAL: 0x1234123412341234 {{.*}} end_sequence |
143 | | -
|
144 | | -## Case 12: V5 invalid MD5 hash form when data beyond the prologue length has |
145 | | -## been read before the MD5 problem is identified. |
146 | | -# NONFATAL: debug_line[0x000002ae] |
147 | | -# NONFATAL-NEXT: Line table prologue |
148 | | -# NONFATAL: include_directories[ 0] = "/tmp" |
149 | | -# NONFATAL-NOT: file_names |
150 | | -# NONFATAL: 0x0000000000000000 {{.*}} epilogue_begin |
151 | | -# NONFATAL: 0x4321432143214321 {{.*}} is_stmt end_sequence |
152 | | -
|
153 | | -## Case 13: V5 invalid directory content description has unsupported form. |
154 | | -# NONFATAL: debug_line[0x000002ec] |
155 | | -# NONFATAL-NEXT: Line table prologue |
156 | | -# NONFATAL: include_directories[ 0] = "/foo" |
157 | | -# NONFATAL-NOT: include_directories |
158 | | -# NONFATAL-NOT: file_names |
159 | | -# NONFATAL: 0xaaaabbbbccccdddd {{.*}} is_stmt end_sequence |
160 | | -
|
161 | | -# LAST: debug_line[0x00000332] |
162 | | -# LAST: 0x00000000cafebabe {{.*}} end_sequence |
163 | | -
|
164 | | -# RESERVED: warning: parsing line table prologue at offset 0x00000048 unsupported reserved unit length found of value 0xfffffffe |
165 | | -
|
166 | | -# ALL-NOT: warning: |
167 | | -# ALL: warning: parsing line table prologue at offset 0x00000048 found unsupported version 0x00 |
168 | | -# ALL-NEXT: warning: parsing line table prologue at offset 0x0000004e found unsupported version 0x01 |
169 | | -# ALL-NEXT: warning: parsing line table prologue at 0x00000054 found an invalid directory or file table description at 0x00000073 |
170 | | -# ALL-NEXT: warning: failed to parse entry content descriptions because no path was found |
171 | | -# ALL-NEXT: warning: parsing line table prologue at 0x00000081 should have ended at 0x000000b9 but it ended at 0x000000ba |
172 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000000c8 should have ended at 0x00000103 but it ended at 0x00000102 |
173 | | -# OTHER-NEXT: warning: unexpected line op length at offset 0x00000158 expected 0x02 found 0x01 |
174 | | -# OTHER-NEXT: warning: unexpected line op length at offset 0x0000015c expected 0x01 found 0x02 |
175 | | -# OTHER-NEXT: warning: last sequence in debug line table at offset 0x0000016c is not terminated |
176 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000001b2 should have ended at 0x000001ce but it ended at 0x000001e1 |
177 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000001ee should have ended at 0x00000219 but it ended at 0x00000220 |
178 | | -# ALL-NEXT: warning: parsing line table prologue at 0x0000022f should have ended at 0x00000251 but it ended at 0x0000025e |
179 | | -# ALL-NEXT: warning: parsing line table prologue at 0x0000026b found an invalid directory or file table description at 0x0000029f |
180 | | -# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid |
181 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000002ae found an invalid directory or file table description at 0x000002e0 |
182 | | -# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid |
183 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000002ae should have ended at 0x000002d9 but it ended at 0x000002e0 |
184 | | -# ALL-NEXT: warning: parsing line table prologue at 0x000002ec found an invalid directory or file table description at 0x00000315 |
185 | | -# ALL-NEXT: warning: failed to parse directory entry because skipping the form value failed. |
186 | | -# ALL-NOT: warning: |
| 1 | +## Test the different error cases in the debug line parsing and how they prevent |
| 2 | +## or don't prevent further dumping of section contents. |
| 3 | + |
| 4 | +## Show that a bad length stops parsing of the section. |
| 5 | +# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_reserved_length.s -filetype=obj -o %t-reserved.o |
| 6 | +# RUN: llvm-dwarfdump -debug-line %t-reserved.o 2> %t-reserved.err \ |
| 7 | +# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL |
| 8 | +# RUN: FileCheck %s --input-file=%t-reserved.err --check-prefix=RESERVED |
| 9 | +# RUN: llvm-dwarfdump -debug-line %t-reserved.o -verbose 2> %t-reserved-verbose.err \ |
| 10 | +# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL |
| 11 | +# RUN: FileCheck %s --input-file=%t-reserved-verbose.err --check-prefix=RESERVED |
| 12 | + |
| 13 | +## We only produce warnings for malformed tables after the specified unit if |
| 14 | +## parsing can continue. |
| 15 | +# RUN: llvm-dwarfdump -debug-line=0 %t-reserved.o 2> %t-reserved-off-first.err \ |
| 16 | +# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER |
| 17 | +# RUN: FileCheck %s --input-file=%t-reserved-off-first.err --check-prefix=RESERVED |
| 18 | + |
| 19 | +## Stop looking for the specified unit, if a fatally-bad prologue is detected. |
| 20 | +# RUN: llvm-dwarfdump -debug-line=0x4b %t-reserved.o 2> %t-reserved-off-last.err \ |
| 21 | +# RUN: | FileCheck %s --check-prefixes=NOFIRST,NOLATER |
| 22 | +# RUN: FileCheck %s --input-file=%t-reserved-off-last.err --check-prefix=RESERVED |
| 23 | + |
| 24 | +## Show that non-fatal errors do not prevent parsing the rest of the section. |
| 25 | +# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_malformed.s -filetype=obj -o %t-malformed.o |
| 26 | +# RUN: llvm-dwarfdump -debug-line %t-malformed.o 2> %t-malformed.err \ |
| 27 | +# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL,LAST --implicit-check-not='debug_line[{{.*}}]' |
| 28 | +# RUN: FileCheck %s --input-file=%t-malformed.err --check-prefixes=ALL,OTHER |
| 29 | +# RUN: llvm-dwarfdump -debug-line %t-malformed.o -verbose 2> %t-malformed-verbose.err \ |
| 30 | +# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL,LAST --implicit-check-not='debug_line[{{.*}}]' |
| 31 | +# RUN: FileCheck %s --input-file=%t-malformed-verbose.err --check-prefixes=ALL,OTHER |
| 32 | + |
| 33 | +## We should still produce warnings for malformed tables after the specified unit. |
| 34 | +# RUN: llvm-dwarfdump -debug-line=0 %t-malformed.o 2> %t-malformed-off-first.err \ |
| 35 | +# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER |
| 36 | +# RUN: FileCheck %s --input-file=%t-malformed-off-first.err --check-prefix=ALL |
| 37 | + |
| 38 | +## Don't stop looking for the later unit if non-fatal issues are found. |
| 39 | +# RUN: llvm-dwarfdump -debug-line=0x332 %t-malformed.o 2> %t-malformed-off-last.err \ |
| 40 | +# RUN: | FileCheck %s --check-prefix=LAST --implicit-check-not='debug_line[{{.*}}]' |
| 41 | +# RUN: FileCheck %s --input-file=%t-malformed-off-last.err --check-prefix=ALL |
| 42 | + |
| 43 | +# FIRST: debug_line[0x00000000] |
| 44 | +# FIRST: 0x000000000badbeef {{.*}} end_sequence |
| 45 | +# NOFIRST-NOT: debug_line[0x00000000] |
| 46 | +# NOFIRST-NOT: 0x000000000badbeef {{.*}} end_sequence |
| 47 | +# NOLATER-NOT: debug_line[{{.*}}] |
| 48 | +# NOLATER-NOT: end_sequence |
| 49 | + |
| 50 | +## For fatal issues, the following table(s) should not be dumped. |
| 51 | +# FATAL: debug_line[0x00000048] |
| 52 | +# FATAL-NEXT: Line table prologue |
| 53 | +# FATAL-NEXT: total_length: 0xfffffffe |
| 54 | +# FATAL-NOT: debug_line |
| 55 | + |
| 56 | +## For non-fatal issues, the table data should be dumped. |
| 57 | +## Case 1: Version 0 table. |
| 58 | +# NONFATAL: debug_line[0x00000048] |
| 59 | +# NONFATAL-NEXT: Line table prologue |
| 60 | +# NONFATAL-NOT: Address |
| 61 | + |
| 62 | +## Case 2: Version 1 table. |
| 63 | +# NONFATAL: debug_line[0x0000004e] |
| 64 | +# NONFATAL-NEXT: Line table prologue |
| 65 | +# NONFATAL-NOT: Address |
| 66 | + |
| 67 | +## Case 3: Malformed directory format with no path component. |
| 68 | +# NONFATAL: debug_line[0x00000054] |
| 69 | +# NONFATAL-NEXT: Line table prologue |
| 70 | +# NONFATAL-NOT: include_directories |
| 71 | +# NONFATAL-NOT: file_names |
| 72 | +# NONFATAL: 0x8877665544332211 {{.*}} end_sequence |
| 73 | + |
| 74 | +## Case 4: Prologue with length shorter than parsed. |
| 75 | +# NONFATAL: debug_line[0x00000081] |
| 76 | +# NONFATAL-NEXT: Line table prologue |
| 77 | +# NONFATAL: file_names[ 2]: |
| 78 | +# NONFATAL-NEXT: name: "file2" |
| 79 | +# NONFATAL-NEXT: dir_index: 1 |
| 80 | +# NONFATAL-NEXT: mod_time: 0x00000002 |
| 81 | +# NONFATAL-NEXT: length: 0x00000006 |
| 82 | +# NONFATAL: 0x1122334455667788 {{.*}} 0 end_sequence{{$}} |
| 83 | + |
| 84 | +## Case 5: Prologue with length longer than parsed. |
| 85 | +# NONFATAL: debug_line[0x000000c8] |
| 86 | +# NONFATAL-NEXT: Line table prologue |
| 87 | +# NONFATAL: file_names[ 2]: |
| 88 | +# NONFATAL-NEXT: name: "file2" |
| 89 | +# NONFATAL-NEXT: dir_index: 1 |
| 90 | +# NONFATAL-NEXT: mod_time: 0x00000002 |
| 91 | +# NONFATAL-NEXT: length: 0x00000003 |
| 92 | +# NONFATAL-NOT: file_names |
| 93 | +# NONFATAL: 0x1111222233334444 {{.*}} is_stmt end_sequence |
| 94 | + |
| 95 | +## Case 6: Extended opcode with incorrect length versus expected. |
| 96 | +# NONFATAL: debug_line[0x00000111] |
| 97 | +# NONFATAL-NEXT: Line table prologue |
| 98 | +# NONFATAL: 0x00000000abbadaba {{.*}} end_sequence |
| 99 | +# NONFATAL: 0x00000000babb1e45 {{.*}} 10 is_stmt prologue_end end_sequence{{$}} |
| 100 | + |
| 101 | +## Case 7: No end of sequence. |
| 102 | +# NONFATAL: debug_line[0x0000016c] |
| 103 | +# NONFATAL-NEXT: Line table prologue |
| 104 | +# NONFATAL: 0x00000000deadfade {{.*}} is_stmt |
| 105 | +# NONFATAL-NOT: end_sequence |
| 106 | + |
| 107 | +## Case 8: Very short prologue length for V5 (ends during parameters). |
| 108 | +# NONFATAL: debug_line[0x000001b2] |
| 109 | +# NONFATAL-NEXT: Line table prologue |
| 110 | +# NONFATAL: standard_opcode_lengths[DW_LNS_set_isa] = 1 |
| 111 | +# NONFATAL-NEXT: include_directories[ 0] = "/tmp" |
| 112 | +# NONFATAL-NEXT: file_names[ 0]: |
| 113 | +# NONFATAL-NEXT: name: "xyz" |
| 114 | +# NONFATAL: 0x0000000000000000 1 0 1 0 0 is_stmt end_sequence |
| 115 | +# NONFATAL: 0x0000babb1ebabb1e {{.*}} end_sequence |
| 116 | + |
| 117 | +## Case 9: V5 prologue ends during file table. |
| 118 | +# NONFATAL: debug_line[0x000001ee] |
| 119 | +# NONFATAL-NEXT: Line table prologue |
| 120 | +# NONFATAL: include_directories[ 0] = "/tmp" |
| 121 | +# NONFATAL-NEXT: file_names[ 0]: |
| 122 | +# NONFATAL-NEXT: name: "xyz" |
| 123 | +# NONFATAL-NEXT: dir_index: 1 |
| 124 | +# NONFATAL: 0x0000000000000000 {{.*}} epilogue_begin |
| 125 | +# NONFATAL: 0x00000ab4acadab4a {{.*}} end_sequence |
| 126 | + |
| 127 | +## Case 10: V5 prologue ends during directory table. |
| 128 | +# NONFATAL: debug_line[0x0000022f] |
| 129 | +# NONFATAL-NEXT: Line table prologue |
| 130 | +# NONFATAL: include_directories[ 0] = "/tmp" |
| 131 | +# NONFATAL-NEXT: file_names[ 0]: |
| 132 | +# NONFATAL-NEXT: name: "xyz" |
| 133 | +# NONFATAL: 0x0000000000000002 2 0 1 0 0 is_stmt{{$}} |
| 134 | +# NONFATAL: 0x4444333322221111 {{.*}} end_sequence |
| 135 | + |
| 136 | +## Case 11: V5 invalid MD5 hash form when there is still data to be read. |
| 137 | +# NONFATAL: debug_line[0x0000026b] |
| 138 | +# NONFATAL-NEXT: Line table prologue |
| 139 | +# NONFATAL: include_directories[ 0] = "/tmp" |
| 140 | +# NONFATAL-NOT: file_names |
| 141 | +# NONFATAL-NOT: is_stmt |
| 142 | +# NONFATAL: 0x1234123412341234 {{.*}} end_sequence |
| 143 | + |
| 144 | +## Case 12: V5 invalid MD5 hash form when data beyond the prologue length has |
| 145 | +## been read before the MD5 problem is identified. |
| 146 | +# NONFATAL: debug_line[0x000002ae] |
| 147 | +# NONFATAL-NEXT: Line table prologue |
| 148 | +# NONFATAL: include_directories[ 0] = "/tmp" |
| 149 | +# NONFATAL-NOT: file_names |
| 150 | +# NONFATAL: 0x0000000000000000 {{.*}} epilogue_begin |
| 151 | +# NONFATAL: 0x4321432143214321 {{.*}} is_stmt end_sequence |
| 152 | + |
| 153 | +## Case 13: V5 invalid directory content description has unsupported form. |
| 154 | +# NONFATAL: debug_line[0x000002ec] |
| 155 | +# NONFATAL-NEXT: Line table prologue |
| 156 | +# NONFATAL: include_directories[ 0] = "/foo" |
| 157 | +# NONFATAL-NOT: include_directories |
| 158 | +# NONFATAL-NOT: file_names |
| 159 | +# NONFATAL: 0xaaaabbbbccccdddd {{.*}} is_stmt end_sequence |
| 160 | + |
| 161 | +# LAST: debug_line[0x00000332] |
| 162 | +# LAST: 0x00000000cafebabe {{.*}} end_sequence |
| 163 | + |
| 164 | +# RESERVED: warning: parsing line table prologue at offset 0x00000048 unsupported reserved unit length found of value 0xfffffffe |
| 165 | + |
| 166 | +# ALL-NOT: warning: |
| 167 | +# ALL: warning: parsing line table prologue at offset 0x00000048 found unsupported version 0x00 |
| 168 | +# ALL-NEXT: warning: parsing line table prologue at offset 0x0000004e found unsupported version 0x01 |
| 169 | +# ALL-NEXT: warning: parsing line table prologue at 0x00000054 found an invalid directory or file table description at 0x00000073 |
| 170 | +# ALL-NEXT: warning: failed to parse entry content descriptions because no path was found |
| 171 | +# ALL-NEXT: warning: parsing line table prologue at 0x00000081 should have ended at 0x000000b9 but it ended at 0x000000ba |
| 172 | +# ALL-NEXT: warning: parsing line table prologue at 0x000000c8 should have ended at 0x00000103 but it ended at 0x00000102 |
| 173 | +# OTHER-NEXT: warning: unexpected line op length at offset 0x00000158 expected 0x02 found 0x01 |
| 174 | +# OTHER-NEXT: warning: unexpected line op length at offset 0x0000015c expected 0x01 found 0x02 |
| 175 | +# OTHER-NEXT: warning: last sequence in debug line table at offset 0x0000016c is not terminated |
| 176 | +# ALL-NEXT: warning: parsing line table prologue at 0x000001b2 should have ended at 0x000001ce but it ended at 0x000001e1 |
| 177 | +# ALL-NEXT: warning: parsing line table prologue at 0x000001ee should have ended at 0x00000219 but it ended at 0x00000220 |
| 178 | +# ALL-NEXT: warning: parsing line table prologue at 0x0000022f should have ended at 0x00000251 but it ended at 0x0000025e |
| 179 | +# ALL-NEXT: warning: parsing line table prologue at 0x0000026b found an invalid directory or file table description at 0x0000029f |
| 180 | +# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid |
| 181 | +# ALL-NEXT: warning: parsing line table prologue at 0x000002ae found an invalid directory or file table description at 0x000002e0 |
| 182 | +# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid |
| 183 | +# ALL-NEXT: warning: parsing line table prologue at 0x000002ae should have ended at 0x000002d9 but it ended at 0x000002e0 |
| 184 | +# ALL-NEXT: warning: parsing line table prologue at 0x000002ec found an invalid directory or file table description at 0x00000315 |
| 185 | +# ALL-NEXT: warning: failed to parse directory entry because skipping the form value failed. |
| 186 | +# ALL-NOT: warning: |
0 commit comments