authorgravatar for leon@makase.roLeon Lombar <leon@makase.ro> 2026-03-16 13:46:18+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-16 22:57:02+01:00
logbadd252036a0b395ccd36b973c7051b7c72b331e
treef4b2b5305bb682bc094ccfe4ad6ba44e9349e4c9
parent125c1f3dd9c7221e52ad5c54a2ce4bdb870d3391

link(ELF): add ZSTD decompression support for compressed sections


1 files changed, 10 insertions(+), 0 deletions(-)

src/link/Elf/Object.zig+10
......@@ -1246,6 +1246,16 @@ pub fn codeDecompressAlloc(self: *Object, elf_file: *Elf, atom_index: Atom.Index
12461246 _ = try zlib_stream.reader.streamRemaining(&aw.writer);
12471247 return aw.toOwnedSlice();
12481248 },
1249 .ZSTD => {
1250 var input: std.Io.Reader = .fixed(data[@sizeOf(elf.Elf64_Chdr)..]);
1251 var stream: std.compress.zstd.Decompress = .init(&input, &.{}, .{});
1252 const size = std.math.cast(usize, chdr.ch_size) orelse return error.Overflow;
1253 var aw: std.Io.Writer.Allocating = try .initCapacity(gpa, size);
1254 defer aw.deinit();
1255 _ = try stream.reader.streamRemaining(&aw.writer);
1256
1257 return aw.toOwnedSlice();
1258 },
12491259 else => @panic("TODO unhandled compression scheme"),
12501260 }
12511261 }