llvm-objdump: don't assert if ELF file has no sections
authorEd Maste <emaste@freebsd.org>
Fri, 27 Jun 2014 16:37:20 +0000 (16:37 +0000)
committerEd Maste <emaste@freebsd.org>
Fri, 27 Jun 2014 16:37:20 +0000 (16:37 +0000)
FreeBSD core files, for example, have no sections (only program headers).

llvm.org/pr20139
Differential Revision: http://reviews.llvm.org/D4323

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211904 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELF.h

index 716b3b93c0eab954b00e208579147e3921a251e2..c968295b8400ff4c99fa49c3a0e56ef98afb74f3 100644 (file)
@@ -602,7 +602,7 @@ void ELFFile<ELFT>::VerifyStrTab(const Elf_Shdr *sh) const {
 template <class ELFT>
 uint64_t ELFFile<ELFT>::getNumSections() const {
   assert(Header && "Header not initialized!");
-  if (Header->e_shnum == ELF::SHN_UNDEF) {
+  if (Header->e_shnum == ELF::SHN_UNDEF && Header->e_shoff > 0) {
     assert(SectionHeaderTable && "SectionHeaderTable not initialized!");
     return SectionHeaderTable->sh_size;
   }