diff options
-rw-r--r-- | llvm/include/llvm/Object/ELF.h | 6 | ||||
-rw-r--r-- | llvm/test/Object/Inputs/invalid-e_shnum.elf | bin | 64 -> 0 bytes | |||
-rw-r--r-- | llvm/test/Object/invalid.test | 3 |
3 files changed, 1 insertions, 8 deletions
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h index 03b172fe304..31f42f5f50c 100644 --- a/llvm/include/llvm/Object/ELF.h +++ b/llvm/include/llvm/Object/ELF.h @@ -319,12 +319,8 @@ ELFFile<ELFT>::ELFFile(StringRef Object, std::error_code &EC) Header = reinterpret_cast<const Elf_Ehdr *>(base()); - if (Header->e_shoff == 0) { - if (Header->e_shnum != 0) - report_fatal_error( - "e_shnum should be zero if a file has no section header table"); + if (Header->e_shoff == 0) return; - } const uint64_t SectionTableOffset = Header->e_shoff; diff --git a/llvm/test/Object/Inputs/invalid-e_shnum.elf b/llvm/test/Object/Inputs/invalid-e_shnum.elf Binary files differdeleted file mode 100644 index 0b46fbd8cec..00000000000 --- a/llvm/test/Object/Inputs/invalid-e_shnum.elf +++ /dev/null diff --git a/llvm/test/Object/invalid.test b/llvm/test/Object/invalid.test index c72de062059..d940789b6dc 100644 --- a/llvm/test/Object/invalid.test +++ b/llvm/test/Object/invalid.test @@ -55,9 +55,6 @@ INVALID-SYMTAB-SIZE: Invalid data was encountered while parsing the file RUN: not llvm-readobj -t %p/Inputs/invalid-xindex-size.elf 2>&1 | FileCheck --check-prefix=INVALID-XINDEX-SIZE %s INVALID-XINDEX-SIZE: Invalid data was encountered while parsing the file. -RUN: not llvm-readobj -t %p/Inputs/invalid-e_shnum.elf 2>&1 | FileCheck --check-prefix=INVALID-SH-NUM %s -INVALID-SH-NUM: e_shnum should be zero if a file has no section header table - RUN: not llvm-readobj -t %p/Inputs/invalid-ext-symtab-index.elf-x86-64 2>&1 | \ RUN: FileCheck --check-prefix=INVALID-EXT-SYMTAB-INDEX %s INVALID-EXT-SYMTAB-INDEX: Invalid symbol table index |