authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2023-02-20 17:15:21+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-02-20 16:15:21+00:00
log5a7d80a5e7d0aaafc6ed3017e0e4342dcd476a51
tree59520b6ab55547d2c7fedf575ce948db13bbcb3d
parent99c11cc8cfb285b713284f7af0c7359508e0a660
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Linker: -z<arg> should be equivalent to -z <arg> (#14680)

lld accepts both syntaxes, but we were rejecting (and, before 3f7e9ff597a3514bb1c4f1900027c40682ac9f13, ignoring) the former. In particular, "cargo-zigbuild" was broken since Rust unconditionally adds "-znoexecstack" (not "-z noexecstack") on non-Windows platforms. Co-authored-by: Andrew Kelley <andrew@ziglang.org>

1 files changed, 8 insertions(+), 5 deletions(-)

src/main.zig+8-5
......@@ -1955,12 +1955,15 @@ fn buildOutputType(
19551955 linker_compress_debug_sections = std.meta.stringToEnum(link.CompressDebugSections, arg1) orelse {
19561956 fatal("expected [none|zlib] after --compress-debug-sections, found '{s}'", .{arg1});
19571957 };
1958 } else if (mem.eql(u8, arg, "-z")) {
1959 i += 1;
1960 if (i >= linker_args.items.len) {
1961 fatal("expected linker extension flag after '{s}'", .{arg});
1958 } else if (mem.startsWith(u8, arg, "-z")) {
1959 var z_arg = arg[2..];
1960 if (z_arg.len == 0) {
1961 i += 1;
1962 if (i >= linker_args.items.len) {
1963 fatal("expected linker extension flag after '{s}'", .{arg});
1964 }
1965 z_arg = linker_args.items[i];
19621966 }
1963 const z_arg = linker_args.items[i];
19641967 if (mem.eql(u8, z_arg, "nodelete")) {
19651968 linker_z_nodelete = true;
19661969 } else if (mem.eql(u8, z_arg, "notext")) {