summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-23 21:53:12 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-23 21:53:12 +0000
commit1f659329b63aa1d1af2b2bfc8b174a8ccdaba2c0 (patch)
treedc64a751796af7cd61a83b0cb8a8d8ca3145a95c /tools
parent7e7e89f17819d30703543375120dff52d5aaa414 (diff)
downloadllvm-1f659329b63aa1d1af2b2bfc8b174a8ccdaba2c0.tar.gz
llvm-1f659329b63aa1d1af2b2bfc8b174a8ccdaba2c0.tar.bz2
llvm-1f659329b63aa1d1af2b2bfc8b174a8ccdaba2c0.tar.xz
Make ObjectFile and BitcodeReader always own the MemoryBuffer.
This allows us to just use a std::unique_ptr to store the pointer to the buffer. The flip side is that they have to support releasing the buffer back to the caller. Overall this looks like a more efficient and less brittle api. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211542 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-ar/llvm-ar.cpp3
-rw-r--r--tools/llvm-nm/llvm-nm.cpp3
2 files changed, 4 insertions, 2 deletions
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index 2f0d7689b1..a58ab8bce0 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -699,7 +699,7 @@ writeSymbolTable(raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members,
MemoryBuffer *MemberBuffer = Buffers[MemberNum].get();
ErrorOr<object::SymbolicFile *> ObjOrErr =
object::SymbolicFile::createSymbolicFile(
- MemberBuffer, false, sys::fs::file_magic::unknown, &Context);
+ MemberBuffer, sys::fs::file_magic::unknown, &Context);
if (!ObjOrErr)
continue; // FIXME: check only for "not an object file" errors.
std::unique_ptr<object::SymbolicFile> Obj(ObjOrErr.get());
@@ -724,6 +724,7 @@ writeSymbolTable(raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members,
MemberOffsetRefs.push_back(std::make_pair(Out.tell(), MemberNum));
print32BE(Out, 0);
}
+ Obj->releaseBuffer();
}
Out << NameOS.str();
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp
index aeb7ba1072..fef3d5cbea 100644
--- a/tools/llvm-nm/llvm-nm.cpp
+++ b/tools/llvm-nm/llvm-nm.cpp
@@ -726,9 +726,10 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
return;
LLVMContext &Context = getGlobalContext();
- ErrorOr<Binary *> BinaryOrErr = createBinary(Buffer.release(), &Context);
+ ErrorOr<Binary *> BinaryOrErr = createBinary(Buffer.get(), &Context);
if (error(BinaryOrErr.getError(), Filename))
return;
+ Buffer.release();
std::unique_ptr<Binary> Bin(BinaryOrErr.get());
if (Archive *A = dyn_cast<Archive>(Bin.get())) {