mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[llvm/Object] - Fix the error message reported for a broken SHT_SYMTAB_SHNDX section.
SHT_SYMTAB_SHNDX should have the same number of entries as the symbol table associated (https://www.sco.com/developers/gabi/latest/ch4.sheader.html) We currently can report the following message: "SHT_SYMTAB_SHNDX section has sh_size (24) which is not equal to the number of symbols (2)" It is just broken. This patch refines/fixes it. Differential revision: https://reviews.llvm.org/D69305
This commit is contained in:
parent
7f0aae4f14
commit
791ddaf763
@ -641,11 +641,12 @@ ELFFile<ELFT>::getSHNDXTable(const Elf_Shdr &Section,
|
||||
SymTable.sh_type) +
|
||||
" section (expected SHT_SYMTAB/SHT_DYNSYM)");
|
||||
|
||||
if (V.size() != (SymTable.sh_size / sizeof(Elf_Sym)))
|
||||
return createError("SHT_SYMTAB_SHNDX section has sh_size (" +
|
||||
Twine(SymTable.sh_size) +
|
||||
") which is not equal to the number of symbols (" +
|
||||
Twine(V.size()) + ")");
|
||||
uint64_t Syms = SymTable.sh_size / sizeof(Elf_Sym);
|
||||
if (V.size() != Syms)
|
||||
return createError("SHT_SYMTAB_SHNDX has " + Twine(V.size()) +
|
||||
" entries, but the symbol table associated has " +
|
||||
Twine(Syms));
|
||||
|
||||
return V;
|
||||
}
|
||||
|
||||
|
@ -213,7 +213,7 @@ Sections:
|
||||
# RUN: yaml2obj %s --docnum=11 -o %t11
|
||||
# RUN: not llvm-readobj --symbols %t11 2>&1 | FileCheck --check-prefix=INVALID-XINDEX-SIZE %s
|
||||
|
||||
# INVALID-XINDEX-SIZE: error: {{.*}}: SHT_SYMTAB_SHNDX section has sh_size (24) which is not equal to the number of symbols (2)
|
||||
# INVALID-XINDEX-SIZE: error: {{.*}}: SHT_SYMTAB_SHNDX has 2 entries, but the symbol table associated has 1
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
|
@ -98,8 +98,7 @@ Symbols:
|
||||
# RUN: yaml2obj --docnum=4 %s -o %t4
|
||||
# RUN: not obj2yaml %t4 2>&1 | FileCheck %s -DFILE=%t4 --check-prefix=CASE4
|
||||
|
||||
## FIXME: The error message below needs rewording. Size should not be equal to the number of symbols.
|
||||
## CASE4: Error reading file: [[FILE]]: SHT_SYMTAB_SHNDX section has sh_size (48) which is not equal to the number of symbols (3)
|
||||
## CASE4: Error reading file: [[FILE]]: SHT_SYMTAB_SHNDX has 3 entries, but the symbol table associated has 2
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
|
Loading…
x
Reference in New Issue
Block a user