[llvm] r350848 - [llvm-objdump][MachO] Correctly handle the llvm::Error when -dsym has errors
Francis Visoiu Mistrih via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 10 09:16:37 PST 2019
Author: thegameg
Date: Thu Jan 10 09:16:37 2019
New Revision: 350848
URL: http://llvm.org/viewvc/llvm-project?rev=350848&view=rev
Log:
[llvm-objdump][MachO] Correctly handle the llvm::Error when -dsym has errors
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.
Modified:
llvm/trunk/test/tools/llvm-objdump/invalid-input.test
llvm/trunk/tools/llvm-objdump/MachODump.cpp
Modified: llvm/trunk/test/tools/llvm-objdump/invalid-input.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/invalid-input.test?rev=350848&r1=350847&r2=350848&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/invalid-input.test (original)
+++ llvm/trunk/test/tools/llvm-objdump/invalid-input.test Thu Jan 10 09:16:37 2019
@@ -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:
Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=350848&r1=350847&r2=350848&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu Jan 10 09:16:37 2019
@@ -6977,8 +6977,9 @@ static void DisassembleMachO(StringRef F
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());
More information about the llvm-commits
mailing list