| ## Check bad DT_STRTAB address. |
| |
| # RUN: yaml2obj %s -DSTRSZ_VALUE=0x0000000000000001 -DSTRTAB_ADDR=0x0000000000000260 -o %t |
| # RUN: not llvm-ifs --input-format=ELF --output-ifs=%t.tbe %t 2>&1 | FileCheck %s -DERR_ADDR=0x260 |
| |
| |
| ## Check bad DT_STRSZ size. |
| |
| # RUN: yaml2obj %s -DSTRSZ_VALUE=0x0000000000001000 -DSTRTAB_ADDR=0x0000000000001000 -o %t |
| # RUN: not llvm-ifs --input-format=ELF --output-ifs=%t.tbe %t 2>&1 | FileCheck %s -DERR_ADDR=0x2000 |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| Flags: [ SHF_ALLOC ] |
| Address: 0x1000 |
| Content: "00" |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| Flags: [ SHF_ALLOC ] |
| Address: 0x0000000000001008 |
| Link: .dynstr |
| AddressAlign: 0x0000000000000008 |
| EntSize: 0x0000000000000010 |
| Entries: |
| - Tag: DT_SONAME |
| Value: 0x0000000000000000 |
| - Tag: DT_STRSZ |
| Value: [[STRSZ_VALUE]] |
| - Tag: DT_STRTAB |
| Value: [[STRTAB_ADDR]] |
| - Tag: DT_SYMTAB |
| Value: 0x0000000000001000 |
| - Tag: DT_NULL |
| Value: 0x0000000000000000 |
| ProgramHeaders: |
| - Type: PT_LOAD |
| Flags: [ PF_R ] |
| VAddr: 0x1000 |
| Align: 8 |
| FirstSec: .dynstr |
| LastSec: .dynamic |
| - Type: PT_DYNAMIC |
| Flags: [ PF_X, PF_R ] |
| VAddr: 0x1008 |
| FirstSec: .dynamic |
| LastSec: .dynamic |
| |
| # CHECK: virtual address is not in any segment: [[ERR_ADDR]] when locating dynamic string table section contents |