diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-02-06 02:10:08 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-06 02:10:08 +0100 |
| commit | 1a1389c513119c344d2eafefd3b6353b2c6cd343 (patch) | |
| tree | 00217aa1874c039b6216559ade89496e2db2b5f1 /src | |
| parent | ff551374a03c3310bdcbf6f5efa62b670037c3b0 (diff) | |
| parent | e60072635eca3f3c983d92819aa67c0decc7d4a6 (diff) | |
| download | zig-1a1389c513119c344d2eafefd3b6353b2c6cd343.tar.gz zig-1a1389c513119c344d2eafefd3b6353b2c6cd343.zip | |
Merge pull request #19614 from jedisct1/wasi-libc-update
Update wasi-libc to d03829489904d38c624f6de9983190f1e5e7c9c5
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compilation.zig | 1 | ||||
| -rw-r--r-- | src/wasi_libc.zig | 32 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig index 14c216854e..22d2beccc6 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -806,6 +806,7 @@ pub const MiscTask = enum { @"wasi crt1-reactor.o", @"wasi crt1-command.o", @"wasi libc.a", + @"wasi libdl.a", @"libwasi-emulated-process-clocks.a", @"libwasi-emulated-getpid.a", @"libwasi-emulated-mman.a", diff --git a/src/wasi_libc.zig b/src/wasi_libc.zig index a44a187e8f..05ae41954a 100644 --- a/src/wasi_libc.zig +++ b/src/wasi_libc.zig @@ -10,6 +10,7 @@ pub const CrtFile = enum { crt1_reactor_o, crt1_command_o, libc_a, + libdl_a, libwasi_emulated_process_clocks_a, libwasi_emulated_getpid_a, libwasi_emulated_mman_a, @@ -17,6 +18,9 @@ pub const CrtFile = enum { }; pub fn getEmulatedLibCrtFile(lib_name: []const u8) ?CrtFile { + if (mem.eql(u8, lib_name, "dl")) { + return .libdl_a; + } if (mem.eql(u8, lib_name, "wasi-emulated-process-clocks")) { return .libwasi_emulated_process_clocks_a; } @@ -34,6 +38,7 @@ pub fn getEmulatedLibCrtFile(lib_name: []const u8) ?CrtFile { pub fn emulatedLibCRFileLibName(crt_file: CrtFile) []const u8 { return switch (crt_file) { + .libdl_a => "libdl.a", .libwasi_emulated_process_clocks_a => "libwasi-emulated-process-clocks.a", .libwasi_emulated_getpid_a => "libwasi-emulated-getpid.a", .libwasi_emulated_mman_a => "libwasi-emulated-mman.a", @@ -154,6 +159,25 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre try comp.build_crt_file("c", .Lib, .@"wasi libc.a", prog_node, libc_sources.items, .{}); }, + + .libdl_a => { + var args = std.ArrayList([]const u8).init(arena); + try addCCArgs(comp, arena, &args, .{ .want_O3 = true }); + try addLibcBottomHalfIncludes(comp, arena, &args); + + var emu_dl_sources = std.ArrayList(Compilation.CSourceFile).init(arena); + for (emulated_dl_src_files) |file_path| { + try emu_dl_sources.append(.{ + .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ + "libc", try sanitize(arena, file_path), + }), + .extra_flags = args.items, + .owner = undefined, + }); + } + try comp.build_crt_file("dl", .Lib, .@"wasi libdl.a", prog_node, emu_dl_sources.items, .{}); + }, + .libwasi_emulated_process_clocks_a => { var args = std.ArrayList([]const u8).init(arena); try addCCArgs(comp, arena, &args, .{ .want_O3 = true }); @@ -463,7 +487,6 @@ const libc_bottom_half_src_files = [_][]const u8{ "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c", "wasi/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c", "wasi/libc-bottom-half/cloudlibc/src/libc/time/time.c", - "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/close.c", "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c", "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fdatasync.c", "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fsync.c", @@ -490,7 +513,7 @@ const libc_bottom_half_src_files = [_][]const u8{ "wasi/libc-bottom-half/sources/__wasilibc_tell.c", "wasi/libc-bottom-half/sources/__wasilibc_unlinkat.c", "wasi/libc-bottom-half/sources/abort.c", - "wasi/libc-bottom-half/sources/accept.c", + "wasi/libc-bottom-half/sources/accept-wasip1.c", "wasi/libc-bottom-half/sources/at_fdcwd.c", "wasi/libc-bottom-half/sources/complex-builtins.c", "wasi/libc-bottom-half/sources/environ.c", @@ -521,6 +544,7 @@ const libc_top_half_src_files = [_][]const u8{ "wasi/libc-top-half/musl/src/misc/getopt.c", "wasi/libc-top-half/musl/src/misc/getopt_long.c", "wasi/libc-top-half/musl/src/misc/getsubopt.c", + "wasi/libc-top-half/musl/src/misc/realpath.c", "wasi/libc-top-half/musl/src/misc/uname.c", "wasi/libc-top-half/musl/src/misc/nftw.c", "wasi/libc-top-half/musl/src/errno/strerror.c", @@ -1173,6 +1197,10 @@ const libc_top_half_src_files = [_][]const u8{ const crt1_command_src_file = "wasi/libc-bottom-half/crt/crt1-command.c"; const crt1_reactor_src_file = "wasi/libc-bottom-half/crt/crt1-reactor.c"; +const emulated_dl_src_files = &[_][]const u8{ + "wasi/libc-top-half/musl/src/misc/dl.c", +}; + const emulated_process_clocks_src_files = &[_][]const u8{ "wasi/libc-bottom-half/clocks/clock.c", "wasi/libc-bottom-half/clocks/getrusage.c", |
