summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-rc/ResourceFileWriter.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2017-10-06 23:21:43 +0000
committerZachary Turner <zturner@google.com>2017-10-06 23:21:43 +0000
commitb12792a4c0a31bec7977d6297ca89922400d42e2 (patch)
tree909446df510876bc252b1802d83ef443ee46b1f8 /llvm/tools/llvm-rc/ResourceFileWriter.cpp
parentae2e3a44d29f1f03faf730fffe8de386eaa0ade1 (diff)
downloadbcm5719-llvm-b12792a4c0a31bec7977d6297ca89922400d42e2.tar.gz
bcm5719-llvm-b12792a4c0a31bec7977d6297ca89922400d42e2.zip
[llvm-rc] Fix some endianness errors.
llvm-svn: 315128
Diffstat (limited to 'llvm/tools/llvm-rc/ResourceFileWriter.cpp')
-rw-r--r--llvm/tools/llvm-rc/ResourceFileWriter.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/llvm/tools/llvm-rc/ResourceFileWriter.cpp b/llvm/tools/llvm-rc/ResourceFileWriter.cpp
index 8b234ae96d6..8b7cd92c053 100644
--- a/llvm/tools/llvm-rc/ResourceFileWriter.cpp
+++ b/llvm/tools/llvm-rc/ResourceFileWriter.cpp
@@ -166,7 +166,9 @@ static Error processString(StringRef Str, NullHandlingMethod NullHandler,
}
}
- Result.push_back(Char);
+ // Make sure to write little-endian strings, regardless of the host
+ // byte-order.
+ Result.push_back(endian::byte_swap(Char, little));
return Error::success();
};
@@ -347,9 +349,9 @@ Error ResourceFileWriter::writeIntOrString(const IntOrString &Value) {
void ResourceFileWriter::writeRCInt(RCInt Value) {
if (Value.isLong())
- writeObject((uint32_t)Value);
+ writeInt<uint32_t>(Value);
else
- writeObject((uint16_t)Value);
+ writeInt<uint16_t>(Value);
}
Error ResourceFileWriter::appendFile(StringRef Filename) {
@@ -776,7 +778,7 @@ Error ResourceFileWriter::writeIconOrCursorGroupBody(const RCResource *Base) {
writeObject(Res->Header);
for (auto Item : Res->ItemEntries) {
writeObject(Item);
- writeObject(ulittle16_t(IconCursorID++));
+ writeInt(IconCursorID++);
}
return Error::success();
}
@@ -1179,9 +1181,9 @@ Error ResourceFileWriter::writeStringTableBundleBody(const RCResource *Base) {
Data.push_back('\0');
RETURN_IF_ERROR(
checkNumberFits<uint16_t>(Data.size(), "STRINGTABLE string size"));
- writeObject(ulittle16_t(Data.size()));
+ writeInt<uint16_t>(Data.size());
for (auto Char : Data)
- writeObject(ulittle16_t(Char));
+ writeInt(Char);
}
return Error::success();
}
@@ -1227,13 +1229,13 @@ Error ResourceFileWriter::writeUserDefinedBody(const RCResource *Base) {
for (auto Ch : ProcessedString) {
if (IsLongString) {
- writeObject(ulittle16_t(Ch));
+ writeInt(Ch);
continue;
}
RETURN_IF_ERROR(checkNumberFits<uint8_t>(
Ch, "Character in narrow string in user-defined resoutce"));
- writeObject(uint8_t(Ch));
+ writeInt<uint8_t>(Ch);
}
}
@@ -1369,9 +1371,9 @@ Error ResourceFileWriter::writeVersionInfoBody(const RCResource *Base) {
} FixedInfo;
// First, VS_VERSIONINFO.
- auto LengthLoc = writeObject<uint16_t>(0);
- writeObject(ulittle16_t(sizeof(FixedInfo)));
- writeObject(ulittle16_t(0));
+ auto LengthLoc = writeInt<uint16_t>(0);
+ writeInt<uint16_t>(sizeof(FixedInfo));
+ writeInt<uint16_t>(0);
cantFail(writeCString("VS_VERSION_INFO"));
padStream(sizeof(uint32_t));
OpenPOWER on IntegriCloud