[PATCH] D69305: [llvm/Object] - Fix the error message reported for a broken SHT_SYMTAB_SHNDX section.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 22 06:47:04 PDT 2019
grimar created this revision.
grimar added reviewers: jhenderson, MaskRay, rupprecht.
grimar updated this revision to Diff 226040.
grimar added a comment.
- Removed "FIXME" fixed.
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.
https://reviews.llvm.org/D69305
Files:
include/llvm/Object/ELF.h
test/Object/invalid.test
test/tools/obj2yaml/elf-sht-symtab-shndx.yaml
Index: test/tools/obj2yaml/elf-sht-symtab-shndx.yaml
===================================================================
--- test/tools/obj2yaml/elf-sht-symtab-shndx.yaml
+++ test/tools/obj2yaml/elf-sht-symtab-shndx.yaml
@@ -98,8 +98,7 @@
# 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:
Index: test/Object/invalid.test
===================================================================
--- test/Object/invalid.test
+++ test/Object/invalid.test
@@ -213,7 +213,7 @@
# 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:
Index: include/llvm/Object/ELF.h
===================================================================
--- include/llvm/Object/ELF.h
+++ include/llvm/Object/ELF.h
@@ -641,11 +641,12 @@
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;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69305.226040.patch
Type: text/x-patch
Size: 2213 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191022/1d79c5a1/attachment.bin>
More information about the llvm-commits
mailing list