| ... | @@ -539,6 +539,7 @@ const usage_build_generic = | ... | @@ -539,6 +539,7 @@ const usage_build_generic = |
| 539 | \\ --compress-debug-sections=[e] Debug section compression settings | 539 | \\ --compress-debug-sections=[e] Debug section compression settings |
| 540 | \\ none No compression | 540 | \\ none No compression |
| 541 | \\ zlib Compression with deflate/inflate | 541 | \\ zlib Compression with deflate/inflate |
| | 542 | \\ zstd Compression with zstandard |
| 542 | \\ --gc-sections Force removal of functions and data that are unreachable by the entry point or exported symbols | 543 | \\ --gc-sections Force removal of functions and data that are unreachable by the entry point or exported symbols |
| 543 | \\ --no-gc-sections Don't force removal of unreachable functions and data | 544 | \\ --no-gc-sections Don't force removal of unreachable functions and data |
| 544 | \\ --sort-section=[value] Sort wildcard section patterns by 'name' or 'alignment' | 545 | \\ --sort-section=[value] Sort wildcard section patterns by 'name' or 'alignment' |
| ... | @@ -1110,7 +1111,7 @@ fn buildOutputType( | ... | @@ -1110,7 +1111,7 @@ fn buildOutputType( |
| 1110 | } else if (mem.startsWith(u8, arg, "--compress-debug-sections=")) { | 1111 | } else if (mem.startsWith(u8, arg, "--compress-debug-sections=")) { |
| 1111 | const param = arg["--compress-debug-sections=".len..]; | 1112 | const param = arg["--compress-debug-sections=".len..]; |
| 1112 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, param) orelse { | 1113 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, param) orelse { |
| 1113 | fatal("expected --compress-debug-sections=[none|zlib], found '{s}'", .{param}); | 1114 | fatal("expected --compress-debug-sections=[none|zlib|zstd], found '{s}'", .{param}); |
| 1114 | }; | 1115 | }; |
| 1115 | } else if (mem.eql(u8, arg, "--compress-debug-sections")) { | 1116 | } else if (mem.eql(u8, arg, "--compress-debug-sections")) { |
| 1116 | linker_compress_debug_sections = link.CompressDebugSections.zlib; | 1117 | linker_compress_debug_sections = link.CompressDebugSections.zlib; |
| ... | @@ -1986,7 +1987,7 @@ fn buildOutputType( | ... | @@ -1986,7 +1987,7 @@ fn buildOutputType( |
| 1986 | linker_compress_debug_sections = .zlib; | 1987 | linker_compress_debug_sections = .zlib; |
| 1987 | } else { | 1988 | } else { |
| 1988 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, it.only_arg) orelse { | 1989 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, it.only_arg) orelse { |
| 1989 | fatal("expected [none|zlib] after --compress-debug-sections, found '{s}'", .{it.only_arg}); | 1990 | fatal("expected [none|zlib|zstd] after --compress-debug-sections, found '{s}'", .{it.only_arg}); |
| 1990 | }; | 1991 | }; |
| 1991 | } | 1992 | } |
| 1992 | }, | 1993 | }, |
| ... | @@ -2139,7 +2140,7 @@ fn buildOutputType( | ... | @@ -2139,7 +2140,7 @@ fn buildOutputType( |
| 2139 | } else if (mem.eql(u8, arg, "--compress-debug-sections")) { | 2140 | } else if (mem.eql(u8, arg, "--compress-debug-sections")) { |
| 2140 | const arg1 = linker_args_it.nextOrFatal(); | 2141 | const arg1 = linker_args_it.nextOrFatal(); |
| 2141 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, arg1) orelse { | 2142 | linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, arg1) orelse { |
| 2142 | fatal("expected [none|zlib] after --compress-debug-sections, found '{s}'", .{arg1}); | 2143 | fatal("expected [none|zlib|zstd] after --compress-debug-sections, found '{s}'", .{arg1}); |
| 2143 | }; | 2144 | }; |
| 2144 | } else if (mem.startsWith(u8, arg, "-z")) { | 2145 | } else if (mem.startsWith(u8, arg, "-z")) { |
| 2145 | var z_arg = arg[2..]; | 2146 | var z_arg = arg[2..]; |