diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 7292841c55a..34401937bd8 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1536,7 +1536,12 @@ static void DumpObject(const ObjectFile *o) { /// @brief Dump each object file in \a a; static void DumpArchive(const Archive *a) { - for (const Archive::Child &C : a->children()) { + for (auto &ErrorOrChild : a->children()) { + if (std::error_code EC = ErrorOrChild.getError()) { + report_error(a->getFileName(), EC); + break; + } + const Archive::Child &C = *ErrorOrChild; ErrorOr<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (std::error_code EC = ChildOrErr.getError()) if (EC != object_error::invalid_file_type) |