| author | |
| committer | |
| log | 6a8228603c924f8e091c52b98f8043e02843c358 |
| tree | c5147dcbdd0e3c4103075924ba6ea70daac3c665 |
| parent | 715984340b247a27469a3e789843aed3220dd748 |
| signature |
Before:
❯ zig cc main.c -target x86_64-linux-musl && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -static && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -dynamic && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
After:
❯ zig cc main.c -target x86_64-linux-musl && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -static && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -dynamic && musl-ldd ./a.out
/lib/ld-musl-x86_64.so.1 (0x72c10019e000)
libc.so => /lib/ld-musl-x86_64.so.1 (0x72c10019e000)
Closes #11909.3 files changed, 29 insertions(+), 2 deletions(-)
src/clang_options_data.zig+9-2| ... | @@ -2610,7 +2610,14 @@ flagpd1("dwarf-ext-refs"), | ... | @@ -2610,7 +2610,14 @@ flagpd1("dwarf-ext-refs"), |
| 2610 | }, | 2610 | }, |
| 2611 | sepd1("dylib_file"), | 2611 | sepd1("dylib_file"), |
| 2612 | flagpd1("dylinker"), | 2612 | flagpd1("dylinker"), |
| 2613 | flagpd1("dynamic"), | 2613 | .{ |
| 2614 | .name = "dynamic", | ||
| 2615 | .syntax = .flag, | ||
| 2616 | .zig_equivalent = .dynamic, | ||
| 2617 | .pd1 = true, | ||
| 2618 | .pd2 = false, | ||
| 2619 | .psl = false, | ||
| 2620 | }, | ||
| 2614 | .{ | 2621 | .{ |
| 2615 | .name = "dynamiclib", | 2622 | .name = "dynamiclib", |
| 2616 | .syntax = .flag, | 2623 | .syntax = .flag, |
| ... | @@ -5698,7 +5705,7 @@ flagpd1("startfiles"), | ... | @@ -5698,7 +5705,7 @@ flagpd1("startfiles"), |
| 5698 | .{ | 5705 | .{ |
| 5699 | .name = "static", | 5706 | .name = "static", |
| 5700 | .syntax = .flag, | 5707 | .syntax = .flag, |
| 5701 | .zig_equivalent = .other, | 5708 | .zig_equivalent = .static, |
| 5702 | .pd1 = true, | 5709 | .pd1 = true, |
| 5703 | .pd2 = true, | 5710 | .pd2 = true, |
| 5704 | .psl = false, | 5711 | .psl = false, |
src/main.zig+12| ... | @@ -2338,6 +2338,16 @@ fn buildOutputType( | ... | @@ -2338,6 +2338,16 @@ fn buildOutputType( |
| 2338 | fatal("unsupported -rtlib option '{s}'", .{it.only_arg}); | 2338 | fatal("unsupported -rtlib option '{s}'", .{it.only_arg}); |
| 2339 | } | 2339 | } |
| 2340 | }, | 2340 | }, |
| 2341 | .static => { | ||
| 2342 | create_module.opts.link_mode = .static; | ||
| 2343 | lib_preferred_mode = .static; | ||
| 2344 | lib_search_strategy = .no_fallback; | ||
| 2345 | }, | ||
| 2346 | .dynamic => { | ||
| 2347 | create_module.opts.link_mode = .dynamic; | ||
| 2348 | lib_preferred_mode = .dynamic; | ||
| 2349 | lib_search_strategy = .mode_first; | ||
| 2350 | }, | ||
| 2341 | } | 2351 | } |
| 2342 | } | 2352 | } |
| 2343 | // Parse linker args. | 2353 | // Parse linker args. |
| ... | @@ -5954,6 +5964,8 @@ pub const ClangArgIterator = struct { | ... | @@ -5954,6 +5964,8 @@ pub const ClangArgIterator = struct { |
| 5954 | san_cov, | 5964 | san_cov, |
| 5955 | no_san_cov, | 5965 | no_san_cov, |
| 5956 | rtlib, | 5966 | rtlib, |
| 5967 | static, | ||
| 5968 | dynamic, | ||
| 5957 | }; | 5969 | }; |
| 5958 | 5970 | ||
| 5959 | const Args = struct { | 5971 | const Args = struct { |
tools/update_clang_options.zig+8| ... | @@ -572,6 +572,14 @@ const known_options = [_]KnownOpt{ | ... | @@ -572,6 +572,14 @@ const known_options = [_]KnownOpt{ |
| 572 | .name = "rtlib=", | 572 | .name = "rtlib=", |
| 573 | .ident = "rtlib", | 573 | .ident = "rtlib", |
| 574 | }, | 574 | }, |
| 575 | .{ | ||
| 576 | .name = "static", | ||
| 577 | .ident = "static", | ||
| 578 | }, | ||
| 579 | .{ | ||
| 580 | .name = "dynamic", | ||
| 581 | .ident = "dynamic", | ||
| 582 | }, | ||
| 575 | }; | 583 | }; |
| 576 | 584 | ||
| 577 | const blacklisted_options = [_][]const u8{}; | 585 | const blacklisted_options = [_][]const u8{}; |