authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-08 20:20:28+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-08 20:20:54+01:00
log1e095024a7974f323032f517aeff595e64963301
tree401fd8366ec9a20e3009433d84dae979e70e9d0c
parent92117d9bef9f21f0d4840748606717574fd4f44a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

compiler: Check for wasi-libc emulated libraries before libc libraries.

This will become useful when we update wasi-libc and get the emulated libdl.

1 files changed, 9 insertions(+), 6 deletions(-)

src/main.zig+9-6
...@@ -3824,6 +3824,14 @@ fn createModule(...@@ -3824,6 +3824,14 @@ fn createModule(
3824 for (create_module.cli_link_inputs.items) |cli_link_input| switch (cli_link_input) {3824 for (create_module.cli_link_inputs.items) |cli_link_input| switch (cli_link_input) {
3825 .name_query => |nq| {3825 .name_query => |nq| {
3826 const lib_name = nq.name;3826 const lib_name = nq.name;
3827
3828 if (target.os.tag == .wasi) {
3829 if (wasi_libc.getEmulatedLibCrtFile(lib_name)) |crt_file| {
3830 try create_module.wasi_emulated_libs.append(arena, crt_file);
3831 continue;
3832 }
3833 }
3834
3827 if (std.zig.target.isLibCLibName(target, lib_name)) {3835 if (std.zig.target.isLibCLibName(target, lib_name)) {
3828 create_module.opts.link_libc = true;3836 create_module.opts.link_libc = true;
3829 continue;3837 continue;
...@@ -3832,6 +3840,7 @@ fn createModule(...@@ -3832,6 +3840,7 @@ fn createModule(
3832 create_module.opts.link_libcpp = true;3840 create_module.opts.link_libcpp = true;
3833 continue;3841 continue;
3834 }3842 }
3843
3835 switch (target_util.classifyCompilerRtLibName(lib_name)) {3844 switch (target_util.classifyCompilerRtLibName(lib_name)) {
3836 .none => {},3845 .none => {},
3837 .only_libunwind, .both => {3846 .only_libunwind, .both => {
...@@ -3857,12 +3866,6 @@ fn createModule(...@@ -3857,12 +3866,6 @@ fn createModule(
3857 fatal("cannot use absolute path as a system library: {s}", .{lib_name});3866 fatal("cannot use absolute path as a system library: {s}", .{lib_name});
3858 }3867 }
38593868
3860 if (target.os.tag == .wasi) {
3861 if (wasi_libc.getEmulatedLibCrtFile(lib_name)) |crt_file| {
3862 try create_module.wasi_emulated_libs.append(arena, crt_file);
3863 continue;
3864 }
3865 }
3866 unresolved_link_inputs.appendAssumeCapacity(cli_link_input);3869 unresolved_link_inputs.appendAssumeCapacity(cli_link_input);
3867 any_name_queries_remaining = true;3870 any_name_queries_remaining = true;
3868 },3871 },