[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 updated this revision to Diff 226040.
grimar added a comment.

- Removed "FIXME" fixed.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69305/new/

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/27a23580/attachment.bin>


More information about the llvm-commits mailing list