1
0
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:
georgerim 2019-10-25 11:55:11 +03:00
parent 7f0aae4f14
commit 791ddaf763
3 changed files with 8 additions and 8 deletions

View File

@ -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;
}

View File

@ -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:

View File

@ -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: