From badd252036a0b395ccd36b973c7051b7c72b331e Mon Sep 17 00:00:00 2001 From: Leon Lombar Date: Mon, 16 Mar 2026 13:46:18 +0100 Subject: [PATCH] link(ELF): add ZSTD decompression support for compressed sections --- src/link/Elf/Object.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig index d17b0b7b17d4bd28db40bf57f561f02a19d4c988..291c9e996819d5c0816b14484c0158e28bdb4308 100644 --- a/src/link/Elf/Object.zig +++ b/src/link/Elf/Object.zig @@ -1246,6 +1246,16 @@ pub fn codeDecompressAlloc(self: *Object, elf_file: *Elf, atom_index: Atom.Index _ = try zlib_stream.reader.streamRemaining(&aw.writer); return aw.toOwnedSlice(); }, + .ZSTD => { + var input: std.Io.Reader = .fixed(data[@sizeOf(elf.Elf64_Chdr)..]); + var stream: std.compress.zstd.Decompress = .init(&input, &.{}, .{}); + const size = std.math.cast(usize, chdr.ch_size) orelse return error.Overflow; + var aw: std.Io.Writer.Allocating = try .initCapacity(gpa, size); + defer aw.deinit(); + _ = try stream.reader.streamRemaining(&aw.writer); + + return aw.toOwnedSlice(); + }, else => @panic("TODO unhandled compression scheme"), } } -- 2.54.0