aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ArchiveWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2017-09-21 23:13:36 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2017-09-21 23:13:36 +0000
commit25cbdf25a667999485d79735f1a9ea61faf79eee (patch)
tree1bd920b92779d9706db8679815f730863eb83f11 /llvm/lib/Object/ArchiveWriter.cpp
parent3306fff625738ce2946770f411dd8341d9a182d6 (diff)
downloadllvm-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.cpp26
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();
}