[llvm] r313912 - [llvm-readobj] Fix big-endian byte swap in WindowsResourceDumper.

Marek Sokolowski via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 21 13:36:38 PDT 2017


Author: mnbvmar
Date: Thu Sep 21 13:36:38 2017
New Revision: 313912

URL: http://llvm.org/viewvc/llvm-project?rev=313912&view=rev
Log:
[llvm-readobj] Fix big-endian byte swap in WindowsResourceDumper.

The previous version of dumper implemented UTF-16 byte swap incorrectly
on big-endian machines. This now gets fixed.

Thanks to Bill Seurer for testing the patch locally.

Differential Review: https://reviews.llvm.org/D38150

Modified:
    llvm/trunk/tools/llvm-readobj/WindowsResourceDumper.cpp

Modified: llvm/trunk/tools/llvm-readobj/WindowsResourceDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/WindowsResourceDumper.cpp?rev=313912&r1=313911&r2=313912&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/WindowsResourceDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/WindowsResourceDumper.cpp Thu Sep 21 13:36:38 2017
@@ -29,7 +29,7 @@ std::string stripUTF16(const ArrayRef<UT
   for (UTF16 Ch : UTF16Str) {
     // UTF16Str will have swapped byte order in case of big-endian machines.
     // Swap it back in such a case.
-    support::ulittle16_t ChValue(Ch);
+    uint16_t ChValue = support::endian::byte_swap(Ch, support::little);
     if (ChValue <= 0xFF)
       Result += ChValue;
     else




More information about the llvm-commits mailing list