From 1fca78a9b1d78ac2e05174e8b8b0eda5fe4ab8b3 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 15 Jan 2014 19:37:43 +0000 Subject: Return an ErrorOr from createBinary. I did write a version returning ErrorOr >, but it is too cumbersome to use without std::move. I will keep the patch locally and submit when we switch to c++11. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199326 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-symbolizer/LLVMSymbolize.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'tools/llvm-symbolizer') diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp index 751453c27f..c522c0d3de 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.cpp +++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -301,9 +301,9 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) { return I->second; Binary *Bin = 0; Binary *DbgBin = 0; - OwningPtr ParsedBinary; - OwningPtr ParsedDbgBinary; - if (!error(createBinary(Path, ParsedBinary))) { + ErrorOr BinaryOrErr = createBinary(Path); + if (!error(BinaryOrErr.getError())) { + OwningPtr ParsedBinary(BinaryOrErr.get()); // Check if it's a universal binary. Bin = ParsedBinary.take(); ParsedBinariesAndObjects.push_back(Bin); @@ -312,9 +312,10 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) { // resource directory. const std::string &ResourcePath = getDarwinDWARFResourceForPath(Path); - error_code EC = createBinary(ResourcePath, ParsedDbgBinary); + BinaryOrErr = createBinary(ResourcePath); + error_code EC = BinaryOrErr.getError(); if (EC != errc::no_such_file_or_directory && !error(EC)) { - DbgBin = ParsedDbgBinary.take(); + DbgBin = BinaryOrErr.get(); ParsedBinariesAndObjects.push_back(DbgBin); } } @@ -324,10 +325,12 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) { uint32_t CRCHash; std::string DebugBinaryPath; if (getGNUDebuglinkContents(Bin, DebuglinkName, CRCHash) && - findDebugBinary(Path, DebuglinkName, CRCHash, DebugBinaryPath) && - !error(createBinary(DebugBinaryPath, ParsedDbgBinary))) { - DbgBin = ParsedDbgBinary.take(); - ParsedBinariesAndObjects.push_back(DbgBin); + findDebugBinary(Path, DebuglinkName, CRCHash, DebugBinaryPath)) { + BinaryOrErr = createBinary(DebugBinaryPath); + if (!error(BinaryOrErr.getError())) { + DbgBin = BinaryOrErr.get(); + ParsedBinariesAndObjects.push_back(DbgBin); + } } } } -- cgit v1.2.3