| ## Test that we are able to dump section headers even if the |
| ## .dynsym section's sh_link field is broken. |
| |
| ## Case 1: sh_link is set to 0. |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readobj -S %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefixes=LLVM,ERR |
| # RUN: llvm-readelf -S %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefixes=GNU,ERR |
| |
| # ERR: warning: '[[FILE]]': invalid sh_type for string table section [index 0]: expected SHT_STRTAB, but got SHT_NULL |
| |
| # LLVM: Name: .dynsym |
| # LLVM-NEXT: Type: SHT_DYNSYM |
| # LLVM-NEXT: Flags [ |
| # LLVM-NEXT: SHF_ALLOC |
| # LLVM-NEXT: ] |
| # LLVM-NEXT: Address: 0x0 |
| # LLVM-NEXT: Offset: 0x40 |
| # LLVM-NEXT: Size: 24 |
| # LLVM-NEXT: Link: 0 |
| |
| # GNU: Section Headers: |
| # GNU-NEXT: [Nr] Name Type Address Off Size ES Flg Lk |
| # GNU-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 |
| # GNU-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000018 18 A 0 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| |
| ## Case 2: sh_link is set to 255, which is larger than the number of the sections. |
| # RUN: yaml2obj --docnum=2 %s -o %t2 |
| |
| # RUN: llvm-readobj -S %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefixes=LLVM2,ERR2 |
| # RUN: llvm-readelf -S %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefixes=GNU2,ERR2 |
| |
| # ERR2: warning: '[[FILE]]': invalid section index |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Link: 255 |
| |
| # LLVM2: Name: .dynsym |
| # LLVM2-NEXT: Type: SHT_DYNSYM |
| # LLVM2-NEXT: Flags [ |
| # LLVM2-NEXT: SHF_ALLOC |
| # LLVM2-NEXT: ] |
| # LLVM2-NEXT: Address: 0x0 |
| # LLVM2-NEXT: Offset: 0x40 |
| # LLVM2-NEXT: Size: 24 |
| # LLVM2-NEXT: Link: 255 |
| |
| # GNU2: Section Headers: |
| # GNU2-NEXT: [Nr] Name Type Address Off Size ES Flg Lk |
| # GNU2-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 |
| # GNU2-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000018 18 A 255 |