Index: include/llvm/Object/ELFObjectFile.h =================================================================== --- include/llvm/Object/ELFObjectFile.h +++ include/llvm/Object/ELFObjectFile.h @@ -982,7 +982,9 @@ template basic_symbol_iterator ELFObjectFile::symbol_begin() const { - DataRefImpl Sym = toDRI(DotSymtabSec, 0); + DataRefImpl Sym = + toDRI(DotSymtabSec, + DotSymtabSec && DotSymtabSec->sh_size >= sizeof(Elf_Sym) ? 1 : 0); return basic_symbol_iterator(SymbolRef(Sym, this)); } Index: tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- tools/llvm-objdump/llvm-objdump.cpp +++ tools/llvm-objdump/llvm-objdump.cpp @@ -1643,11 +1643,6 @@ const StringRef FileName = O->getFileName(); for (auto I = O->symbol_begin(), E = O->symbol_end(); I != E; ++I) { - // Skip printing the special zero symbol when dumping an ELF file. - // This makes the output consistent with the GNU objdump. - if (I == O->symbol_begin() && isa(O)) - continue; - const SymbolRef &Symbol = *I; uint64_t Address = unwrapOrError(Symbol.getAddress(), ArchiveName, FileName, ArchitectureName);