summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-01-15 19:37:43 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-01-15 19:37:43 +0000
commit1fca78a9b1d78ac2e05174e8b8b0eda5fe4ab8b3 (patch)
tree442cb69d47dec1c6c5ba601e847365ee625328a7 /tools
parent0893113a05af8b67799965685e96c11a59908a95 (diff)
downloadllvm-1fca78a9b1d78ac2e05174e8b8b0eda5fe4ab8b3.tar.gz
llvm-1fca78a9b1d78ac2e05174e8b8b0eda5fe4ab8b3.tar.bz2
llvm-1fca78a9b1d78ac2e05174e8b8b0eda5fe4ab8b3.tar.xz
Return an ErrorOr<Binary *> from createBinary.
I did write a version returning ErrorOr<OwningPtr<Binary> >, 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
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-nm/llvm-nm.cpp15
-rw-r--r--tools/llvm-objdump/llvm-objdump.cpp7
-rw-r--r--tools/llvm-readobj/llvm-readobj.cpp5
-rw-r--r--tools/llvm-size/llvm-size.cpp7
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.cpp21
-rw-r--r--tools/macho-dump/macho-dump.cpp5
6 files changed, 35 insertions, 25 deletions
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp
index 6822c9dbd4..b5f6321f8b 100644
--- a/tools/llvm-nm/llvm-nm.cpp
+++ b/tools/llvm-nm/llvm-nm.cpp
@@ -580,9 +580,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
delete Result;
}
} else if (magic == sys::fs::file_magic::archive) {
- OwningPtr<Binary> arch;
- if (error(object::createBinary(Buffer.take(), arch), Filename))
+ ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
+ if (error(BinaryOrErr.getError(), Filename))
return;
+ OwningPtr<Binary> arch(BinaryOrErr.get());
if (object::Archive *a = dyn_cast<object::Archive>(arch.get())) {
if (ArchiveMap) {
@@ -630,9 +631,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
}
}
} else if (magic == sys::fs::file_magic::macho_universal_binary) {
- OwningPtr<Binary> Bin;
- if (error(object::createBinary(Buffer.take(), Bin), Filename))
+ ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
+ if (error(BinaryOrErr.getError(), Filename))
return;
+ OwningPtr<Binary> Bin(BinaryOrErr.get());
object::MachOUniversalBinary *UB =
cast<object::MachOUniversalBinary>(Bin.get());
@@ -647,9 +649,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
}
}
} else if (magic.is_object()) {
- OwningPtr<Binary> obj;
- if (error(object::createBinary(Buffer.take(), obj), Filename))
+ ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
+ if (error(BinaryOrErr.getError(), Filename))
return;
+ OwningPtr<Binary> obj(BinaryOrErr.get());
if (object::ObjectFile *o = dyn_cast<ObjectFile>(obj.get()))
DumpSymbolNamesFromObject(o);
} else {
diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp
index 9bc092e188..ba21ab125f 100644
--- a/tools/llvm-objdump/llvm-objdump.cpp
+++ b/tools/llvm-objdump/llvm-objdump.cpp
@@ -833,11 +833,12 @@ static void DumpInput(StringRef file) {
}
// Attempt to open the binary.
- OwningPtr<Binary> binary;
- if (error_code ec = createBinary(file, binary)) {
- errs() << ToolName << ": '" << file << "': " << ec.message() << ".\n";
+ ErrorOr<Binary *> BinaryOrErr = createBinary(file);
+ if (error_code EC = BinaryOrErr.getError()) {
+ errs() << ToolName << ": '" << file << "': " << EC.message() << ".\n";
return;
}
+ OwningPtr<Binary> binary(BinaryOrErr.get());
if (Archive *a = dyn_cast<Archive>(binary.get()))
DumpArchive(a);
diff --git a/tools/llvm-readobj/llvm-readobj.cpp b/tools/llvm-readobj/llvm-readobj.cpp
index 2d9f3e50ce..916c658ddd 100644
--- a/tools/llvm-readobj/llvm-readobj.cpp
+++ b/tools/llvm-readobj/llvm-readobj.cpp
@@ -260,11 +260,12 @@ static void dumpInput(StringRef File) {
}
// Attempt to open the binary.
- OwningPtr<Binary> Binary;
- if (error_code EC = createBinary(File, Binary)) {
+ ErrorOr<Binary *> BinaryOrErr = createBinary(File);
+ if (error_code EC = BinaryOrErr.getError()) {
reportError(File, EC);
return;
}
+ OwningPtr<Binary> Binary(BinaryOrErr.get());
if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
dumpArchive(Arc);
diff --git a/tools/llvm-size/llvm-size.cpp b/tools/llvm-size/llvm-size.cpp
index 3de6605285..cb805c2633 100644
--- a/tools/llvm-size/llvm-size.cpp
+++ b/tools/llvm-size/llvm-size.cpp
@@ -244,11 +244,12 @@ static void PrintFileSectionSizes(StringRef file) {
}
// Attempt to open the binary.
- OwningPtr<Binary> binary;
- if (error_code ec = createBinary(file, binary)) {
- errs() << ToolName << ": " << file << ": " << ec.message() << ".\n";
+ ErrorOr<Binary *> BinaryOrErr = createBinary(file);
+ if (error_code EC = BinaryOrErr.getError()) {
+ errs() << ToolName << ": " << file << ": " << EC.message() << ".\n";
return;
}
+ OwningPtr<Binary> binary(BinaryOrErr.get());
if (Archive *a = dyn_cast<Archive>(binary.get())) {
// This is an archive. Iterate over each member and display its sizes.
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<Binary> ParsedBinary;
- OwningPtr<Binary> ParsedDbgBinary;
- if (!error(createBinary(Path, ParsedBinary))) {
+ ErrorOr<Binary *> BinaryOrErr = createBinary(Path);
+ if (!error(BinaryOrErr.getError())) {
+ OwningPtr<Binary> 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);
+ }
}
}
}
diff --git a/tools/macho-dump/macho-dump.cpp b/tools/macho-dump/macho-dump.cpp
index 0dfbd5fa09..4e7a0b875f 100644
--- a/tools/macho-dump/macho-dump.cpp
+++ b/tools/macho-dump/macho-dump.cpp
@@ -379,9 +379,10 @@ int main(int argc, char **argv) {
cl::ParseCommandLineOptions(argc, argv, "llvm Mach-O dumping tool\n");
- OwningPtr<Binary> Binary;
- if (error_code EC = createBinary(InputFile, Binary))
+ ErrorOr<Binary *> BinaryOrErr = createBinary(InputFile);
+ if (error_code EC = BinaryOrErr.getError())
return Error("unable to read input: '" + EC.message() + "'");
+ OwningPtr<Binary> Binary(BinaryOrErr.get());
const MachOObjectFile *InputObject = dyn_cast<MachOObjectFile>(Binary.get());
if (!InputObject)