]> granicus.if.org Git - llvm/commitdiff
[llvm-objdump][MachO] Correctly handle the llvm::Error when -dsym has errors
authorFrancis Visoiu Mistrih <francisvm@yahoo.com>
Thu, 10 Jan 2019 17:16:37 +0000 (17:16 +0000)
committerFrancis Visoiu Mistrih <francisvm@yahoo.com>
Thu, 10 Jan 2019 17:16:37 +0000 (17:16 +0000)
In an assert build, the Error gets destroyed and we get "Program aborted
due to an unhandled Error:".

In release, we get an empty message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350848 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-objdump/invalid-input.test
tools/llvm-objdump/MachODump.cpp

index 20a901d0b2ded09cfa6932b1131a8f605604539f..d9bf739975520647b1932f33e1f97fb5971fbe8c 100644 (file)
@@ -4,3 +4,6 @@ NO_SUCH_FILE: '{{.*}}missing-file':
 
 RUN: not llvm-objdump -t %s 2>&1 | FileCheck %s -check-prefix=UNKNOWN_FILE_TYPE
 UNKNOWN_FILE_TYPE: '{{.*}}invalid-input.test': The file was not recognized as a valid object file
+
+RUN: not llvm-objdump -macho -disassemble -g -dsym=%s %p/Inputs/bind.macho-x86_64 2>&1 | FileCheck %s -check-prefix=UNKNOWN_FILE_TYPE_DSYM
+UNKNOWN_FILE_TYPE_DSYM: {{.*}}llvm-objdump: error:
index 142ad8f63718cad08f85f1e4ab142061070b6460..4198ff07ecb6d6be64d7b8d8d6da963e22d3496b 100644 (file)
@@ -6977,8 +6977,9 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
       Expected<std::unique_ptr<MachOObjectFile>> DbgObjCheck =
           ObjectFile::createMachOObjectFile(BufOrErr.get()->getMemBufferRef());
 
-      if (DbgObjCheck.takeError())
-        report_error(MachOOF->getFileName(), DbgObjCheck.takeError());
+      if (Error E = DbgObjCheck.takeError())
+        report_error(MachOOF->getFileName(), std::move(E));
+
       DbgObj = DbgObjCheck.get().release();
       // We need to keep the file alive, because we're replacing DbgObj with it.
       DSYMBuf = std::move(BufOrErr.get());