forked from OSchip/llvm-project
[Object/invalid.test] - Convert most of the sub tests to YAML.
Object/invalid.test is a test case that is used to check the behavior of tools when broken inputs are used. The most often tool tested there is llvm-readobj. I think we might want to move such tests to test\tools\llvm-readobj. For now this patch converts many sub-tests to use YAML and removes 12 binaries from the inputs. Differential revision: https://reviews.llvm.org/D63762 llvm-svn: 364522
This commit is contained in:
parent
5360589b7d
commit
cfe9d0fb2b
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
ELF
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,84 +1,308 @@
|
|||
RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-type.elf 2>&1 | FileCheck %s
|
||||
RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-size.elf 2>&1 | FileCheck %s
|
||||
RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-zero-size.elf 2>&1 | FileCheck %s
|
||||
CHECK: Invalid data was encountered while parsing the file
|
||||
## Check that llvm-objdump reports an error when
|
||||
## .shstrtab has an invalid type.
|
||||
|
||||
RUN: not llvm-dwarfdump -debug-line %p/Inputs/invalid-bad-rel-type.elf 2>&1 | FileCheck --check-prefix=RELA %s
|
||||
RELA: Section is not SHT_RELA
|
||||
# RUN: yaml2obj %s --docnum=1 -o %t1
|
||||
# RUN: not llvm-objdump -s %t1 2>&1 | FileCheck %s --check-prefix=INVALIDERR
|
||||
|
||||
RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-non-null.elf 2>&1 | FileCheck --check-prefix=NON-NULL %s
|
||||
NON-NULL: Invalid data was encountered while parsing the file
|
||||
# INVALIDERR: Invalid data was encountered while parsing the file
|
||||
|
||||
Test the sh_entsize are invalid
|
||||
RUN: llvm-readobj -S %p/Inputs/invalid-sh_entsize.elf | FileCheck --check-prefix=SECTION %s
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .shstrtab
|
||||
Type: SHT_PROGBITS
|
||||
|
||||
SECTION: Name: .dynsym
|
||||
SECTION-NEXT: Type: SHT_DYNSYM
|
||||
SECTION-NEXT: Flags [
|
||||
SECTION-NEXT: SHF_ALLOC
|
||||
SECTION-NEXT: ]
|
||||
SECTION-NEXT: Address:
|
||||
SECTION-NEXT: Offset:
|
||||
SECTION-NEXT: Size:
|
||||
SECTION-NEXT: Link:
|
||||
SECTION-NEXT: Info:
|
||||
SECTION-NEXT: AddressAlignment:
|
||||
SECTION-NEXT: EntrySize: 32
|
||||
## Check that llvm-objdump reports an error when
|
||||
## .shstrtab has an invalid zero-size.
|
||||
|
||||
SECTION: Name: .symtab
|
||||
SECTION-NEXT: Type: SHT_SYMTAB
|
||||
SECTION-NEXT: Flags [
|
||||
SECTION-NEXT: ]
|
||||
SECTION-NEXT: Address:
|
||||
SECTION-NEXT: Offset:
|
||||
SECTION-NEXT: Size:
|
||||
SECTION-NEXT: Link:
|
||||
SECTION-NEXT: Info:
|
||||
SECTION-NEXT: AddressAlignment:
|
||||
SECTION-NEXT: EntrySize: 32
|
||||
# RUN: yaml2obj %s --docnum=2 -o %t2
|
||||
# RUN: not llvm-objdump -s %t2 2>&1 | FileCheck %s --check-prefix=INVALIDERR
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-sh_entsize.elf 2>&1 | FileCheck --check-prefix=INVALID-SYM-SIZE %s
|
||||
INVALID-SYM-SIZE: invalid sh_entsize
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .shstrtab
|
||||
Type: SHT_STRTAB
|
||||
Size: 0
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-section-index.elf 2>&1 | FileCheck --check-prefix=INVALID-SECTION-INDEX %s
|
||||
INVALID-SECTION-INDEX: invalid section index
|
||||
## Check that llvm-objdump reports an error when .shstrtab has an invalid
|
||||
## size that goes past the end of the file.
|
||||
|
||||
RUN: not llvm-readobj -S %p/Inputs/invalid-section-size.elf 2>&1 | FileCheck --check-prefix=INVALID-SECTION-SIZE %s
|
||||
INVALID-SECTION-SIZE: invalid section header entry size (e_shentsize) in ELF header
|
||||
# RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-size.elf 2>&1 \
|
||||
# RUN: | FileCheck %s --check-prefix=INVALIDERR
|
||||
|
||||
## Check that llvm-dwarfdump reports an error during relocation resolution
|
||||
## when instead of expected SHT_RELA section it locates a section of a different type.
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-symbol-table-size.elf 2>&1 | FileCheck --check-prefix=INVALID-SYMTAB-SIZE %s
|
||||
INVALID-SYMTAB-SIZE: size is not a multiple of sh_entsize
|
||||
# RUN: yaml2obj %s --docnum=3 -o %t3
|
||||
# RUN: not llvm-dwarfdump -debug-line %t3 2>&1 | FileCheck --check-prefix=RELA %s
|
||||
|
||||
# RELA: Section is not SHT_RELA
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-xindex-size.elf 2>&1 | FileCheck --check-prefix=INVALID-XINDEX-SIZE %s
|
||||
INVALID-XINDEX-SIZE: invalid section contents size
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .debug_line
|
||||
Type: SHT_PROGBITS
|
||||
## The exact content does not matter here. We can use any minimal valid debug section
|
||||
## which is a target for relocation. The idea is to trigger the code that reads the
|
||||
## relocation's addend during relocation resolution. It should fail if called on
|
||||
## a non-SHT_RELA section.
|
||||
Content: 380000000200210000000101FB0E0D00010101010000000100000100676C6F62616C2E63707000000000000009020000000000000000130237000101
|
||||
- Name: .rela.debug_line
|
||||
Type: SHT_REL
|
||||
Info: .debug_line
|
||||
Relocations:
|
||||
- Offset: 0x000000000000002E
|
||||
Type: R_X86_64_64
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-e_shnum.elf 2>&1 | FileCheck --check-prefix=INVALID-SH-NUM %s
|
||||
INVALID-SH-NUM: invalid e_phentsize
|
||||
## Check that llvm-objdump reports an error when it tries to dump section names
|
||||
## and .shstrtab is not null-terminated.
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-ext-symtab-index.elf-x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=INVALID-EXT-SYMTAB-INDEX %s
|
||||
INVALID-EXT-SYMTAB-INDEX: index past the end of the symbol table
|
||||
# RUN: yaml2obj %s --docnum=4 -o %t4
|
||||
# RUN: not llvm-objdump -s %t4 2>&1 | FileCheck --check-prefix=INVALIDERR %s
|
||||
|
||||
RUN: not llvm-readobj -r %p/Inputs/invalid-relocation-sec-sh_offset.elf-i386 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=INVALID-RELOC-SH-OFFSET %s
|
||||
RUN: not llvm-readobj -r %p/Inputs/invalid-relocation-sec-sh_offset.elf-x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=INVALID-RELOC-SH-OFFSET %s
|
||||
INVALID-RELOC-SH-OFFSET: invalid section offset
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .shstrtab
|
||||
Type: SHT_STRTAB
|
||||
Content: "11"
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-section-size2.elf 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=INVALID-SECTION-SIZE2 %s
|
||||
INVALID-SECTION-SIZE2: invalid section offset
|
||||
## Check that llvm-objdump reports an error when it tries to dump a symbol name and
|
||||
## .strtab is not null-terminated.
|
||||
|
||||
RUN: not llvm-readobj --symbols %p/Inputs/invalid-sections-num.elf 2>&1 | FileCheck --check-prefix=INVALID-SECTION-NUM %s
|
||||
INVALID-SECTION-NUM: section table goes past the end of file
|
||||
# RUN: yaml2obj %s --docnum=5 -o %t5
|
||||
# RUN: not llvm-objdump -syms %t5 2>&1 | FileCheck --check-prefix=NONULL %s
|
||||
|
||||
RUN: not llvm-readobj -r %p/Inputs/invalid-rel-sym.elf 2>&1 | FileCheck --check-prefix=INVALID-REL-SYM %s
|
||||
INVALID-REL-SYM: invalid section offset
|
||||
# NONULL: string table non-null terminated
|
||||
|
||||
RUN: not llvm-readobj -r %p/Inputs/invalid-buffer.elf 2>&1 | FileCheck --check-prefix=INVALID-BUFFER %s
|
||||
INVALID-BUFFER: Invalid buffer
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .strtab
|
||||
Type: SHT_STRTAB
|
||||
Content: "11"
|
||||
Symbols:
|
||||
- Name: foo
|
||||
|
||||
RUN: not llvm-readobj %p/Inputs/invalid-coff-header-too-small 2>&1 | FileCheck --check-prefix=COFF-HEADER %s
|
||||
COFF-HEADER: The file was not recognized as a valid object file
|
||||
## Check that llvm-readobj reports an error if .symtab has an invalid sh_entsize.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=6 -o %t6
|
||||
# RUN: not llvm-readobj --symbols %t6 2>&1 | FileCheck --check-prefix=INVALID-SYM-SIZE %s
|
||||
|
||||
# INVALID-SYM-SIZE: invalid sh_entsize
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .symtab
|
||||
Type: SHT_SYMTAB
|
||||
EntSize: 32
|
||||
Symbols:
|
||||
- Name: foo
|
||||
|
||||
## Check that llvm-readobj reports an error if .dynsym has an invalid sh_entsize.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=7 -o %t7
|
||||
# RUN: not llvm-readobj --dyn-symbols %t7 2>&1 | FileCheck --check-prefix=INVALID-DYNSYM-SIZE %s
|
||||
|
||||
# INVALID-DYNSYM-SIZE: error: Invalid entity size
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynsym
|
||||
Type: SHT_DYNSYM
|
||||
EntSize: 32
|
||||
DynamicSymbols:
|
||||
- Name: foo
|
||||
|
||||
## Check that llvm-readobj reports an error if .symtab has an invalid sh_link value,
|
||||
## which is greater than number of sections.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=8 -o %t8
|
||||
# RUN: not llvm-readobj --symbols %t8 2>&1 | FileCheck --check-prefix=INVALID-SYMTAB-LINK %s
|
||||
|
||||
# INVALID-SYMTAB-LINK: invalid section index
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .symtab
|
||||
Type: SHT_SYMTAB
|
||||
Link: 0xFF
|
||||
|
||||
## Check that llvm-readobj reports an error when trying to dump sections
|
||||
## when the e_shentsize field is broken.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=9 -o %t9
|
||||
# RUN: not llvm-readobj -S %t9 2>&1 | FileCheck --check-prefix=INVALID-SH-ENTSIZE %s
|
||||
|
||||
# INVALID-SH-ENTSIZE: invalid section header entry size (e_shentsize) in ELF header
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
SHEntSize: 1
|
||||
|
||||
## Check that llvm-readobj reports an error if .symtab has sh_size
|
||||
## that is not a multiple of sh_entsize.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=10 -o %t10
|
||||
# RUN: not llvm-readobj --symbols %t10 2>&1 | FileCheck --check-prefix=INVALID-SYMTAB-SIZE %s
|
||||
|
||||
# INVALID-SYMTAB-SIZE: size is not a multiple of sh_entsize
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .symtab
|
||||
Type: SHT_SYMTAB
|
||||
Size: 1
|
||||
|
||||
## Test that llvm-readobj reports an error if SHT_SYMTAB_SHNDX section has
|
||||
## invalid sh_size which should be:
|
||||
## sizeof(.symtab_shndx) = (sizeof(.symtab) / entsize(.symtab)) * entsize(.symtab_shndx)
|
||||
|
||||
# RUN: yaml2obj %s --docnum=11 -o %t11
|
||||
# RUN: not llvm-readobj --symbols %t11 2>&1 | FileCheck --check-prefix=INVALID-XINDEX-SIZE %s
|
||||
|
||||
# INVALID-XINDEX-SIZE: invalid section contents size
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .symtab_shndx
|
||||
Type: SHT_SYMTAB_SHNDX
|
||||
Size: 0x18
|
||||
EntSize: 4
|
||||
Link: .symtab
|
||||
|
||||
## Check that llvm-readobj reports an error if the e_phentsize field is broken.
|
||||
|
||||
# RUN: not llvm-readobj --program-headers %p/Inputs/invalid-e_shnum.elf 2>&1 | \
|
||||
# RUN: FileCheck --check-prefix=INVALID-PH-ENTSIZE %s
|
||||
|
||||
# INVALID-PH-ENTSIZE: invalid e_phentsize
|
||||
|
||||
## Check that llvm-readobj reports an error when we have no SHT_SYMTAB_SHNDX section,
|
||||
## but have a symbol referencing it.
|
||||
|
||||
# RUN: not llvm-readobj --symbols %p/Inputs/invalid-ext-symtab-index.elf-x86-64 2>&1 | \
|
||||
# RUN: FileCheck --check-prefix=INVALID-EXT-SYMTAB-INDEX %s
|
||||
|
||||
# INVALID-EXT-SYMTAB-INDEX: index past the end of the symbol table
|
||||
|
||||
## Check that llvm-readobj reports an error if a relocation section
|
||||
## has a broken sh_offset (past the end of the file).
|
||||
|
||||
# RUN: not llvm-readobj -r %p/Inputs/invalid-relocation-sec-sh_offset.elf-i386 2>&1 | \
|
||||
# RUN: FileCheck --check-prefix=INVALID-RELOC-SH-OFFSET %s
|
||||
# RUN: not llvm-readobj -r %p/Inputs/invalid-relocation-sec-sh_offset.elf-x86-64 2>&1 | \
|
||||
# RUN: FileCheck --check-prefix=INVALID-RELOC-SH-OFFSET %s
|
||||
|
||||
# INVALID-RELOC-SH-OFFSET: invalid section offset
|
||||
|
||||
## Check that llvm-objdump reports an error when .shstrtab has a broken sh_offset
|
||||
## so large that sh_offset + sh_size overflows the platform address size type.
|
||||
|
||||
# RUN: not llvm-readobj --symbols %p/Inputs/invalid-section-size2.elf 2>&1 | \
|
||||
# RUN: FileCheck --check-prefix=INVALID-SECTION-SIZE2 %s
|
||||
|
||||
# INVALID-SECTION-SIZE2: invalid section offset
|
||||
|
||||
## Check that llvm-readobj reports an error when trying to dump sections
|
||||
## when the e_shnum field is broken (is greater than the actual number of sections).
|
||||
|
||||
# RUN: yaml2obj %s --docnum=12 -o %t12
|
||||
# RUN: not llvm-readobj -S %t12 2>&1 | FileCheck --check-prefix=INVALID-SECTION-NUM %s
|
||||
|
||||
# INVALID-SECTION-NUM: section table goes past the end of file
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
SHNum: 0xFF
|
||||
|
||||
## Check that llvm-readobj reports an error if a relocation contains an
|
||||
## incorrect (too large) symbol index.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=13 -o %t13
|
||||
# RUN: not llvm-readobj -r %t13 2>&1 | FileCheck --check-prefix=INVALID-REL-SYM %s
|
||||
|
||||
# INVALID-REL-SYM: invalid section offset
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .rela.text
|
||||
Type: SHT_RELA
|
||||
Info: 0
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Type: R_X86_64_64
|
||||
Symbol: 0xFFFFFF
|
||||
|
||||
## Check llvm-readobj does not crash on a truncated ELF.
|
||||
|
||||
## Create a truncated ELF object with ELFCLASSNONE class using echo.
|
||||
## 0x7f, 'E', 'L', 'F', ELFCLASS64(2), ELFDATA2LSB(1),
|
||||
## EV_CURRENT(1), ELFOSABI_LINUX(3), <padding zero bytes>, ET_REL(1), EM_NONE(0)
|
||||
# RUN: echo -e -n "\x7f\x45\x4c\x46\x02\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" > %t11
|
||||
# RUN: not llvm-readobj -r %t11 2>&1 | FileCheck --check-prefix=INVALID-BUFFER %s
|
||||
|
||||
# INVALID-BUFFER: Invalid buffer
|
||||
|
||||
# RUN: not llvm-readobj %p/Inputs/invalid-coff-header-too-small 2>&1 | FileCheck --check-prefix=COFF-HEADER %s
|
||||
# COFF-HEADER: The file was not recognized as a valid object file
|
||||
|
|
Loading…
Reference in New Issue