Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[test][llvm-dwarfdump][NFC] Remove unused check
Reviewed by: JDevlieghere Differential Revision: https://reviews.llvm.org/D71756
- Loading branch information
Showing
1 changed file
with
133 additions
and
136 deletions.
There are no files selected for viewing
269 changes: 133 additions & 136 deletions
269
llvm/test/tools/llvm-dwarfdump/X86/debug_line_invalid.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,136 +1,133 @@ | ||
## Test the different error cases in the debug line parsing and how they prevent | ||
## or don't prevent further dumping of section contents. | ||
|
||
## Show that a bad length stops parsing of the section. | ||
# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_reserved_length.s -filetype=obj -o %t-reserved.o | ||
# RUN: llvm-dwarfdump -debug-line %t-reserved.o 2> %t-reserved.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL | ||
# RUN: FileCheck %s --input-file=%t-reserved.err --check-prefix=RESERVED | ||
# RUN: llvm-dwarfdump -debug-line %t-reserved.o -verbose 2> %t-reserved-verbose.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL | ||
# RUN: FileCheck %s --input-file=%t-reserved-verbose.err --check-prefix=RESERVED | ||
|
||
## We only produce warnings for malformed tables after the specified unit if | ||
## parsing can continue. | ||
# RUN: llvm-dwarfdump -debug-line=0 %t-reserved.o 2> %t-reserved-off-first.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-reserved-off-first.err --check-prefix=RESERVED | ||
|
||
## Stop looking for the specified unit, if a fatally-bad prologue is detected. | ||
# RUN: llvm-dwarfdump -debug-line=0x4b %t-reserved.o 2> %t-reserved-off-last.err \ | ||
# RUN: | FileCheck %s --check-prefixes=NOFIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-reserved-off-last.err --check-prefix=RESERVED | ||
|
||
## Show that non-fatal errors do not prevent parsing the rest of the section. | ||
# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_malformed.s -filetype=obj -o %t-malformed.o | ||
# RUN: llvm-dwarfdump -debug-line %t-malformed.o 2> %t-malformed.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL | ||
# RUN: FileCheck %s --input-file=%t-malformed.err --check-prefixes=ALL,OTHER | ||
# RUN: llvm-dwarfdump -debug-line %t-malformed.o -verbose 2> %t-malformed-verbose.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL | ||
# RUN: FileCheck %s --input-file=%t-malformed-verbose.err --check-prefixes=ALL,OTHER | ||
|
||
## We should still produce warnings for malformed tables after the specified unit. | ||
# RUN: llvm-dwarfdump -debug-line=0 %t-malformed.o 2> %t-malformed-off-first.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-malformed-off-first.err --check-prefix=ALL | ||
|
||
## Don't stop looking for the later unit if non-fatal issues are found. | ||
# RUN: llvm-dwarfdump -debug-line=0x271 %t-malformed.o 2> %t-malformed-off-last.err \ | ||
# RUN: | FileCheck %s --check-prefixes=LASTONLY | ||
# RUN: FileCheck %s --input-file=%t-malformed-off-last.err --check-prefix=ALL | ||
|
||
# FIRST: debug_line[0x00000000] | ||
# FIRST: 0x000000000badbeef {{.*}} end_sequence | ||
# NOFIRST-NOT: debug_line[0x00000000] | ||
# NOFIRST-NOT: 0x000000000badbeef {{.*}} end_sequence | ||
# NOLATER-NOT: debug_line[{{.*}}] | ||
# NOLATER-NOT: end_sequence | ||
|
||
## For fatal issues, the following table(s) should not be dumped. | ||
# FATAL: debug_line[0x00000048] | ||
# FATAL-NEXT: Line table prologue | ||
# FATAL-NEXT: total_length: 0xfffffffe | ||
# FATAL-NOT: debug_line | ||
|
||
## For non-fatal prologue issues, the table prologue should be dumped, and any | ||
## subsequent tables should also be. | ||
## Case 1: Version 0 table. | ||
# NONFATAL: debug_line[0x00000048] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 2: Version 1 table. | ||
# NONFATAL: debug_line[0x0000004e] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 3: Malformed directory format with no path component. | ||
# NONFATAL: debug_line[0x00000054] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 4: Prologue with length shorter than parsed. | ||
# NONFATAL: debug_line[0x00000073] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 5: Prologue with length longer than parsed. | ||
# NONFATAL: debug_line[0x000000ad] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 6: Extended opcode with incorrect length versus expected. | ||
# NONFATAL: debug_line[0x000000e7] | ||
## Dumping prints the line table prologue and any valid operations up to the | ||
## point causing the problem. | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL: 0x00000000abbadaba {{.*}} end_sequence | ||
# NONFATAL-NOT: is_stmt | ||
|
||
## For minor issues, we can dump the whole table. | ||
## Case 7: No end of sequence. | ||
# NONFATAL: debug_line[0x0000013d] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
# NONFATAL: 0x00000000deadfade {{.*}} | ||
|
||
## Case 8: Very short prologue length for V5 (ends during parameters). | ||
# NONFATAL: debug_line[0x00000183] | ||
# NONFATAL-NEXT: Line table prologue | ||
|
||
## TODO: Add checks here for remaining tables. | ||
|
||
# NONFATAL: debug_line[0x00000271] | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
# NONFATAL: 0x00000000cafebabe {{.*}} end_sequence | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
|
||
# LASTONLY-NOT: debug_line[{{.*}}] | ||
# LASTONLY: debug_line[0x00000271] | ||
# LASTONLY: 0x00000000cafebabe {{.*}} end_sequence | ||
|
||
# RESERVED: warning: parsing line table prologue at offset 0x00000048 unsupported reserved unit length found of value 0xfffffffe | ||
|
||
# MD5: warning: parsing line table prologue at 0x00000000 found an invalid directory or file table description at 0x0000003b | ||
# MD5-NEXT: warning: failed to parse file entry because the MD5 hash is invalid | ||
|
||
# ALL-NOT: warning: | ||
# ALL: warning: parsing line table prologue at offset 0x00000048 found unsupported version 0x00 | ||
# ALL-NEXT: warning: parsing line table prologue at offset 0x0000004e found unsupported version 0x01 | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000054 found an invalid directory or file table description at 0x00000073 | ||
# ALL-NEXT: warning: failed to parse entry content descriptions because no path was found | ||
# FIXME - The latter offset in the next line should be 0xad. The filename parsing code does not notice a missing terminating byte. | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000073 should have ended at 0x000000ab but it ended at 0x000000ac | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000000ad should have ended at 0x000000e8 but it ended at 0x000000e7 | ||
# OTHER-NEXT: warning: unexpected line op length at offset 0x0000012e expected 0x02 found 0x01 | ||
# OTHER-NEXT: warning: last sequence in debug line table is not terminated! | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000183 found an invalid directory or file table description at 0x000001a2 | ||
# ALL-NEXT: warning: failed to parse entry content descriptions at offset 0x000001a2 because offset extends beyond the prologue end at offset 0x0000019e | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000001be found an invalid directory or file table description at 0x000001eb | ||
# ALL-NEXT: warning: failed to parse file entry at offset 0x000001eb because offset extends beyond the prologue end at offset 0x000001e9 | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000001f9 found an invalid directory or file table description at 0x0000021b | ||
# ALL-NEXT: warning: failed to parse directory entry at offset 0x0000021b because offset extends beyond the prologue end at offset 0x0000021b | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000234 found an invalid directory or file table description at 0x00000269 | ||
# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid | ||
# ALL-NOT: warning: | ||
## Test the different error cases in the debug line parsing and how they prevent | ||
## or don't prevent further dumping of section contents. | ||
|
||
## Show that a bad length stops parsing of the section. | ||
# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_reserved_length.s -filetype=obj -o %t-reserved.o | ||
# RUN: llvm-dwarfdump -debug-line %t-reserved.o 2> %t-reserved.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL | ||
# RUN: FileCheck %s --input-file=%t-reserved.err --check-prefix=RESERVED | ||
# RUN: llvm-dwarfdump -debug-line %t-reserved.o -verbose 2> %t-reserved-verbose.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,FATAL | ||
# RUN: FileCheck %s --input-file=%t-reserved-verbose.err --check-prefix=RESERVED | ||
|
||
## We only produce warnings for malformed tables after the specified unit if | ||
## parsing can continue. | ||
# RUN: llvm-dwarfdump -debug-line=0 %t-reserved.o 2> %t-reserved-off-first.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-reserved-off-first.err --check-prefix=RESERVED | ||
|
||
## Stop looking for the specified unit, if a fatally-bad prologue is detected. | ||
# RUN: llvm-dwarfdump -debug-line=0x4b %t-reserved.o 2> %t-reserved-off-last.err \ | ||
# RUN: | FileCheck %s --check-prefixes=NOFIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-reserved-off-last.err --check-prefix=RESERVED | ||
|
||
## Show that non-fatal errors do not prevent parsing the rest of the section. | ||
# RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_malformed.s -filetype=obj -o %t-malformed.o | ||
# RUN: llvm-dwarfdump -debug-line %t-malformed.o 2> %t-malformed.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL | ||
# RUN: FileCheck %s --input-file=%t-malformed.err --check-prefixes=ALL,OTHER | ||
# RUN: llvm-dwarfdump -debug-line %t-malformed.o -verbose 2> %t-malformed-verbose.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NONFATAL | ||
# RUN: FileCheck %s --input-file=%t-malformed-verbose.err --check-prefixes=ALL,OTHER | ||
|
||
## We should still produce warnings for malformed tables after the specified unit. | ||
# RUN: llvm-dwarfdump -debug-line=0 %t-malformed.o 2> %t-malformed-off-first.err \ | ||
# RUN: | FileCheck %s --check-prefixes=FIRST,NOLATER | ||
# RUN: FileCheck %s --input-file=%t-malformed-off-first.err --check-prefix=ALL | ||
|
||
## Don't stop looking for the later unit if non-fatal issues are found. | ||
# RUN: llvm-dwarfdump -debug-line=0x271 %t-malformed.o 2> %t-malformed-off-last.err \ | ||
# RUN: | FileCheck %s --check-prefixes=LASTONLY | ||
# RUN: FileCheck %s --input-file=%t-malformed-off-last.err --check-prefix=ALL | ||
|
||
# FIRST: debug_line[0x00000000] | ||
# FIRST: 0x000000000badbeef {{.*}} end_sequence | ||
# NOFIRST-NOT: debug_line[0x00000000] | ||
# NOFIRST-NOT: 0x000000000badbeef {{.*}} end_sequence | ||
# NOLATER-NOT: debug_line[{{.*}}] | ||
# NOLATER-NOT: end_sequence | ||
|
||
## For fatal issues, the following table(s) should not be dumped. | ||
# FATAL: debug_line[0x00000048] | ||
# FATAL-NEXT: Line table prologue | ||
# FATAL-NEXT: total_length: 0xfffffffe | ||
# FATAL-NOT: debug_line | ||
|
||
## For non-fatal prologue issues, the table prologue should be dumped, and any | ||
## subsequent tables should also be. | ||
## Case 1: Version 0 table. | ||
# NONFATAL: debug_line[0x00000048] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 2: Version 1 table. | ||
# NONFATAL: debug_line[0x0000004e] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 3: Malformed directory format with no path component. | ||
# NONFATAL: debug_line[0x00000054] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 4: Prologue with length shorter than parsed. | ||
# NONFATAL: debug_line[0x00000073] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 5: Prologue with length longer than parsed. | ||
# NONFATAL: debug_line[0x000000ad] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: Address | ||
|
||
## Case 6: Extended opcode with incorrect length versus expected. | ||
# NONFATAL: debug_line[0x000000e7] | ||
## Dumping prints the line table prologue and any valid operations up to the | ||
## point causing the problem. | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL: 0x00000000abbadaba {{.*}} end_sequence | ||
# NONFATAL-NOT: is_stmt | ||
|
||
## For minor issues, we can dump the whole table. | ||
## Case 7: No end of sequence. | ||
# NONFATAL: debug_line[0x0000013d] | ||
# NONFATAL-NEXT: Line table prologue | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
# NONFATAL: 0x00000000deadfade {{.*}} | ||
|
||
## Case 8: Very short prologue length for V5 (ends during parameters). | ||
# NONFATAL: debug_line[0x00000183] | ||
# NONFATAL-NEXT: Line table prologue | ||
|
||
## TODO: Add checks here for remaining tables. | ||
|
||
# NONFATAL: debug_line[0x00000271] | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
# NONFATAL: 0x00000000cafebabe {{.*}} end_sequence | ||
# NONFATAL-NOT: debug_line[{{.*}}] | ||
|
||
# LASTONLY-NOT: debug_line[{{.*}}] | ||
# LASTONLY: debug_line[0x00000271] | ||
# LASTONLY: 0x00000000cafebabe {{.*}} end_sequence | ||
|
||
# RESERVED: warning: parsing line table prologue at offset 0x00000048 unsupported reserved unit length found of value 0xfffffffe | ||
|
||
# ALL-NOT: warning: | ||
# ALL: warning: parsing line table prologue at offset 0x00000048 found unsupported version 0x00 | ||
# ALL-NEXT: warning: parsing line table prologue at offset 0x0000004e found unsupported version 0x01 | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000054 found an invalid directory or file table description at 0x00000073 | ||
# ALL-NEXT: warning: failed to parse entry content descriptions because no path was found | ||
# FIXME - The latter offset in the next line should be 0xad. The filename parsing code does not notice a missing terminating byte. | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000073 should have ended at 0x000000ab but it ended at 0x000000ac | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000000ad should have ended at 0x000000e8 but it ended at 0x000000e7 | ||
# OTHER-NEXT: warning: unexpected line op length at offset 0x0000012e expected 0x02 found 0x01 | ||
# OTHER-NEXT: warning: last sequence in debug line table is not terminated! | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000183 found an invalid directory or file table description at 0x000001a2 | ||
# ALL-NEXT: warning: failed to parse entry content descriptions at offset 0x000001a2 because offset extends beyond the prologue end at offset 0x0000019e | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000001be found an invalid directory or file table description at 0x000001eb | ||
# ALL-NEXT: warning: failed to parse file entry at offset 0x000001eb because offset extends beyond the prologue end at offset 0x000001e9 | ||
# ALL-NEXT: warning: parsing line table prologue at 0x000001f9 found an invalid directory or file table description at 0x0000021b | ||
# ALL-NEXT: warning: failed to parse directory entry at offset 0x0000021b because offset extends beyond the prologue end at offset 0x0000021b | ||
# ALL-NEXT: warning: parsing line table prologue at 0x00000234 found an invalid directory or file table description at 0x00000269 | ||
# ALL-NEXT: warning: failed to parse file entry because the MD5 hash is invalid | ||
# ALL-NOT: warning: |