[llvm] [Object] Fix offload bundle decompression on big endian (PR #205822)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 25 07:18:04 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-binary-utilities
Author: Nikita Popov (nikic)
<details>
<summary>Changes</summary>
tools/llvm-objdump/Offloading/fatbin-coff-compress.test was crashing on s390x because the header fields read from the object were misinterpreted as big-endian. Fix this by using ulittleN_t types.
---
Full diff: https://github.com/llvm/llvm-project/pull/205822.diff
1 Files Affected:
- (modified) llvm/lib/Object/OffloadBundle.cpp (+12-12)
``````````diff
diff --git a/llvm/lib/Object/OffloadBundle.cpp b/llvm/lib/Object/OffloadBundle.cpp
index 93fb2ab1affc7..edd017b99331a 100644
--- a/llvm/lib/Object/OffloadBundle.cpp
+++ b/llvm/lib/Object/OffloadBundle.cpp
@@ -432,29 +432,29 @@ CompressedOffloadBundle::compress(compression::Params P,
LLVM_PACKED_START
union RawCompressedBundleHeader {
struct CommonFields {
- uint32_t Magic;
- uint16_t Version;
- uint16_t Method;
+ support::ulittle32_t Magic;
+ support::ulittle16_t Version;
+ support::ulittle16_t Method;
};
struct V1Header {
CommonFields Common;
- uint32_t UncompressedFileSize;
- uint64_t Hash;
+ support::ulittle32_t UncompressedFileSize;
+ support::ulittle64_t Hash;
};
struct V2Header {
CommonFields Common;
- uint32_t FileSize;
- uint32_t UncompressedFileSize;
- uint64_t Hash;
+ support::ulittle32_t FileSize;
+ support::ulittle32_t UncompressedFileSize;
+ support::ulittle64_t Hash;
};
struct V3Header {
CommonFields Common;
- uint64_t FileSize;
- uint64_t UncompressedFileSize;
- uint64_t Hash;
+ support::ulittle64_t FileSize;
+ support::ulittle64_t UncompressedFileSize;
+ support::ulittle64_t Hash;
};
CommonFields Common;
@@ -518,7 +518,7 @@ CompressedOffloadBundle::CompressedBundleHeader::tryParse(StringRef Blob) {
case static_cast<uint16_t>(compression::Format::Zlib):
case static_cast<uint16_t>(compression::Format::Zstd):
Normalized.CompressionFormat =
- static_cast<compression::Format>(Header.Common.Method);
+ static_cast<compression::Format>(Header.Common.Method.value());
break;
default:
return createStringError("unknown compressing method");
``````````
</details>
https://github.com/llvm/llvm-project/pull/205822
More information about the llvm-commits
mailing list