mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[yaml2obj] Fix bug when referencing items in SectionHeaderTable
There was an off-by-one error caused by an index (which included an index for the null section header) being used to check against the size of a list of sections (which didn't include the null section header). This is a partial fix for https://bugs.llvm.org/show_bug.cgi?id=50506. Reviewed by: MaskRay Differential Revision: https://reviews.llvm.org/D104098
This commit is contained in:
parent
88474bed70
commit
5506e18140
@ -563,7 +563,7 @@ unsigned ELFState<ELFT>::toSectionIndex(StringRef S, StringRef LocSec,
|
||||
!SectionHeaders.Sections);
|
||||
size_t FirstExcluded =
|
||||
SectionHeaders.Sections ? SectionHeaders.Sections->size() : 0;
|
||||
if (Index >= FirstExcluded) {
|
||||
if (Index > FirstExcluded) {
|
||||
if (LocSym.empty())
|
||||
reportError("unable to link '" + LocSec + "' to excluded section '" + S +
|
||||
"'");
|
||||
|
@ -418,3 +418,39 @@ Sections:
|
||||
Sections:
|
||||
- Name: .strtab
|
||||
- Name: .shstrtab
|
||||
|
||||
## Show that we can reference both the first and last section in the section
|
||||
## header table, via sh_link.
|
||||
|
||||
# RUN: yaml2obj %s --docnum=14 -o %t14
|
||||
# RUN: llvm-readelf --sections %t14 | FileCheck %s --check-prefix=LINK
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Sections:
|
||||
- Name: .strtab
|
||||
Type: SHT_STRTAB
|
||||
- Type: SectionHeaderTable
|
||||
Sections:
|
||||
- Name: .strtab
|
||||
- Name: .ref.first
|
||||
- Name: .ref.last
|
||||
- Name: .shstrtab
|
||||
- Name: .ref.first
|
||||
Type: SHT_PROGBITS
|
||||
Link: .strtab
|
||||
- Name: .ref.last
|
||||
Type: SHT_PROGBITS
|
||||
Link: .shstrtab
|
||||
- Name: .shstrtab
|
||||
Type: SHT_STRTAB
|
||||
|
||||
# LINK: There are 5 section headers
|
||||
# LINK: [Nr] Name Type Address Off Size ES Flg Lk
|
||||
# LINK: [ 1] .strtab
|
||||
# LINK-NEXT: [ 2] .ref.first PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] [[#%x,]] 1
|
||||
# LINK-NEXT: [ 3] .ref.last PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] [[#%x,]] 4
|
||||
# LINK-NEXT: [ 4] .shstrtab
|
||||
|
Loading…
Reference in New Issue
Block a user