forked from OSchip/llvm-project
[Object/invalid.test] - Convert Object/corrupt.test to YAML and merge the result into invalid.test
Object/corrupt.test has the same purpose as Object/invalid.test: it tests the behavior on invalid inputs. In this patch I converted it to YAML, merged into invalid.test, added comments and removed a few precompiled binaries. Differential revision: https://reviews.llvm.org/D63927 llvm-svn: 364916
This commit is contained in:
parent
0bde7c6527
commit
234f5f675e
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,65 +0,0 @@
|
|||
// Section name offset overflows section name string table.
|
||||
RUN: not llvm-readobj %p/Inputs/corrupt.elf-x86-64 -sections \
|
||||
RUN: 2>&1 | FileCheck --check-prefix=SECNAME %s
|
||||
|
||||
SECNAME: invalid string offset
|
||||
|
||||
|
||||
// Section data offset past end of file.
|
||||
RUN: not llvm-readobj %p/Inputs/corrupt.elf-x86-64 -sections -section-data \
|
||||
RUN: 2>&1 | FileCheck --check-prefix=SECDATA %s
|
||||
|
||||
SECDATA: invalid section offset
|
||||
|
||||
|
||||
// Symbol name offset overflows string table.
|
||||
RUN: not llvm-readobj %p/Inputs/corrupt.elf-x86-64 -symbols \
|
||||
RUN: 2>&1 | FileCheck --check-prefix=SYMNAME %s
|
||||
|
||||
SYMNAME: invalid string offset
|
||||
|
||||
|
||||
// Version index in .gnu.version overflows the version map.
|
||||
RUN: not llvm-readobj %p/Inputs/corrupt-version.elf-x86_64 -dt \
|
||||
RUN: 2>&1 | FileCheck --check-prefix=VER %s
|
||||
|
||||
VER: error: Invalid version entry
|
||||
|
||||
RUN: not llvm-readobj -l \
|
||||
RUN: %p/Inputs/corrupt-invalid-phentsize.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=PHENTSIZE %s
|
||||
|
||||
PHENTSIZE: invalid e_phentsize
|
||||
|
||||
RUN: llvm-readobj --dynamic-table \
|
||||
RUN: %p/Inputs/corrupt-invalid-virtual-addr.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=VIRTADDR %s
|
||||
|
||||
VIRTADDR: warning: Unable to parse DT_STRTAB: Virtual address is not in any segment
|
||||
|
||||
|
||||
RUN: not llvm-readobj --dyn-relocations \
|
||||
RUN: %p/Inputs/corrupt-invalid-relocation-size.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=RELOC %s
|
||||
|
||||
RELOC: Invalid entity size
|
||||
|
||||
RUN: not llvm-readobj --dyn-relocations \
|
||||
RUN: %p/Inputs/corrupt-invalid-dynamic-table-size.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=DYN-TABLE-SIZE %s
|
||||
|
||||
DYN-TABLE-SIZE: Invalid entity size
|
||||
|
||||
|
||||
RUN: not llvm-readobj --dyn-relocations \
|
||||
RUN: %p/Inputs/corrupt-invalid-dynamic-table-offset.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=DYN-TABLE-OFFSET %s
|
||||
|
||||
DYN-TABLE-OFFSET: error: PT_DYNAMIC segment offset + size exceeds the size of the file
|
||||
|
||||
|
||||
RUN: not llvm-readobj --dyn-relocations \
|
||||
RUN: %p/Inputs/corrupt-invalid-dynamic-table-too-large.elf.x86-64 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=DYN-TABLE-TOO-LARGE %s
|
||||
|
||||
DYN-TABLE-TOO-LARGE: error: PT_DYNAMIC segment offset + size exceeds the size of the file
|
|
@ -339,3 +339,200 @@ Sections:
|
|||
|
||||
# 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 section name offset
|
||||
## overflows the section name string table.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=17 -o %t17
|
||||
# RUN: not llvm-readobj --sections %t17 2>&1 | FileCheck --check-prefix=BROKEN-SECNAME %s
|
||||
|
||||
## BROKEN-SECNAME: invalid string offset
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .shstrtab
|
||||
Type: SHT_STRTAB
|
||||
Size: 1
|
||||
|
||||
## Check that llvm-readobj reports an error if a section has a broken offset
|
||||
## that goes past the end of the file.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=18 -o %t18
|
||||
# RUN: not llvm-readobj --sections --section-data %t18 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=BROKEN-SECSHOFFSET %s
|
||||
|
||||
# BROKEN-SECSHOFFSET: invalid section offset
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .foo
|
||||
Type: SHT_PROGBITS
|
||||
ShOffset: 0xFFFF0000
|
||||
|
||||
## Check that llvm-readobj reports an error if symbol name
|
||||
## offset goes past the end of the symbol string table.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=19 -o %t19
|
||||
# RUN: not llvm-readobj --symbols %t19 2>&1 | FileCheck --check-prefix=INVALID-SYM-NAME %s
|
||||
|
||||
# INVALID-SYM-NAME: error: Invalid data was encountered while parsing the file
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .strtab
|
||||
Type: SHT_STRTAB
|
||||
Size: 1
|
||||
Symbols:
|
||||
- Name: foo
|
||||
|
||||
## Version index in .gnu.version overflows the version map.
|
||||
## Check llvm-readobj reports it.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=20 -o %t20
|
||||
# RUN: not llvm-readobj -dt %t20 2>&1 | FileCheck --check-prefix=INVALID-VERSION %s
|
||||
|
||||
# INVALID-VERSION: error: Invalid version entry
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .gnu.version
|
||||
Type: SHT_GNU_versym
|
||||
Entries: [ 0xFF ]
|
||||
DynamicSymbols:
|
||||
- Name: foo
|
||||
|
||||
## ELF header contains e_phentsize field with a value != sizeof(Elf_Phdr).
|
||||
## Check llvm-readobj reports it.
|
||||
|
||||
# RUN: not llvm-readobj -l %p/Inputs/corrupt-invalid-phentsize.elf.x86-64 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=PHENTSIZE %s
|
||||
|
||||
# PHENTSIZE: invalid e_phentsize
|
||||
|
||||
## The dynamic table contains DT_STRTAB with a value that is not in any loadable segment.
|
||||
## Check llvm-readobj reports it.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=21 -o %t21
|
||||
# RUN: llvm-readobj --dynamic-table %t21 2>&1 | FileCheck --check-prefix=INVALID-DTSTRTAB %s
|
||||
|
||||
# INVALID-DTSTRTAB: warning: Unable to parse DT_STRTAB: Virtual address is not in any segment
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Address: 0x1000
|
||||
Entries:
|
||||
- Tag: DT_STRTAB
|
||||
Value: 0xFFFF0000
|
||||
- Tag: DT_NULL
|
||||
Value: 0x0
|
||||
ProgramHeaders:
|
||||
- Type: PT_LOAD
|
||||
VAddr: 0x1000
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
||||
## Check that llvm-readobj reports an error when a dynamic relocation section
|
||||
## has sh_entsize field with size != sizeof(Elf_Rela).
|
||||
|
||||
# RUN: not llvm-readobj --dyn-relocations \
|
||||
# RUN: %p/Inputs/corrupt-invalid-relocation-size.elf.x86-64 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=RELOC-BROKEN-ENTSIZE %s
|
||||
|
||||
# RELOC-BROKEN-ENTSIZE: Invalid entity size
|
||||
|
||||
## Check that llvm-readobj reports an error when .dynamic section has an invalid
|
||||
## size, which isn't a multiple of the dynamic entry size.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=22 -o %t22
|
||||
# RUN: not llvm-readobj --dyn-relocations %t22 2>&1 | FileCheck --check-prefix=DYN-TABLE-SIZE %s
|
||||
|
||||
# DYN-TABLE-SIZE: Invalid entity size
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Content: "00"
|
||||
|
||||
## PT_DYNAMIC's p_offset field is so large that p_offset + p_filesz is larger
|
||||
## than the object size. Check llvm-readobj reports it.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=23 -o %t23
|
||||
# RUN: not llvm-readobj --dyn-relocations %t23 2>&1 | FileCheck --check-prefix=DYN-TABLE-PHDR %s
|
||||
|
||||
# DYN-TABLE-PHDR: error: PT_DYNAMIC segment offset + size exceeds the size of the file
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_NULL
|
||||
Value: 0
|
||||
ProgramHeaders:
|
||||
- Type: PT_DYNAMIC
|
||||
Offset: 0xffff0000
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
||||
## PT_DYNAMIC's p_filesz field is so large that p_offset + p_filesz is larger
|
||||
## than the object size. Check llvm-readobj reports it.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=24 -o %t24
|
||||
# RUN: not llvm-readobj --dyn-relocations %t24 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=DYN-TABLE-PHDR %s
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Entries:
|
||||
- Tag: DT_NULL
|
||||
Value: 0
|
||||
ProgramHeaders:
|
||||
- Type: PT_DYNAMIC
|
||||
FileSize: 0xffff0000
|
||||
Sections:
|
||||
- Section: .dynamic
|
||||
|
|
Loading…
Reference in New Issue