diff options
author | Kevin Enderby <enderby@apple.com> | 2016-06-29 20:36:11 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2016-06-29 20:36:11 +0000 |
commit | 9729e99db09aa9e38a8b91456350d9da8334be5e (patch) | |
tree | d8498d5985c66a8e68e80b78ec79c1ca46711e53 | |
parent | 686cb9d1dc622d7f4fb3134e3a57654d3bb5fc5a (diff) |
Matching change for lld for the llvm change of Archive::create() from ErrorOr<...> to Expected<...> in r274160.
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@274161 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | COFF/DriverUtils.cpp | 6 | ||||
-rw-r--r-- | COFF/InputFiles.cpp | 3 | ||||
-rw-r--r-- | ELF/Error.h | 7 | ||||
-rw-r--r-- | lib/ReaderWriter/FileArchive.cpp | 7 |
4 files changed, 16 insertions, 7 deletions
diff --git a/COFF/DriverUtils.cpp b/COFF/DriverUtils.cpp index ff8729df1..13ec6a80f 100644 --- a/COFF/DriverUtils.cpp +++ b/COFF/DriverUtils.cpp @@ -706,9 +706,9 @@ static std::string replace(StringRef S, StringRef From, StringRef To) { // import files to that file. void writeImportLibrary() { std::unique_ptr<MemoryBuffer> Buf = createEmptyImportLibrary(); - std::error_code EC; - object::Archive Archive(Buf->getMemBufferRef(), EC); - error(EC, "Error reading an empty import file"); + llvm::Error Err; + object::Archive Archive(Buf->getMemBufferRef(), Err); + error(errorToErrorCode(std::move(Err)), "Error reading an empty import file"); std::vector<NewArchiveIterator> Members = readMembers(Archive); std::string DLLName = llvm::sys::path::filename(Config->OutputFile); diff --git a/COFF/InputFiles.cpp b/COFF/InputFiles.cpp index 4a40382a6..7fd9b84ae 100644 --- a/COFF/InputFiles.cpp +++ b/COFF/InputFiles.cpp @@ -64,7 +64,8 @@ std::string InputFile::getShortName() { void ArchiveFile::parse() { // Parse a MemoryBufferRef as an archive file. auto ArchiveOrErr = Archive::create(MB); - error(ArchiveOrErr, "Failed to parse static library"); + error(errorToErrorCode(ArchiveOrErr.takeError()), + "Failed to parse static library"); File = std::move(*ArchiveOrErr); // Allocate a buffer for Lazy objects. diff --git a/ELF/Error.h b/ELF/Error.h index 45d9113cb..f0faf1b79 100644 --- a/ELF/Error.h +++ b/ELF/Error.h @@ -52,6 +52,13 @@ template <class T> T check(ErrorOr<T> EO, const Twine &Prefix) { fatal(EO.getError().message(), Prefix); } +template <class T> T check(Expected<T> EO, const Twine &Prefix) { + if (EO) + return std::move(*EO); + error(errorToErrorCode(EO.takeError()), Prefix); + return T(); +} + } // namespace elf } // namespace lld diff --git a/lib/ReaderWriter/FileArchive.cpp b/lib/ReaderWriter/FileArchive.cpp index 33b953f18..4ba515b84 100644 --- a/lib/ReaderWriter/FileArchive.cpp +++ b/lib/ReaderWriter/FileArchive.cpp @@ -114,10 +114,11 @@ public: protected: std::error_code doParse() override { // Make Archive object which will be owned by FileArchive object. + llvm::Error Err; + _archive.reset(new Archive(_mb->getMemBufferRef(), Err)); + if (Err) + return errorToErrorCode(std::move(Err)); std::error_code ec; - _archive.reset(new Archive(_mb->getMemBufferRef(), ec)); - if (ec) - return ec; if ((ec = buildTableOfContents())) return ec; return std::error_code(); |