| ... | @@ -1246,6 +1246,16 @@ pub fn codeDecompressAlloc(self: *Object, elf_file: *Elf, atom_index: Atom.Index | ... | @@ -1246,6 +1246,16 @@ pub fn codeDecompressAlloc(self: *Object, elf_file: *Elf, atom_index: Atom.Index |
| 1246 | _ = try zlib_stream.reader.streamRemaining(&aw.writer); | 1246 | _ = try zlib_stream.reader.streamRemaining(&aw.writer); |
| 1247 | return aw.toOwnedSlice(); | 1247 | return aw.toOwnedSlice(); |
| 1248 | }, | 1248 | }, |
| | 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 | }, |
| 1249 | else => @panic("TODO unhandled compression scheme"), | 1259 | else => @panic("TODO unhandled compression scheme"), |
| 1250 | } | 1260 | } |
| 1251 | } | 1261 | } |