[clang] [llvm] [Offloading] Extend OffloadBinary format to support multiple metadata entries (PR #169425)
Joseph Huber via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 5 08:10:08 PST 2025
================
@@ -182,19 +198,31 @@ OffloadBinary::create(MemoryBufferRef Buf) {
const char *Start = Buf.getBufferStart();
const Header *TheHeader = reinterpret_cast<const Header *>(Start);
- if (TheHeader->Version != OffloadBinary::Version)
+ if (TheHeader->Version == 0 || TheHeader->Version > OffloadBinary::Version)
return errorCodeToError(object_error::parse_failed);
if (TheHeader->Size > Buf.getBufferSize() ||
TheHeader->Size < sizeof(Entry) || TheHeader->Size < sizeof(Header))
return errorCodeToError(object_error::unexpected_eof);
- if (TheHeader->EntryOffset > TheHeader->Size - sizeof(Entry) ||
- TheHeader->EntrySize > TheHeader->Size - sizeof(Header))
+ uint64_t EntriesSize = sizeof(Entry) * TheHeader->EntriesCount;
+ if (TheHeader->EntriesOffset > TheHeader->Size - EntriesSize ||
+ EntriesSize > TheHeader->Size - sizeof(Header))
return errorCodeToError(object_error::unexpected_eof);
+ return TheHeader;
+}
+
+Expected<std::unique_ptr<OffloadBinary>>
+OffloadBinary::createV1(MemoryBufferRef Buf) {
----------------
jhuber6 wrote:
At least in my head we don't need a v1 / v2 and should really not modify the interface if possible as there are users of it in the AMD fork.
https://github.com/llvm/llvm-project/pull/169425
More information about the llvm-commits
mailing list