diff options
Diffstat (limited to 'tools/llvm-cxxdump/llvm-cxxdump.cpp')
-rw-r--r-- | tools/llvm-cxxdump/llvm-cxxdump.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/llvm-cxxdump/llvm-cxxdump.cpp b/tools/llvm-cxxdump/llvm-cxxdump.cpp index d45a28a3b0f..96526c4ea45 100644 --- a/tools/llvm-cxxdump/llvm-cxxdump.cpp +++ b/tools/llvm-cxxdump/llvm-cxxdump.cpp @@ -482,7 +482,12 @@ static void dumpCXXData(const ObjectFile *Obj) { } static void dumpArchive(const Archive *Arc) { - for (const Archive::Child &ArcC : Arc->children()) { + for (auto &ErrorOrChild : Arc->children()) { + if (std::error_code EC = ErrorOrChild.getError()) { + reportError(Arc->getFileName(), EC.message()); + break; + } + const Archive::Child &ArcC = *ErrorOrChild; ErrorOr<std::unique_ptr<Binary>> ChildOrErr = ArcC.getAsBinary(); if (std::error_code EC = ChildOrErr.getError()) { // Ignore non-object files. |