-
Notifications
You must be signed in to change notification settings - Fork 12.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm-readobj/llvm-readelf] - Don't fail to dump the object if .dynsy…
…m has broken sh_link field. This is https://bugs.llvm.org/show_bug.cgi?id=42215. GNU readelf allows to dump the objects in that case, but llvm-readobj/llvm-readelf reports an error and stops. The patch fixes that. Differential revision: https://reviews.llvm.org/D63074 llvm-svn: 362938
- Loading branch information
George Rimar
committed
Jun 10, 2019
1 parent
8cd8c57
commit dd4f253
Showing
6 changed files
with
78 additions
and
7 deletions.
There are no files selected for viewing
Binary file added
BIN
+452 Bytes
llvm/test/tools/llvm-readobj/Inputs/elf-broken-dynsym-link.elf-x86-64
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
## 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 %s -o %t1 | ||
# RUN: llvm-readobj -S %t1 2>&1 | FileCheck %s --check-prefixes=LLVM,ERR | ||
# RUN: llvm-readelf -S %t1 2>&1 | FileCheck %s --check-prefixes=GNU,ERR | ||
|
||
# ERR: warning: invalid sh_type for string table, expected SHT_STRTAB | ||
|
||
# LLVM: Name: .dynsym | ||
# LLVM-NEXT: Type: SHT_DYNSYM | ||
# LLVM-NEXT: Flags [ | ||
# LLVM-NEXT: SHF_ALLOC | ||
# LLVM-NEXT: ] | ||
# LLVM-NEXT: Address: 0x0 | ||
# LLVM-NEXT: Offset: 0x180 | ||
# 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 000180 000018 18 A 0 | ||
|
||
--- !ELF | ||
FileHeader: | ||
Class: ELFCLASS64 | ||
Data: ELFDATA2LSB | ||
Type: ET_DYN | ||
Machine: EM_X86_64 | ||
Sections: | ||
- Name: .dynsym | ||
Type: SHT_DYNSYM | ||
|
||
## TODO: Remove precompiled input object after fixing yaml2obj. | ||
## See https://bugs.llvm.org/show_bug.cgi?id=42216. | ||
|
||
## Case 2: sh_link is set to 255, which is larger than the number of the sections. | ||
# RUN: llvm-readobj -S %p/Inputs/elf-broken-dynsym-link.elf-x86-64 2>&1 \ | ||
# RUN: | FileCheck %s --check-prefixes=LLVM2,ERR2 | ||
# RUN: llvm-readelf -S %p/Inputs/elf-broken-dynsym-link.elf-x86-64 2>&1 \ | ||
# RUN: | FileCheck %s --check-prefixes=GNU2,ERR2 | ||
|
||
# ERR2: warning: invalid section index | ||
|
||
# LLVM2: Name: .dynsym | ||
# LLVM2-NEXT: Type: SHT_DYNSYM | ||
# LLVM2-NEXT: Flags [ | ||
# LLVM2-NEXT: SHF_ALLOC | ||
# LLVM2-NEXT: ] | ||
# LLVM2-NEXT: Address: 0x0 | ||
# LLVM2-NEXT: Offset: 0x180 | ||
# LLVM2-NEXT: Size: 2 | ||
# 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 000180 000002 18 A 255 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters