[PATCH] D76081: [Object] object::ELFObjectFile::dynamic_symbol_begin(): skip symbol index 0

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 13 02:58:45 PDT 2020


grimar added inline comments.


================
Comment at: llvm/include/llvm/Object/ELFObjectFile.h:1024
+      toDRI(DotDynSymSec,
+            DotDynSymSec && DotDynSymSec->sh_size >= sizeof(Elf_Sym) ? 1 : 0);
   return symbol_iterator(SymbolRef(Sym, this));
----------------
Ok. So seems we are going to make this function to ignore the zero symbol.

Code on the left did not work with `sh_size`, you are adding the logic that uses it,
but what if `sh_size` is broken? Here, `sh_size  % sizeof(Elf_Sym) != 0`
means we have a corrupted section isn't?

I'd suggest to isolate error handling. For now we can probably do something like:

```
// A comment saying we ignore this errors currently.
if (!DotDynSymSec->sh_size || DotDynSymSec->sh_size % sizeof(Elf_Sym))
 return dynamic_symbol_end();
// A comment about what we do.
return {SymbolRef(toDRI(DotDynSymSec, 1), this};
```

Do we have a test where this method is used when  `sh_size  % sizeof(Elf_Sym) != 0`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76081





More information about the llvm-commits mailing list