[llvm] r317724 - Make sure an error is always handled.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 8 13:15:21 PST 2017


Author: rafael
Date: Wed Nov  8 13:15:21 2017
New Revision: 317724

URL: http://llvm.org/viewvc/llvm-project?rev=317724&view=rev
Log:
Make sure an error is always handled.

Added:
    llvm/trunk/test/tools/llvm-objcopy/fail-no-output-directory.test
Modified:
    llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp

Added: llvm/trunk/test/tools/llvm-objcopy/fail-no-output-directory.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objcopy/fail-no-output-directory.test?rev=317724&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objcopy/fail-no-output-directory.test (added)
+++ llvm/trunk/test/tools/llvm-objcopy/fail-no-output-directory.test Wed Nov  8 13:15:21 2017
@@ -0,0 +1,11 @@
+# RUN: yaml2obj %s > %t
+# RUN: not llvm-objcopy %t no/such/dir 2>&1 | FileCheck %s
+# CHECK: failed to open no/such/dir
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+

Modified: llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp?rev=317724&r1=317723&r2=317724&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp (original)
+++ llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp Wed Nov  8 13:15:21 2017
@@ -116,10 +116,11 @@ void WriteObjectFile(const Object<ELFT>
   Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
       FileOutputBuffer::create(File, Obj.totalSize(),
                                FileOutputBuffer::F_executable);
-  if (BufferOrErr.takeError())
+  handleAllErrors(BufferOrErr.takeError(), [](const ErrorInfoBase &) {
     error("failed to open " + OutputFilename);
-  else
-    Buffer = std::move(*BufferOrErr);
+  });
+  Buffer = std::move(*BufferOrErr);
+
   Obj.write(*Buffer);
   if (auto E = Buffer->commit())
     reportError(File, errorToErrorCode(std::move(E)));




More information about the llvm-commits mailing list