forked from OSchip/llvm-project
174 lines
4.6 KiB
Plaintext
174 lines
4.6 KiB
Plaintext
# Test handling of a dynamic section size which is not a multiple of its entry size.
|
|
# RUN: yaml2obj %s --docnum=1 -o %t.bad-size
|
|
# RUN: not llvm-readobj --dynamic-table %t.bad-size 2>&1 | FileCheck %s --check-prefix ERR-SIZE
|
|
# RUN: not llvm-readelf --dynamic-table %t.bad-size 2>&1 | FileCheck %s --check-prefix ERR-SIZE
|
|
|
|
# ERR-SIZE: error: Invalid entity size
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .dynamic
|
|
Type: SHT_DYNAMIC
|
|
Address: 0x1000
|
|
Content: "01234567"
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
- Type: PT_DYNAMIC
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
|
|
# Test handling of a .dynamic section with an invalid entsize (i.e. not 2 * sizeof(Elf_Dyn)).
|
|
# RUN: yaml2obj %s --docnum=2 -o %t.bad-entsize
|
|
# RUN: llvm-readobj --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE
|
|
# RUN: llvm-readelf --dynamic-table %t.bad-entsize | FileCheck %s --check-prefix BAD-ENTSIZE
|
|
|
|
# BAD-ENTSIZE: DynamicSection [ (2 entries)
|
|
# BAD-ENTSIZE-NEXT: Tag Type Name/Value
|
|
# BAD-ENTSIZE-NEXT: 0x0000000000000015 DEBUG 0x0
|
|
# BAD-ENTSIZE-NEXT: 0x0000000000000000 NULL 0x0
|
|
# BAD-ENTSIZE-NEXT: ]
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .dynamic
|
|
Type: SHT_DYNAMIC
|
|
Address: 0x1000
|
|
EntSize: 0x2
|
|
Entries:
|
|
- Tag: DT_DEBUG
|
|
Value: 0
|
|
- Tag: DT_NULL
|
|
Value: 0
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
- Type: PT_DYNAMIC
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
|
|
# Test handling of string references pointing past the end of the dynamic string table. In this case,
|
|
# we have a DT_NEEDED tag pointing at offset 1 in a 1-byte string table.
|
|
# RUN: yaml2obj %s --docnum=3 -o %t.bad-string
|
|
# RUN: not llvm-readobj --dynamic-table %t.bad-string 2>&1 | FileCheck %s --check-prefix BAD-STRING
|
|
# RUN: not llvm-readelf --dynamic-table %t.bad-string 2>&1 | FileCheck %s --check-prefix BAD-STRING
|
|
|
|
# BAD-STRING: Invalid dynamic string table reference
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .dynstr
|
|
Type: SHT_STRTAB
|
|
Address: 0x1000
|
|
- Name: .dynamic
|
|
Type: SHT_DYNAMIC
|
|
Address: 0x1010
|
|
Entries:
|
|
- Tag: DT_STRTAB
|
|
Value: 0x1000
|
|
- Tag: DT_STRSZ
|
|
Value: 1
|
|
- Tag: DT_NEEDED
|
|
Value: 1
|
|
- Tag: DT_NULL
|
|
Value: 0
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynstr
|
|
- Section: .dynamic
|
|
- Type: PT_DYNAMIC
|
|
VAddr: 0x1010
|
|
Sections:
|
|
- Section: .dynamic
|
|
|
|
# Test handling of DT_STRTAB pointing outside the file's address space.
|
|
# RUN: yaml2obj %s --docnum=4 -o %t.bad-strtab
|
|
# RUN: not llvm-readobj --dynamic-table %t.bad-strtab 2>&1 | FileCheck %s --check-prefix BAD-STRTAB
|
|
# RUN: not llvm-readelf --dynamic-table %t.bad-strtab 2>&1 | FileCheck %s --check-prefix BAD-STRTAB
|
|
|
|
# BAD-STRTAB: LLVM ERROR: 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: 0x2000000
|
|
- Tag: DT_STRSZ
|
|
Value: 10
|
|
- Tag: DT_NEEDED
|
|
Value: 1
|
|
- Tag: DT_NULL
|
|
Value: 0x0
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
- Type: PT_DYNAMIC
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
|
|
# Test handling of other d_ptr tags pointing outside the file's address space.
|
|
# RUN: yaml2obj %s --docnum=5 -o %t.bad-rela
|
|
# RUN: not llvm-readobj --dynamic-table %t.bad-rela 2>&1 | FileCheck %s --check-prefix BAD-RELA
|
|
# RUN: not llvm-readelf --dynamic-table %t.bad-rela 2>&1 | FileCheck %s --check-prefix BAD-RELA
|
|
|
|
# BAD-RELA: LLVM ERROR: 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_RELA
|
|
Value: 0x1000000
|
|
- Tag: DT_NULL
|
|
Value: 0x0
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|
|
- Type: PT_DYNAMIC
|
|
VAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|