summaryrefslogtreecommitdiff
path: root/tools/llvm-nm
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-16 16:08:36 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-16 16:08:36 +0000
commit0659928fec02d5a953e528739cc036f7a68deb63 (patch)
treea1bfb3747233ad5bc9a52fc7321565997855a4ea /tools/llvm-nm
parentd492c19894f41ca20d451e3e7ae5a7340728882b (diff)
downloadllvm-0659928fec02d5a953e528739cc036f7a68deb63.tar.gz
llvm-0659928fec02d5a953e528739cc036f7a68deb63.tar.bz2
llvm-0659928fec02d5a953e528739cc036f7a68deb63.tar.xz
Convert the Archive API to use ErrorOr.
Now that we have c++11, even things like ErrorOr<std::unique_ptr<...>> are easy to use. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211033 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-nm')
-rw-r--r--tools/llvm-nm/llvm-nm.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp
index 19d9888e8a..e605e6e430 100644
--- a/tools/llvm-nm/llvm-nm.cpp
+++ b/tools/llvm-nm/llvm-nm.cpp
@@ -733,16 +733,14 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
if (I != E) {
outs() << "Archive map\n";
for (; I != E; ++I) {
- Archive::child_iterator C;
- StringRef SymName;
- StringRef FileName;
- if (error(I->getMember(C)))
+ ErrorOr<Archive::child_iterator> C = I->getMember();
+ if (error(C.getError()))
return;
- if (error(I->getName(SymName)))
+ ErrorOr<StringRef> FileNameOrErr = C.get()->getName();
+ if (error(FileNameOrErr.getError()))
return;
- if (error(C->getName(FileName)))
- return;
- outs() << SymName << " in " << FileName << "\n";
+ StringRef SymName = I->getName();
+ outs() << SymName << " in " << FileNameOrErr.get() << "\n";
}
outs() << "\n";
}
@@ -750,10 +748,10 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
for (Archive::child_iterator I = A->child_begin(), E = A->child_end();
I != E; ++I) {
- std::unique_ptr<Binary> Child;
- if (I->getAsBinary(Child, &Context))
+ ErrorOr<std::unique_ptr<Binary>> ChildOrErr = I->getAsBinary(&Context);
+ if (ChildOrErr.getError())
continue;
- if (SymbolicFile *O = dyn_cast<SymbolicFile>(Child.get())) {
+ if (SymbolicFile *O = dyn_cast<SymbolicFile>(&*ChildOrErr.get())) {
outs() << O->getFileName() << ":\n";
dumpSymbolNamesFromObject(O);
}
@@ -773,10 +771,11 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
else if (!I->getAsArchive(A)) {
for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end();
AI != AE; ++AI) {
- std::unique_ptr<Binary> Child;
- if (AI->getAsBinary(Child, &Context))
+ ErrorOr<std::unique_ptr<Binary>> ChildOrErr =
+ AI->getAsBinary(&Context);
+ if (ChildOrErr.getError())
continue;
- if (SymbolicFile *O = dyn_cast<SymbolicFile>(Child.get())) {
+ if (SymbolicFile *O = dyn_cast<SymbolicFile>(&*ChildOrErr.get())) {
outs() << A->getFileName() << ":";
outs() << O->getFileName() << ":\n";
dumpSymbolNamesFromObject(O);