diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-14 22:18:43 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-14 22:18:43 +0000 |
commit | 4b83cb5390c7c66a74bc39a9ec85d804695b14c3 (patch) | |
tree | c4cd019d82af12d73a38b475e76cb40a5056280e /llvm/tools/llvm-ar/llvm-ar.cpp | |
parent | 4154ad467b177729ffbbc90ab0799cfc08b9b04d (diff) | |
download | bcm5719-llvm-4b83cb5390c7c66a74bc39a9ec85d804695b14c3.tar.gz bcm5719-llvm-4b83cb5390c7c66a74bc39a9ec85d804695b14c3.zip |
Add support for reading members out of thin archives.
For now the Archive owns the buffers of the thin archive members.
This makes for a simple API, but all the buffers are destructed
only when the archive is destructed. This should be fine since we
close the files after mmap so we should not hit an open file
limit.
llvm-svn: 242215
Diffstat (limited to 'llvm/tools/llvm-ar/llvm-ar.cpp')
-rw-r--r-- | llvm/tools/llvm-ar/llvm-ar.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp index c87606d7826..2c9668c63b8 100644 --- a/llvm/tools/llvm-ar/llvm-ar.cpp +++ b/llvm/tools/llvm-ar/llvm-ar.cpp @@ -299,7 +299,9 @@ static void doPrint(StringRef Name, const object::Archive::Child &C) { if (Verbose) outs() << "Printing " << Name << "\n"; - StringRef Data = C.getBuffer(); + ErrorOr<StringRef> DataOrErr = C.getBuffer(); + failIfError(DataOrErr.getError()); + StringRef Data = *DataOrErr; outs().write(Data.data(), Data.size()); } @@ -355,7 +357,7 @@ static void doExtract(StringRef Name, const object::Archive::Child &C) { raw_fd_ostream file(FD, false); // Get the data and its length - StringRef Data = C.getBuffer(); + StringRef Data = *C.getBuffer(); // Write the data. file.write(Data.data(), Data.size()); |