summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-07-09 15:13:41 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-07-09 15:13:41 +0000
commitb870e9ca935fa7d2c8b405ee6a6e15eee47405fd (patch)
treeb236de44b3f5c3a0a7fbcfcd2c094589c23dfdf8
parenteaabc51e786b049b1c5172332e38958af0d7c72a (diff)
downloadbcm5719-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.cpp16
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();
OpenPOWER on IntegriCloud