[llvm] 6784adc - Fix DXContainer test on ppcbe

Chris Bieneman via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 1 18:20:05 PDT 2022


Author: Chris Bieneman
Date: 2022-06-01T20:19:59-05:00
New Revision: 6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9

URL: https://github.com/llvm/llvm-project/commit/6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9
DIFF: https://github.com/llvm/llvm-project/commit/6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9.diff

LOG: Fix DXContainer test on ppcbe

Silly mistake, the code here was byteswapping in-place which corrupts
the data structure that is used later to write the correct file.

Added: 
    

Modified: 
    llvm/lib/ObjectYAML/DXContainerEmitter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
index 5400f070d637f..47290853848e7 100644
--- a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
+++ b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
@@ -96,11 +96,13 @@ void DXContainerWriter::writeHeader(raw_ostream &OS) {
   if (sys::IsBigEndianHost)
     Header.swapBytes();
   OS.write(reinterpret_cast<char *>(&Header), sizeof(Header));
-  for (auto &O : *ObjectFile.Header.PartOffsets)
-    if (sys::IsBigEndianHost)
+  SmallVector<uint32_t> Offsets(ObjectFile.Header.PartOffsets->begin(),
+                                ObjectFile.Header.PartOffsets->end());
+  if (sys::IsBigEndianHost)
+    for (auto &O : Offsets)
       sys::swapByteOrder(O);
-  OS.write(reinterpret_cast<char *>(ObjectFile.Header.PartOffsets->data()),
-           ObjectFile.Header.PartOffsets->size() * sizeof(uint32_t));
+  OS.write(reinterpret_cast<char *>(Offsets.data()),
+           Offsets.size() * sizeof(uint32_t));
 }
 void DXContainerWriter::writeParts(raw_ostream &OS) {
   uint32_t RollingOffset =


        


More information about the llvm-commits mailing list