diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2017-09-21 23:13:36 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2017-09-21 23:13:36 +0000 |
commit | 25cbdf25a667999485d79735f1a9ea61faf79eee (patch) | |
tree | 1bd920b92779d9706db8679815f730863eb83f11 /llvm/lib/Object/ArchiveWriter.cpp | |
parent | 3306fff625738ce2946770f411dd8341d9a182d6 (diff) | |
download | llvm-25cbdf25a667999485d79735f1a9ea61faf79eee.zip llvm-25cbdf25a667999485d79735f1a9ea61faf79eee.tar.gz llvm-25cbdf25a667999485d79735f1a9ea61faf79eee.tar.bz2 |
Convert the archive writer to use Error.
This found one place in lld that was not checking the error.
llvm-svn: 313937
Diffstat (limited to 'llvm/lib/Object/ArchiveWriter.cpp')
-rw-r--r-- | llvm/lib/Object/ArchiveWriter.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/llvm/lib/Object/ArchiveWriter.cpp b/llvm/lib/Object/ArchiveWriter.cpp index 293dbe6..015c248 100644 --- a/llvm/lib/Object/ArchiveWriter.cpp +++ b/llvm/lib/Object/ArchiveWriter.cpp @@ -278,7 +278,7 @@ static sys::TimePoint<std::chrono::seconds> now(bool Deterministic) { } // Returns the offset of the first reference to a member offset. -static ErrorOr<unsigned> +static Expected<unsigned> writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, ArrayRef<NewArchiveMember> Members, std::vector<unsigned> &MemberOffsetRefs, bool Deterministic) { @@ -320,8 +320,8 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, continue; unsigned NameOffset = NameOS.tell(); - if (auto EC = S.printName(NameOS)) - return EC; + if (std::error_code EC = S.printName(NameOS)) + return errorCodeToError(EC); NameOS << '\0'; MemberOffsetRefs.push_back(MemberNum); if (isBSDLike(Kind)) @@ -373,17 +373,17 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, return BodyStartOffset + 4; } -std::error_code -llvm::writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers, - bool WriteSymtab, object::Archive::Kind Kind, - bool Deterministic, bool Thin, - std::unique_ptr<MemoryBuffer> OldArchiveBuf) { +Error llvm::writeArchive(StringRef ArcName, + ArrayRef<NewArchiveMember> NewMembers, + bool WriteSymtab, object::Archive::Kind Kind, + bool Deterministic, bool Thin, + std::unique_ptr<MemoryBuffer> OldArchiveBuf) { assert((!Thin || !isBSDLike(Kind)) && "Only the gnu format has a thin mode"); SmallString<128> TmpArchive; int TmpArchiveFD; if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a", TmpArchiveFD, TmpArchive)) - return EC; + return errorCodeToError(EC); tool_output_file Output(TmpArchive, TmpArchiveFD); raw_fd_ostream &Out = Output.os(); @@ -396,10 +396,10 @@ llvm::writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers, unsigned MemberReferenceOffset = 0; if (WriteSymtab) { - ErrorOr<unsigned> MemberReferenceOffsetOrErr = writeSymbolTable( + Expected<unsigned> MemberReferenceOffsetOrErr = writeSymbolTable( Out, Kind, NewMembers, MemberOffsetRefs, Deterministic); - if (auto EC = MemberReferenceOffsetOrErr.getError()) - return EC; + if (auto E = MemberReferenceOffsetOrErr.takeError()) + return E; MemberReferenceOffset = MemberReferenceOffsetOrErr.get(); } @@ -461,5 +461,5 @@ llvm::writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers, OldArchiveBuf.reset(); sys::fs::rename(TmpArchive, ArcName); - return std::error_code(); + return Error::success(); } |