aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2016-06-29 20:36:11 +0000
committerKevin Enderby <enderby@apple.com>2016-06-29 20:36:11 +0000
commit9729e99db09aa9e38a8b91456350d9da8334be5e (patch)
treed8498d5985c66a8e68e80b78ec79c1ca46711e53
parent686cb9d1dc622d7f4fb3134e3a57654d3bb5fc5a (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.cpp6
-rw-r--r--COFF/InputFiles.cpp3
-rw-r--r--ELF/Error.h7
-rw-r--r--lib/ReaderWriter/FileArchive.cpp7
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();