diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-09 15:13:41 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-09 15:13:41 +0000 |
commit | b870e9ca935fa7d2c8b405ee6a6e15eee47405fd (patch) | |
tree | b236de44b3f5c3a0a7fbcfcd2c094589c23dfdf8 | |
parent | eaabc51e786b049b1c5172332e38958af0d7c72a (diff) | |
download | bcm5719-llvm-b870e9ca935fa7d2c8b405ee6a6e15eee47405fd.tar.gz bcm5719-llvm-b870e9ca935fa7d2c8b405ee6a6e15eee47405fd.zip |
Add a helper to printing BE of LE depending on the format.
The gnu ar format uses BE numbers. The BSD one uses LE. Add a helper for one or the
other. NFC for now, just removes some noise from the following patch.
llvm-svn: 241808
-rw-r--r-- | llvm/lib/Object/ArchiveWriter.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/lib/Object/ArchiveWriter.cpp b/llvm/lib/Object/ArchiveWriter.cpp index 84dc3d6309c..78fada64b64 100644 --- a/llvm/lib/Object/ArchiveWriter.cpp +++ b/llvm/lib/Object/ArchiveWriter.cpp @@ -91,8 +91,12 @@ static void printWithSpacePadding(raw_fd_ostream &OS, T Data, unsigned Size, } } -static void print32BE(raw_ostream &Out, uint32_t Val) { - support::endian::Writer<support::big>(Out).write(Val); +static void print32(raw_ostream &Out, object::Archive::Kind Kind, + uint32_t Val) { + if (Kind == object::Archive::K_GNU) + support::endian::Writer<support::big>(Out).write(Val); + else + support::endian::Writer<support::little>(Out).write(Val); } static void printRestOfMemberHeader(raw_fd_ostream &Out, @@ -200,7 +204,7 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, if (!StartOffset) { printGNUSmallMemberHeader(Out, "", sys::TimeValue::now(), 0, 0, 0, 0); StartOffset = Out.tell(); - print32BE(Out, 0); + print32(Out, Kind, 0); } for (const object::BasicSymbolRef &S : Obj.symbols()) { @@ -216,7 +220,7 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, NameOS << '\0'; ++NumSyms; MemberOffsetRefs.push_back(MemberNum); - print32BE(Out, 0); + print32(Out, Kind, 0); } } Out << NameOS.str(); @@ -231,7 +235,7 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, Out.seek(StartOffset - 12); printWithSpacePadding(Out, Pos - StartOffset, 10); Out.seek(StartOffset); - print32BE(Out, NumSyms); + print32(Out, Kind, NumSyms); Out.seek(Pos); return StartOffset + 4; } @@ -335,7 +339,7 @@ llvm::writeArchive(StringRef ArcName, if (MemberReferenceOffset) { Out.seek(MemberReferenceOffset); for (unsigned MemberNum : MemberOffsetRefs) - print32BE(Out, MemberOffset[MemberNum]); + print32(Out, Kind, MemberOffset[MemberNum]); } Output.keep(); |