diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-11-01 20:24:22 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-11-01 20:24:22 +0000 |
commit | 120dca3b63cb94bcce3a95416f692a44c9d669aa (patch) | |
tree | 5977a2d768d287546a3cd5a1087e79a5195f4e12 | |
parent | 3603e6123832631d28f4c07fbf55910742367950 (diff) | |
download | bcm5719-llvm-120dca3b63cb94bcce3a95416f692a44c9d669aa.tar.gz bcm5719-llvm-120dca3b63cb94bcce3a95416f692a44c9d669aa.zip |
Use the existing std::error_code out parameter.
This avoids calling exit with a partially constructed object.
llvm-svn: 285738
-rw-r--r-- | llvm/include/llvm/Object/ELF.h | 7 | ||||
-rw-r--r-- | llvm/test/Object/invalid.test | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h index 2c715bffa2f..10f61ad2f28 100644 --- a/llvm/include/llvm/Object/ELF.h +++ b/llvm/include/llvm/Object/ELF.h @@ -324,9 +324,10 @@ 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_shnum != 0) { + // e_shnum should be zero if a file has no section header table + EC = object_error::parse_failed; + } return; } diff --git a/llvm/test/Object/invalid.test b/llvm/test/Object/invalid.test index dd431aa3a55..057239de991 100644 --- a/llvm/test/Object/invalid.test +++ b/llvm/test/Object/invalid.test @@ -57,7 +57,7 @@ RUN: not llvm-readobj -t %p/Inputs/invalid-xindex-size.elf 2>&1 | FileCheck --ch 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 +INVALID-SH-NUM: Invalid data was encountered while parsing the file. 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 |