Merge pull request #22808 from ziglang/fast-gpa
[zig.git] / src / wasi_libc.zig
blob05ae41954acd7b1a4269df80a99361a0d5b5b576
1 const std = @import("std");
2 const mem = std.mem;
3 const path = std.fs.path;
5 const Allocator = std.mem.Allocator;
6 const Compilation = @import("Compilation.zig");
7 const build_options = @import("build_options");
9 pub const CrtFile = enum {
10     crt1_reactor_o,
11     crt1_command_o,
12     libc_a,
13     libdl_a,
14     libwasi_emulated_process_clocks_a,
15     libwasi_emulated_getpid_a,
16     libwasi_emulated_mman_a,
17     libwasi_emulated_signal_a,
20 pub fn getEmulatedLibCrtFile(lib_name: []const u8) ?CrtFile {
21     if (mem.eql(u8, lib_name, "dl")) {
22         return .libdl_a;
23     }
24     if (mem.eql(u8, lib_name, "wasi-emulated-process-clocks")) {
25         return .libwasi_emulated_process_clocks_a;
26     }
27     if (mem.eql(u8, lib_name, "wasi-emulated-getpid")) {
28         return .libwasi_emulated_getpid_a;
29     }
30     if (mem.eql(u8, lib_name, "wasi-emulated-mman")) {
31         return .libwasi_emulated_mman_a;
32     }
33     if (mem.eql(u8, lib_name, "wasi-emulated-signal")) {
34         return .libwasi_emulated_signal_a;
35     }
36     return null;
39 pub fn emulatedLibCRFileLibName(crt_file: CrtFile) []const u8 {
40     return switch (crt_file) {
41         .libdl_a => "libdl.a",
42         .libwasi_emulated_process_clocks_a => "libwasi-emulated-process-clocks.a",
43         .libwasi_emulated_getpid_a => "libwasi-emulated-getpid.a",
44         .libwasi_emulated_mman_a => "libwasi-emulated-mman.a",
45         .libwasi_emulated_signal_a => "libwasi-emulated-signal.a",
46         else => unreachable,
47     };
50 pub fn execModelCrtFile(wasi_exec_model: std.builtin.WasiExecModel) CrtFile {
51     return switch (wasi_exec_model) {
52         .reactor => CrtFile.crt1_reactor_o,
53         .command => CrtFile.crt1_command_o,
54     };
57 pub fn execModelCrtFileFullName(wasi_exec_model: std.builtin.WasiExecModel) []const u8 {
58     return switch (execModelCrtFile(wasi_exec_model)) {
59         .crt1_reactor_o => "crt1-reactor.o",
60         .crt1_command_o => "crt1-command.o",
61         else => unreachable,
62     };
65 /// TODO replace anyerror with explicit error set, recording user-friendly errors with
66 /// setMiscFailure and returning error.SubCompilationFailed. see libcxx.zig for example.
67 pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progress.Node) anyerror!void {
68     if (!build_options.have_llvm) {
69         return error.ZigCompilerNotBuiltWithLLVMExtensions;
70     }
72     const gpa = comp.gpa;
73     var arena_allocator = std.heap.ArenaAllocator.init(gpa);
74     defer arena_allocator.deinit();
75     const arena = arena_allocator.allocator();
77     switch (crt_file) {
78         .crt1_reactor_o => {
79             var args = std.ArrayList([]const u8).init(arena);
80             try addCCArgs(comp, arena, &args, .{});
81             try addLibcBottomHalfIncludes(comp, arena, &args);
82             var files = [_]Compilation.CSourceFile{
83                 .{
84                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
85                         "libc", try sanitize(arena, crt1_reactor_src_file),
86                     }),
87                     .extra_flags = args.items,
88                     .owner = undefined,
89                 },
90             };
91             return comp.build_crt_file("crt1-reactor", .Obj, .@"wasi crt1-reactor.o", prog_node, &files, .{});
92         },
93         .crt1_command_o => {
94             var args = std.ArrayList([]const u8).init(arena);
95             try addCCArgs(comp, arena, &args, .{});
96             try addLibcBottomHalfIncludes(comp, arena, &args);
97             var files = [_]Compilation.CSourceFile{
98                 .{
99                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
100                         "libc", try sanitize(arena, crt1_command_src_file),
101                     }),
102                     .extra_flags = args.items,
103                     .owner = undefined,
104                 },
105             };
106             return comp.build_crt_file("crt1-command", .Obj, .@"wasi crt1-command.o", prog_node, &files, .{});
107         },
108         .libc_a => {
109             var libc_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
111             {
112                 // Compile emmalloc.
113                 var args = std.ArrayList([]const u8).init(arena);
114                 try addCCArgs(comp, arena, &args, .{ .want_O3 = true, .no_strict_aliasing = true });
115                 for (emmalloc_src_files) |file_path| {
116                     try libc_sources.append(.{
117                         .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
118                             "libc", try sanitize(arena, file_path),
119                         }),
120                         .extra_flags = args.items,
121                         .owner = undefined,
122                     });
123                 }
124             }
126             {
127                 // Compile libc-bottom-half.
128                 var args = std.ArrayList([]const u8).init(arena);
129                 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
130                 try addLibcBottomHalfIncludes(comp, arena, &args);
132                 for (libc_bottom_half_src_files) |file_path| {
133                     try libc_sources.append(.{
134                         .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
135                             "libc", try sanitize(arena, file_path),
136                         }),
137                         .extra_flags = args.items,
138                         .owner = undefined,
139                     });
140                 }
141             }
143             {
144                 // Compile libc-top-half.
145                 var args = std.ArrayList([]const u8).init(arena);
146                 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
147                 try addLibcTopHalfIncludes(comp, arena, &args);
149                 for (libc_top_half_src_files) |file_path| {
150                     try libc_sources.append(.{
151                         .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
152                             "libc", try sanitize(arena, file_path),
153                         }),
154                         .extra_flags = args.items,
155                         .owner = undefined,
156                     });
157                 }
158             }
160             try comp.build_crt_file("c", .Lib, .@"wasi libc.a", prog_node, libc_sources.items, .{});
161         },
163         .libdl_a => {
164             var args = std.ArrayList([]const u8).init(arena);
165             try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
166             try addLibcBottomHalfIncludes(comp, arena, &args);
168             var emu_dl_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
169             for (emulated_dl_src_files) |file_path| {
170                 try emu_dl_sources.append(.{
171                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
172                         "libc", try sanitize(arena, file_path),
173                     }),
174                     .extra_flags = args.items,
175                     .owner = undefined,
176                 });
177             }
178             try comp.build_crt_file("dl", .Lib, .@"wasi libdl.a", prog_node, emu_dl_sources.items, .{});
179         },
181         .libwasi_emulated_process_clocks_a => {
182             var args = std.ArrayList([]const u8).init(arena);
183             try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
184             try addLibcBottomHalfIncludes(comp, arena, &args);
186             var emu_clocks_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
187             for (emulated_process_clocks_src_files) |file_path| {
188                 try emu_clocks_sources.append(.{
189                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
190                         "libc", try sanitize(arena, file_path),
191                     }),
192                     .extra_flags = args.items,
193                     .owner = undefined,
194                 });
195             }
196             try comp.build_crt_file("wasi-emulated-process-clocks", .Lib, .@"libwasi-emulated-process-clocks.a", prog_node, emu_clocks_sources.items, .{});
197         },
198         .libwasi_emulated_getpid_a => {
199             var args = std.ArrayList([]const u8).init(arena);
200             try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
201             try addLibcBottomHalfIncludes(comp, arena, &args);
203             var emu_getpid_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
204             for (emulated_getpid_src_files) |file_path| {
205                 try emu_getpid_sources.append(.{
206                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
207                         "libc", try sanitize(arena, file_path),
208                     }),
209                     .extra_flags = args.items,
210                     .owner = undefined,
211                 });
212             }
213             try comp.build_crt_file("wasi-emulated-getpid", .Lib, .@"libwasi-emulated-getpid.a", prog_node, emu_getpid_sources.items, .{});
214         },
215         .libwasi_emulated_mman_a => {
216             var args = std.ArrayList([]const u8).init(arena);
217             try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
218             try addLibcBottomHalfIncludes(comp, arena, &args);
220             var emu_mman_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
221             for (emulated_mman_src_files) |file_path| {
222                 try emu_mman_sources.append(.{
223                     .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
224                         "libc", try sanitize(arena, file_path),
225                     }),
226                     .extra_flags = args.items,
227                     .owner = undefined,
228                 });
229             }
230             try comp.build_crt_file("wasi-emulated-mman", .Lib, .@"libwasi-emulated-mman.a", prog_node, emu_mman_sources.items, .{});
231         },
232         .libwasi_emulated_signal_a => {
233             var emu_signal_sources = std.ArrayList(Compilation.CSourceFile).init(arena);
235             {
236                 var args = std.ArrayList([]const u8).init(arena);
237                 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
239                 for (emulated_signal_bottom_half_src_files) |file_path| {
240                     try emu_signal_sources.append(.{
241                         .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
242                             "libc", try sanitize(arena, file_path),
243                         }),
244                         .extra_flags = args.items,
245                         .owner = undefined,
246                     });
247                 }
248             }
250             {
251                 var args = std.ArrayList([]const u8).init(arena);
252                 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
253                 try addLibcTopHalfIncludes(comp, arena, &args);
254                 try args.append("-D_WASI_EMULATED_SIGNAL");
256                 for (emulated_signal_top_half_src_files) |file_path| {
257                     try emu_signal_sources.append(.{
258                         .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
259                             "libc", try sanitize(arena, file_path),
260                         }),
261                         .extra_flags = args.items,
262                         .owner = undefined,
263                     });
264                 }
265             }
267             try comp.build_crt_file("wasi-emulated-signal", .Lib, .@"libwasi-emulated-signal.a", prog_node, emu_signal_sources.items, .{});
268         },
269     }
272 fn sanitize(arena: Allocator, file_path: []const u8) ![]const u8 {
273     // TODO do this at comptime on the comptime data rather than at runtime
274     // probably best to wait until self-hosted is done and our comptime execution
275     // is faster and uses less memory.
276     const out_path = if (path.sep != '/') blk: {
277         const mutable_file_path = try arena.dupe(u8, file_path);
278         for (mutable_file_path) |*c| {
279             if (c.* == '/') {
280                 c.* = path.sep;
281             }
282         }
283         break :blk mutable_file_path;
284     } else file_path;
285     return out_path;
288 const CCOptions = struct {
289     want_O3: bool = false,
290     no_strict_aliasing: bool = false,
293 fn addCCArgs(
294     comp: *Compilation,
295     arena: Allocator,
296     args: *std.ArrayList([]const u8),
297     options: CCOptions,
298 ) error{OutOfMemory}!void {
299     const target = comp.getTarget();
300     const arch_name = std.zig.target.muslArchNameHeaders(target.cpu.arch);
301     const os_name = @tagName(target.os.tag);
302     const triple = try std.fmt.allocPrint(arena, "{s}-{s}-musl", .{ arch_name, os_name });
303     const o_arg = if (options.want_O3) "-O3" else "-Os";
305     try args.appendSlice(&[_][]const u8{
306         "-std=gnu17",
307         "-fno-trapping-math",
308         "-w", // ignore all warnings
310         o_arg,
312         "-mthread-model",
313         "single",
315         "-isysroot",
316         "/",
318         "-iwithsysroot",
319         try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "include", triple }),
321         "-DBULK_MEMORY_THRESHOLD=32",
322     });
324     if (options.no_strict_aliasing) {
325         try args.appendSlice(&[_][]const u8{"-fno-strict-aliasing"});
326     }
329 fn addLibcBottomHalfIncludes(
330     comp: *Compilation,
331     arena: Allocator,
332     args: *std.ArrayList([]const u8),
333 ) error{OutOfMemory}!void {
334     try args.appendSlice(&[_][]const u8{
335         "-I",
336         try comp.zig_lib_directory.join(arena, &[_][]const u8{
337             "libc",
338             "wasi",
339             "libc-bottom-half",
340             "headers",
341             "private",
342         }),
344         "-I",
345         try comp.zig_lib_directory.join(arena, &[_][]const u8{
346             "libc",
347             "wasi",
348             "libc-bottom-half",
349             "cloudlibc",
350             "src",
351             "include",
352         }),
354         "-I",
355         try comp.zig_lib_directory.join(arena, &[_][]const u8{
356             "libc",
357             "wasi",
358             "libc-bottom-half",
359             "cloudlibc",
360             "src",
361         }),
363         "-I",
364         try comp.zig_lib_directory.join(arena, &[_][]const u8{
365             "libc",
366             "wasi",
367             "libc-top-half",
368             "musl",
369             "src",
370             "include",
371         }),
373         "-I",
374         try comp.zig_lib_directory.join(arena, &[_][]const u8{
375             "libc",
376             "wasi",
377             "libc-top-half",
378             "musl",
379             "src",
380             "internal",
381         }),
382     });
385 fn addLibcTopHalfIncludes(
386     comp: *Compilation,
387     arena: Allocator,
388     args: *std.ArrayList([]const u8),
389 ) error{OutOfMemory}!void {
390     try args.appendSlice(&[_][]const u8{
391         "-I",
392         try comp.zig_lib_directory.join(arena, &[_][]const u8{
393             "libc",
394             "wasi",
395             "libc-top-half",
396             "musl",
397             "src",
398             "include",
399         }),
401         "-I",
402         try comp.zig_lib_directory.join(arena, &[_][]const u8{
403             "libc",
404             "wasi",
405             "libc-top-half",
406             "musl",
407             "src",
408             "internal",
409         }),
411         "-I",
412         try comp.zig_lib_directory.join(arena, &[_][]const u8{
413             "libc",
414             "wasi",
415             "libc-top-half",
416             "musl",
417             "arch",
418             "wasm32",
419         }),
421         "-I",
422         try comp.zig_lib_directory.join(arena, &[_][]const u8{
423             "libc",
424             "wasi",
425             "libc-top-half",
426             "musl",
427             "arch",
428             "generic",
429         }),
431         "-I",
432         try comp.zig_lib_directory.join(arena, &[_][]const u8{
433             "libc",
434             "wasi",
435             "libc-top-half",
436             "headers",
437             "private",
438         }),
439     });
442 const emmalloc_src_files = [_][]const u8{
443     "wasi/emmalloc/emmalloc.c",
446 const libc_bottom_half_src_files = [_][]const u8{
447     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/closedir.c",
448     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/dirfd.c",
449     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/fdclosedir.c",
450     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c",
451     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/opendirat.c",
452     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c",
453     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/rewinddir.c",
454     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/scandirat.c",
455     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/seekdir.c",
456     "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/telldir.c",
457     "wasi/libc-bottom-half/cloudlibc/src/libc/errno/errno.c",
458     "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/fcntl.c",
459     "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c",
460     "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/posix_fadvise.c",
461     "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/posix_fallocate.c",
462     "wasi/libc-bottom-half/cloudlibc/src/libc/poll/poll.c",
463     "wasi/libc-bottom-half/cloudlibc/src/libc/sched/sched_yield.c",
464     "wasi/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c",
465     "wasi/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c",
466     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/ioctl/ioctl.c",
467     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/select/pselect.c",
468     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/select/select.c",
469     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/getsockopt.c",
470     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c",
471     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c",
472     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c",
473     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstat.c",
474     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c",
475     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/futimens.c",
476     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c",
477     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c",
478     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/time/gettimeofday.c",
479     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/preadv.c",
480     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/pwritev.c",
481     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/readv.c",
482     "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/writev.c",
483     "wasi/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_MONOTONIC.c",
484     "wasi/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_REALTIME.c",
485     "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_getres.c",
486     "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_gettime.c",
487     "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c",
488     "wasi/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c",
489     "wasi/libc-bottom-half/cloudlibc/src/libc/time/time.c",
490     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c",
491     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fdatasync.c",
492     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fsync.c",
493     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/ftruncate.c",
494     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c",
495     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/lseek.c",
496     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/pread.c",
497     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/pwrite.c",
498     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/read.c",
499     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c",
500     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/sleep.c",
501     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c",
502     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c",
503     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/usleep.c",
504     "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/write.c",
505     "wasi/libc-bottom-half/sources/__errno_location.c",
506     "wasi/libc-bottom-half/sources/__main_void.c",
507     "wasi/libc-bottom-half/sources/__wasilibc_dt.c",
508     "wasi/libc-bottom-half/sources/__wasilibc_environ.c",
509     "wasi/libc-bottom-half/sources/__wasilibc_fd_renumber.c",
510     "wasi/libc-bottom-half/sources/__wasilibc_initialize_environ.c",
511     "wasi/libc-bottom-half/sources/__wasilibc_real.c",
512     "wasi/libc-bottom-half/sources/__wasilibc_rmdirat.c",
513     "wasi/libc-bottom-half/sources/__wasilibc_tell.c",
514     "wasi/libc-bottom-half/sources/__wasilibc_unlinkat.c",
515     "wasi/libc-bottom-half/sources/abort.c",
516     "wasi/libc-bottom-half/sources/accept-wasip1.c",
517     "wasi/libc-bottom-half/sources/at_fdcwd.c",
518     "wasi/libc-bottom-half/sources/complex-builtins.c",
519     "wasi/libc-bottom-half/sources/environ.c",
520     "wasi/libc-bottom-half/sources/errno.c",
521     "wasi/libc-bottom-half/sources/getcwd.c",
522     "wasi/libc-bottom-half/sources/getentropy.c",
523     "wasi/libc-bottom-half/sources/isatty.c",
524     "wasi/libc-bottom-half/sources/math/fmin-fmax.c",
525     "wasi/libc-bottom-half/sources/math/math-builtins.c",
526     "wasi/libc-bottom-half/sources/posix.c",
527     "wasi/libc-bottom-half/sources/preopens.c",
528     "wasi/libc-bottom-half/sources/reallocarray.c",
529     "wasi/libc-bottom-half/sources/sbrk.c",
530     "wasi/libc-bottom-half/sources/truncate.c",
531     "wasi/libc-bottom-half/sources/chdir.c",
534 const libc_top_half_src_files = [_][]const u8{
535     "wasi/libc-top-half/musl/src/misc/a64l.c",
536     "wasi/libc-top-half/musl/src/misc/basename.c",
537     "wasi/libc-top-half/musl/src/misc/dirname.c",
538     "wasi/libc-top-half/musl/src/misc/ffs.c",
539     "wasi/libc-top-half/musl/src/misc/ffsl.c",
540     "wasi/libc-top-half/musl/src/misc/ffsll.c",
541     "wasi/libc-top-half/musl/src/misc/fmtmsg.c",
542     "wasi/libc-top-half/musl/src/misc/getdomainname.c",
543     "wasi/libc-top-half/musl/src/misc/gethostid.c",
544     "wasi/libc-top-half/musl/src/misc/getopt.c",
545     "wasi/libc-top-half/musl/src/misc/getopt_long.c",
546     "wasi/libc-top-half/musl/src/misc/getsubopt.c",
547     "wasi/libc-top-half/musl/src/misc/realpath.c",
548     "wasi/libc-top-half/musl/src/misc/uname.c",
549     "wasi/libc-top-half/musl/src/misc/nftw.c",
550     "wasi/libc-top-half/musl/src/errno/strerror.c",
551     "wasi/libc-top-half/musl/src/network/htonl.c",
552     "wasi/libc-top-half/musl/src/network/htons.c",
553     "wasi/libc-top-half/musl/src/network/ntohl.c",
554     "wasi/libc-top-half/musl/src/network/ntohs.c",
555     "wasi/libc-top-half/musl/src/network/inet_ntop.c",
556     "wasi/libc-top-half/musl/src/network/inet_pton.c",
557     "wasi/libc-top-half/musl/src/network/inet_aton.c",
558     "wasi/libc-top-half/musl/src/network/in6addr_any.c",
559     "wasi/libc-top-half/musl/src/network/in6addr_loopback.c",
560     "wasi/libc-top-half/musl/src/fenv/fenv.c",
561     "wasi/libc-top-half/musl/src/fenv/fesetround.c",
562     "wasi/libc-top-half/musl/src/fenv/feupdateenv.c",
563     "wasi/libc-top-half/musl/src/fenv/fesetexceptflag.c",
564     "wasi/libc-top-half/musl/src/fenv/fegetexceptflag.c",
565     "wasi/libc-top-half/musl/src/fenv/feholdexcept.c",
566     "wasi/libc-top-half/musl/src/exit/exit.c",
567     "wasi/libc-top-half/musl/src/exit/atexit.c",
568     "wasi/libc-top-half/musl/src/exit/assert.c",
569     "wasi/libc-top-half/musl/src/exit/quick_exit.c",
570     "wasi/libc-top-half/musl/src/exit/at_quick_exit.c",
571     "wasi/libc-top-half/musl/src/time/strftime.c",
572     "wasi/libc-top-half/musl/src/time/asctime.c",
573     "wasi/libc-top-half/musl/src/time/asctime_r.c",
574     "wasi/libc-top-half/musl/src/time/ctime.c",
575     "wasi/libc-top-half/musl/src/time/ctime_r.c",
576     "wasi/libc-top-half/musl/src/time/wcsftime.c",
577     "wasi/libc-top-half/musl/src/time/strptime.c",
578     "wasi/libc-top-half/musl/src/time/difftime.c",
579     "wasi/libc-top-half/musl/src/time/timegm.c",
580     "wasi/libc-top-half/musl/src/time/ftime.c",
581     "wasi/libc-top-half/musl/src/time/gmtime.c",
582     "wasi/libc-top-half/musl/src/time/gmtime_r.c",
583     "wasi/libc-top-half/musl/src/time/timespec_get.c",
584     "wasi/libc-top-half/musl/src/time/getdate.c",
585     "wasi/libc-top-half/musl/src/time/localtime.c",
586     "wasi/libc-top-half/musl/src/time/localtime_r.c",
587     "wasi/libc-top-half/musl/src/time/mktime.c",
588     "wasi/libc-top-half/musl/src/time/__tm_to_secs.c",
589     "wasi/libc-top-half/musl/src/time/__month_to_secs.c",
590     "wasi/libc-top-half/musl/src/time/__secs_to_tm.c",
591     "wasi/libc-top-half/musl/src/time/__year_to_secs.c",
592     "wasi/libc-top-half/musl/src/time/__tz.c",
593     "wasi/libc-top-half/musl/src/fcntl/creat.c",
594     "wasi/libc-top-half/musl/src/dirent/alphasort.c",
595     "wasi/libc-top-half/musl/src/dirent/versionsort.c",
596     "wasi/libc-top-half/musl/src/env/__stack_chk_fail.c",
597     "wasi/libc-top-half/musl/src/env/clearenv.c",
598     "wasi/libc-top-half/musl/src/env/getenv.c",
599     "wasi/libc-top-half/musl/src/env/putenv.c",
600     "wasi/libc-top-half/musl/src/env/setenv.c",
601     "wasi/libc-top-half/musl/src/env/unsetenv.c",
602     "wasi/libc-top-half/musl/src/unistd/posix_close.c",
603     "wasi/libc-top-half/musl/src/stat/futimesat.c",
604     "wasi/libc-top-half/musl/src/legacy/getpagesize.c",
605     "wasi/libc-top-half/musl/src/thread/thrd_sleep.c",
606     "wasi/libc-top-half/musl/src/internal/defsysinfo.c",
607     "wasi/libc-top-half/musl/src/internal/floatscan.c",
608     "wasi/libc-top-half/musl/src/internal/intscan.c",
609     "wasi/libc-top-half/musl/src/internal/libc.c",
610     "wasi/libc-top-half/musl/src/internal/shgetc.c",
611     "wasi/libc-top-half/musl/src/stdio/__fclose_ca.c",
612     "wasi/libc-top-half/musl/src/stdio/__fdopen.c",
613     "wasi/libc-top-half/musl/src/stdio/__fmodeflags.c",
614     "wasi/libc-top-half/musl/src/stdio/__fopen_rb_ca.c",
615     "wasi/libc-top-half/musl/src/stdio/__overflow.c",
616     "wasi/libc-top-half/musl/src/stdio/__stdio_close.c",
617     "wasi/libc-top-half/musl/src/stdio/__stdio_exit.c",
618     "wasi/libc-top-half/musl/src/stdio/__stdio_read.c",
619     "wasi/libc-top-half/musl/src/stdio/__stdio_seek.c",
620     "wasi/libc-top-half/musl/src/stdio/__stdio_write.c",
621     "wasi/libc-top-half/musl/src/stdio/__stdout_write.c",
622     "wasi/libc-top-half/musl/src/stdio/__toread.c",
623     "wasi/libc-top-half/musl/src/stdio/__towrite.c",
624     "wasi/libc-top-half/musl/src/stdio/__uflow.c",
625     "wasi/libc-top-half/musl/src/stdio/asprintf.c",
626     "wasi/libc-top-half/musl/src/stdio/clearerr.c",
627     "wasi/libc-top-half/musl/src/stdio/dprintf.c",
628     "wasi/libc-top-half/musl/src/stdio/ext.c",
629     "wasi/libc-top-half/musl/src/stdio/ext2.c",
630     "wasi/libc-top-half/musl/src/stdio/fclose.c",
631     "wasi/libc-top-half/musl/src/stdio/feof.c",
632     "wasi/libc-top-half/musl/src/stdio/ferror.c",
633     "wasi/libc-top-half/musl/src/stdio/fflush.c",
634     "wasi/libc-top-half/musl/src/stdio/fgetc.c",
635     "wasi/libc-top-half/musl/src/stdio/fgetln.c",
636     "wasi/libc-top-half/musl/src/stdio/fgetpos.c",
637     "wasi/libc-top-half/musl/src/stdio/fgets.c",
638     "wasi/libc-top-half/musl/src/stdio/fgetwc.c",
639     "wasi/libc-top-half/musl/src/stdio/fgetws.c",
640     "wasi/libc-top-half/musl/src/stdio/fileno.c",
641     "wasi/libc-top-half/musl/src/stdio/fmemopen.c",
642     "wasi/libc-top-half/musl/src/stdio/fopen.c",
643     "wasi/libc-top-half/musl/src/stdio/fopencookie.c",
644     "wasi/libc-top-half/musl/src/stdio/fprintf.c",
645     "wasi/libc-top-half/musl/src/stdio/fputc.c",
646     "wasi/libc-top-half/musl/src/stdio/fputs.c",
647     "wasi/libc-top-half/musl/src/stdio/fputwc.c",
648     "wasi/libc-top-half/musl/src/stdio/fputws.c",
649     "wasi/libc-top-half/musl/src/stdio/fread.c",
650     "wasi/libc-top-half/musl/src/stdio/freopen.c",
651     "wasi/libc-top-half/musl/src/stdio/fscanf.c",
652     "wasi/libc-top-half/musl/src/stdio/fseek.c",
653     "wasi/libc-top-half/musl/src/stdio/fsetpos.c",
654     "wasi/libc-top-half/musl/src/stdio/ftell.c",
655     "wasi/libc-top-half/musl/src/stdio/fwide.c",
656     "wasi/libc-top-half/musl/src/stdio/fwprintf.c",
657     "wasi/libc-top-half/musl/src/stdio/fwrite.c",
658     "wasi/libc-top-half/musl/src/stdio/fwscanf.c",
659     "wasi/libc-top-half/musl/src/stdio/getc.c",
660     "wasi/libc-top-half/musl/src/stdio/getc_unlocked.c",
661     "wasi/libc-top-half/musl/src/stdio/getchar.c",
662     "wasi/libc-top-half/musl/src/stdio/getchar_unlocked.c",
663     "wasi/libc-top-half/musl/src/stdio/getdelim.c",
664     "wasi/libc-top-half/musl/src/stdio/getline.c",
665     "wasi/libc-top-half/musl/src/stdio/getw.c",
666     "wasi/libc-top-half/musl/src/stdio/getwc.c",
667     "wasi/libc-top-half/musl/src/stdio/getwchar.c",
668     "wasi/libc-top-half/musl/src/stdio/ofl.c",
669     "wasi/libc-top-half/musl/src/stdio/ofl_add.c",
670     "wasi/libc-top-half/musl/src/stdio/open_memstream.c",
671     "wasi/libc-top-half/musl/src/stdio/open_wmemstream.c",
672     "wasi/libc-top-half/musl/src/stdio/perror.c",
673     "wasi/libc-top-half/musl/src/stdio/printf.c",
674     "wasi/libc-top-half/musl/src/stdio/putc.c",
675     "wasi/libc-top-half/musl/src/stdio/putc_unlocked.c",
676     "wasi/libc-top-half/musl/src/stdio/putchar.c",
677     "wasi/libc-top-half/musl/src/stdio/putchar_unlocked.c",
678     "wasi/libc-top-half/musl/src/stdio/puts.c",
679     "wasi/libc-top-half/musl/src/stdio/putw.c",
680     "wasi/libc-top-half/musl/src/stdio/putwc.c",
681     "wasi/libc-top-half/musl/src/stdio/putwchar.c",
682     "wasi/libc-top-half/musl/src/stdio/rewind.c",
683     "wasi/libc-top-half/musl/src/stdio/scanf.c",
684     "wasi/libc-top-half/musl/src/stdio/setbuf.c",
685     "wasi/libc-top-half/musl/src/stdio/setbuffer.c",
686     "wasi/libc-top-half/musl/src/stdio/setlinebuf.c",
687     "wasi/libc-top-half/musl/src/stdio/setvbuf.c",
688     "wasi/libc-top-half/musl/src/stdio/snprintf.c",
689     "wasi/libc-top-half/musl/src/stdio/sprintf.c",
690     "wasi/libc-top-half/musl/src/stdio/sscanf.c",
691     "wasi/libc-top-half/musl/src/stdio/stderr.c",
692     "wasi/libc-top-half/musl/src/stdio/stdin.c",
693     "wasi/libc-top-half/musl/src/stdio/stdout.c",
694     "wasi/libc-top-half/musl/src/stdio/swprintf.c",
695     "wasi/libc-top-half/musl/src/stdio/swscanf.c",
696     "wasi/libc-top-half/musl/src/stdio/ungetc.c",
697     "wasi/libc-top-half/musl/src/stdio/ungetwc.c",
698     "wasi/libc-top-half/musl/src/stdio/vasprintf.c",
699     "wasi/libc-top-half/musl/src/stdio/vdprintf.c",
700     "wasi/libc-top-half/musl/src/stdio/vfprintf.c",
701     "wasi/libc-top-half/musl/src/stdio/vfscanf.c",
702     "wasi/libc-top-half/musl/src/stdio/vfwprintf.c",
703     "wasi/libc-top-half/musl/src/stdio/vfwscanf.c",
704     "wasi/libc-top-half/musl/src/stdio/vprintf.c",
705     "wasi/libc-top-half/musl/src/stdio/vscanf.c",
706     "wasi/libc-top-half/musl/src/stdio/vsnprintf.c",
707     "wasi/libc-top-half/musl/src/stdio/vsprintf.c",
708     "wasi/libc-top-half/musl/src/stdio/vsscanf.c",
709     "wasi/libc-top-half/musl/src/stdio/vswprintf.c",
710     "wasi/libc-top-half/musl/src/stdio/vswscanf.c",
711     "wasi/libc-top-half/musl/src/stdio/vwprintf.c",
712     "wasi/libc-top-half/musl/src/stdio/vwscanf.c",
713     "wasi/libc-top-half/musl/src/stdio/wprintf.c",
714     "wasi/libc-top-half/musl/src/stdio/wscanf.c",
715     "wasi/libc-top-half/musl/src/string/bcmp.c",
716     "wasi/libc-top-half/musl/src/string/bcopy.c",
717     "wasi/libc-top-half/musl/src/string/bzero.c",
718     "wasi/libc-top-half/musl/src/string/explicit_bzero.c",
719     "wasi/libc-top-half/musl/src/string/index.c",
720     "wasi/libc-top-half/musl/src/string/memccpy.c",
721     "wasi/libc-top-half/musl/src/string/memchr.c",
722     "wasi/libc-top-half/musl/src/string/memcmp.c",
723     "wasi/libc-top-half/musl/src/string/memmem.c",
724     "wasi/libc-top-half/musl/src/string/mempcpy.c",
725     "wasi/libc-top-half/musl/src/string/memrchr.c",
726     "wasi/libc-top-half/musl/src/string/memset.c",
727     "wasi/libc-top-half/musl/src/string/rindex.c",
728     "wasi/libc-top-half/musl/src/string/stpcpy.c",
729     "wasi/libc-top-half/musl/src/string/stpncpy.c",
730     "wasi/libc-top-half/musl/src/string/strcasecmp.c",
731     "wasi/libc-top-half/musl/src/string/strcasestr.c",
732     "wasi/libc-top-half/musl/src/string/strcat.c",
733     "wasi/libc-top-half/musl/src/string/strchr.c",
734     "wasi/libc-top-half/musl/src/string/strchrnul.c",
735     "wasi/libc-top-half/musl/src/string/strcmp.c",
736     "wasi/libc-top-half/musl/src/string/strcpy.c",
737     "wasi/libc-top-half/musl/src/string/strcspn.c",
738     "wasi/libc-top-half/musl/src/string/strdup.c",
739     "wasi/libc-top-half/musl/src/string/strerror_r.c",
740     "wasi/libc-top-half/musl/src/string/strlcat.c",
741     "wasi/libc-top-half/musl/src/string/strlcpy.c",
742     "wasi/libc-top-half/musl/src/string/strlen.c",
743     "wasi/libc-top-half/musl/src/string/strncasecmp.c",
744     "wasi/libc-top-half/musl/src/string/strncat.c",
745     "wasi/libc-top-half/musl/src/string/strncmp.c",
746     "wasi/libc-top-half/musl/src/string/strncpy.c",
747     "wasi/libc-top-half/musl/src/string/strndup.c",
748     "wasi/libc-top-half/musl/src/string/strnlen.c",
749     "wasi/libc-top-half/musl/src/string/strpbrk.c",
750     "wasi/libc-top-half/musl/src/string/strrchr.c",
751     "wasi/libc-top-half/musl/src/string/strsep.c",
752     "wasi/libc-top-half/musl/src/string/strspn.c",
753     "wasi/libc-top-half/musl/src/string/strstr.c",
754     "wasi/libc-top-half/musl/src/string/strtok.c",
755     "wasi/libc-top-half/musl/src/string/strtok_r.c",
756     "wasi/libc-top-half/musl/src/string/strverscmp.c",
757     "wasi/libc-top-half/musl/src/string/swab.c",
758     "wasi/libc-top-half/musl/src/string/wcpcpy.c",
759     "wasi/libc-top-half/musl/src/string/wcpncpy.c",
760     "wasi/libc-top-half/musl/src/string/wcscasecmp.c",
761     "wasi/libc-top-half/musl/src/string/wcscasecmp_l.c",
762     "wasi/libc-top-half/musl/src/string/wcscat.c",
763     "wasi/libc-top-half/musl/src/string/wcschr.c",
764     "wasi/libc-top-half/musl/src/string/wcscmp.c",
765     "wasi/libc-top-half/musl/src/string/wcscpy.c",
766     "wasi/libc-top-half/musl/src/string/wcscspn.c",
767     "wasi/libc-top-half/musl/src/string/wcsdup.c",
768     "wasi/libc-top-half/musl/src/string/wcslen.c",
769     "wasi/libc-top-half/musl/src/string/wcsncasecmp.c",
770     "wasi/libc-top-half/musl/src/string/wcsncasecmp_l.c",
771     "wasi/libc-top-half/musl/src/string/wcsncat.c",
772     "wasi/libc-top-half/musl/src/string/wcsncmp.c",
773     "wasi/libc-top-half/musl/src/string/wcsncpy.c",
774     "wasi/libc-top-half/musl/src/string/wcsnlen.c",
775     "wasi/libc-top-half/musl/src/string/wcspbrk.c",
776     "wasi/libc-top-half/musl/src/string/wcsrchr.c",
777     "wasi/libc-top-half/musl/src/string/wcsspn.c",
778     "wasi/libc-top-half/musl/src/string/wcsstr.c",
779     "wasi/libc-top-half/musl/src/string/wcstok.c",
780     "wasi/libc-top-half/musl/src/string/wcswcs.c",
781     "wasi/libc-top-half/musl/src/string/wmemchr.c",
782     "wasi/libc-top-half/musl/src/string/wmemcmp.c",
783     "wasi/libc-top-half/musl/src/string/wmemcpy.c",
784     "wasi/libc-top-half/musl/src/string/wmemmove.c",
785     "wasi/libc-top-half/musl/src/string/wmemset.c",
786     "wasi/libc-top-half/musl/src/locale/__lctrans.c",
787     "wasi/libc-top-half/musl/src/locale/__mo_lookup.c",
788     "wasi/libc-top-half/musl/src/locale/c_locale.c",
789     "wasi/libc-top-half/musl/src/locale/catclose.c",
790     "wasi/libc-top-half/musl/src/locale/catgets.c",
791     "wasi/libc-top-half/musl/src/locale/catopen.c",
792     "wasi/libc-top-half/musl/src/locale/duplocale.c",
793     "wasi/libc-top-half/musl/src/locale/freelocale.c",
794     "wasi/libc-top-half/musl/src/locale/iconv.c",
795     "wasi/libc-top-half/musl/src/locale/iconv_close.c",
796     "wasi/libc-top-half/musl/src/locale/langinfo.c",
797     "wasi/libc-top-half/musl/src/locale/locale_map.c",
798     "wasi/libc-top-half/musl/src/locale/localeconv.c",
799     "wasi/libc-top-half/musl/src/locale/newlocale.c",
800     "wasi/libc-top-half/musl/src/locale/pleval.c",
801     "wasi/libc-top-half/musl/src/locale/setlocale.c",
802     "wasi/libc-top-half/musl/src/locale/strcoll.c",
803     "wasi/libc-top-half/musl/src/locale/strfmon.c",
804     "wasi/libc-top-half/musl/src/locale/strtod_l.c",
805     "wasi/libc-top-half/musl/src/locale/strxfrm.c",
806     "wasi/libc-top-half/musl/src/locale/uselocale.c",
807     "wasi/libc-top-half/musl/src/locale/wcscoll.c",
808     "wasi/libc-top-half/musl/src/locale/wcsxfrm.c",
809     "wasi/libc-top-half/musl/src/stdlib/abs.c",
810     "wasi/libc-top-half/musl/src/stdlib/atof.c",
811     "wasi/libc-top-half/musl/src/stdlib/atoi.c",
812     "wasi/libc-top-half/musl/src/stdlib/atol.c",
813     "wasi/libc-top-half/musl/src/stdlib/atoll.c",
814     "wasi/libc-top-half/musl/src/stdlib/bsearch.c",
815     "wasi/libc-top-half/musl/src/stdlib/div.c",
816     "wasi/libc-top-half/musl/src/stdlib/ecvt.c",
817     "wasi/libc-top-half/musl/src/stdlib/fcvt.c",
818     "wasi/libc-top-half/musl/src/stdlib/gcvt.c",
819     "wasi/libc-top-half/musl/src/stdlib/imaxabs.c",
820     "wasi/libc-top-half/musl/src/stdlib/imaxdiv.c",
821     "wasi/libc-top-half/musl/src/stdlib/labs.c",
822     "wasi/libc-top-half/musl/src/stdlib/ldiv.c",
823     "wasi/libc-top-half/musl/src/stdlib/llabs.c",
824     "wasi/libc-top-half/musl/src/stdlib/lldiv.c",
825     "wasi/libc-top-half/musl/src/stdlib/qsort.c",
826     "wasi/libc-top-half/musl/src/stdlib/qsort_nr.c",
827     "wasi/libc-top-half/musl/src/stdlib/strtod.c",
828     "wasi/libc-top-half/musl/src/stdlib/strtol.c",
829     "wasi/libc-top-half/musl/src/stdlib/wcstod.c",
830     "wasi/libc-top-half/musl/src/stdlib/wcstol.c",
831     "wasi/libc-top-half/musl/src/search/hsearch.c",
832     "wasi/libc-top-half/musl/src/search/insque.c",
833     "wasi/libc-top-half/musl/src/search/lsearch.c",
834     "wasi/libc-top-half/musl/src/search/tdelete.c",
835     "wasi/libc-top-half/musl/src/search/tdestroy.c",
836     "wasi/libc-top-half/musl/src/search/tfind.c",
837     "wasi/libc-top-half/musl/src/search/tsearch.c",
838     "wasi/libc-top-half/musl/src/search/twalk.c",
839     "wasi/libc-top-half/musl/src/multibyte/btowc.c",
840     "wasi/libc-top-half/musl/src/multibyte/c16rtomb.c",
841     "wasi/libc-top-half/musl/src/multibyte/c32rtomb.c",
842     "wasi/libc-top-half/musl/src/multibyte/internal.c",
843     "wasi/libc-top-half/musl/src/multibyte/mblen.c",
844     "wasi/libc-top-half/musl/src/multibyte/mbrlen.c",
845     "wasi/libc-top-half/musl/src/multibyte/mbrtoc16.c",
846     "wasi/libc-top-half/musl/src/multibyte/mbrtoc32.c",
847     "wasi/libc-top-half/musl/src/multibyte/mbrtowc.c",
848     "wasi/libc-top-half/musl/src/multibyte/mbsinit.c",
849     "wasi/libc-top-half/musl/src/multibyte/mbsnrtowcs.c",
850     "wasi/libc-top-half/musl/src/multibyte/mbsrtowcs.c",
851     "wasi/libc-top-half/musl/src/multibyte/mbstowcs.c",
852     "wasi/libc-top-half/musl/src/multibyte/mbtowc.c",
853     "wasi/libc-top-half/musl/src/multibyte/wcrtomb.c",
854     "wasi/libc-top-half/musl/src/multibyte/wcsnrtombs.c",
855     "wasi/libc-top-half/musl/src/multibyte/wcsrtombs.c",
856     "wasi/libc-top-half/musl/src/multibyte/wcstombs.c",
857     "wasi/libc-top-half/musl/src/multibyte/wctob.c",
858     "wasi/libc-top-half/musl/src/multibyte/wctomb.c",
859     "wasi/libc-top-half/musl/src/regex/fnmatch.c",
860     "wasi/libc-top-half/musl/src/regex/glob.c",
861     "wasi/libc-top-half/musl/src/regex/regcomp.c",
862     "wasi/libc-top-half/musl/src/regex/regerror.c",
863     "wasi/libc-top-half/musl/src/regex/regexec.c",
864     "wasi/libc-top-half/musl/src/regex/tre-mem.c",
865     "wasi/libc-top-half/musl/src/prng/__rand48_step.c",
866     "wasi/libc-top-half/musl/src/prng/__seed48.c",
867     "wasi/libc-top-half/musl/src/prng/drand48.c",
868     "wasi/libc-top-half/musl/src/prng/lcong48.c",
869     "wasi/libc-top-half/musl/src/prng/lrand48.c",
870     "wasi/libc-top-half/musl/src/prng/mrand48.c",
871     "wasi/libc-top-half/musl/src/prng/rand.c",
872     "wasi/libc-top-half/musl/src/prng/rand_r.c",
873     "wasi/libc-top-half/musl/src/prng/random.c",
874     "wasi/libc-top-half/musl/src/prng/seed48.c",
875     "wasi/libc-top-half/musl/src/prng/srand48.c",
876     "wasi/libc-top-half/musl/src/conf/confstr.c",
877     "wasi/libc-top-half/musl/src/conf/fpathconf.c",
878     "wasi/libc-top-half/musl/src/conf/legacy.c",
879     "wasi/libc-top-half/musl/src/conf/pathconf.c",
880     "wasi/libc-top-half/musl/src/conf/sysconf.c",
881     "wasi/libc-top-half/musl/src/ctype/__ctype_b_loc.c",
882     "wasi/libc-top-half/musl/src/ctype/__ctype_get_mb_cur_max.c",
883     "wasi/libc-top-half/musl/src/ctype/__ctype_tolower_loc.c",
884     "wasi/libc-top-half/musl/src/ctype/__ctype_toupper_loc.c",
885     "wasi/libc-top-half/musl/src/ctype/isalnum.c",
886     "wasi/libc-top-half/musl/src/ctype/isalpha.c",
887     "wasi/libc-top-half/musl/src/ctype/isascii.c",
888     "wasi/libc-top-half/musl/src/ctype/isblank.c",
889     "wasi/libc-top-half/musl/src/ctype/iscntrl.c",
890     "wasi/libc-top-half/musl/src/ctype/isdigit.c",
891     "wasi/libc-top-half/musl/src/ctype/isgraph.c",
892     "wasi/libc-top-half/musl/src/ctype/islower.c",
893     "wasi/libc-top-half/musl/src/ctype/isprint.c",
894     "wasi/libc-top-half/musl/src/ctype/ispunct.c",
895     "wasi/libc-top-half/musl/src/ctype/isspace.c",
896     "wasi/libc-top-half/musl/src/ctype/isupper.c",
897     "wasi/libc-top-half/musl/src/ctype/iswalnum.c",
898     "wasi/libc-top-half/musl/src/ctype/iswalpha.c",
899     "wasi/libc-top-half/musl/src/ctype/iswblank.c",
900     "wasi/libc-top-half/musl/src/ctype/iswcntrl.c",
901     "wasi/libc-top-half/musl/src/ctype/iswctype.c",
902     "wasi/libc-top-half/musl/src/ctype/iswdigit.c",
903     "wasi/libc-top-half/musl/src/ctype/iswgraph.c",
904     "wasi/libc-top-half/musl/src/ctype/iswlower.c",
905     "wasi/libc-top-half/musl/src/ctype/iswprint.c",
906     "wasi/libc-top-half/musl/src/ctype/iswpunct.c",
907     "wasi/libc-top-half/musl/src/ctype/iswspace.c",
908     "wasi/libc-top-half/musl/src/ctype/iswupper.c",
909     "wasi/libc-top-half/musl/src/ctype/iswxdigit.c",
910     "wasi/libc-top-half/musl/src/ctype/isxdigit.c",
911     "wasi/libc-top-half/musl/src/ctype/toascii.c",
912     "wasi/libc-top-half/musl/src/ctype/tolower.c",
913     "wasi/libc-top-half/musl/src/ctype/toupper.c",
914     "wasi/libc-top-half/musl/src/ctype/towctrans.c",
915     "wasi/libc-top-half/musl/src/ctype/wcswidth.c",
916     "wasi/libc-top-half/musl/src/ctype/wctrans.c",
917     "wasi/libc-top-half/musl/src/ctype/wcwidth.c",
918     "wasi/libc-top-half/musl/src/math/__cos.c",
919     "wasi/libc-top-half/musl/src/math/__cosdf.c",
920     "wasi/libc-top-half/musl/src/math/__cosl.c",
921     "wasi/libc-top-half/musl/src/math/__expo2.c",
922     "wasi/libc-top-half/musl/src/math/__expo2f.c",
923     "wasi/libc-top-half/musl/src/math/__invtrigl.c",
924     "wasi/libc-top-half/musl/src/math/__math_divzero.c",
925     "wasi/libc-top-half/musl/src/math/__math_divzerof.c",
926     "wasi/libc-top-half/musl/src/math/__math_invalid.c",
927     "wasi/libc-top-half/musl/src/math/__math_invalidf.c",
928     "wasi/libc-top-half/musl/src/math/__math_invalidl.c",
929     "wasi/libc-top-half/musl/src/math/__math_oflow.c",
930     "wasi/libc-top-half/musl/src/math/__math_oflowf.c",
931     "wasi/libc-top-half/musl/src/math/__math_uflow.c",
932     "wasi/libc-top-half/musl/src/math/__math_uflowf.c",
933     "wasi/libc-top-half/musl/src/math/__math_xflow.c",
934     "wasi/libc-top-half/musl/src/math/__math_xflowf.c",
935     "wasi/libc-top-half/musl/src/math/__polevll.c",
936     "wasi/libc-top-half/musl/src/math/__rem_pio2.c",
937     "wasi/libc-top-half/musl/src/math/__rem_pio2_large.c",
938     "wasi/libc-top-half/musl/src/math/__rem_pio2f.c",
939     "wasi/libc-top-half/musl/src/math/__rem_pio2l.c",
940     "wasi/libc-top-half/musl/src/math/__sin.c",
941     "wasi/libc-top-half/musl/src/math/__sindf.c",
942     "wasi/libc-top-half/musl/src/math/__sinl.c",
943     "wasi/libc-top-half/musl/src/math/__tan.c",
944     "wasi/libc-top-half/musl/src/math/__tandf.c",
945     "wasi/libc-top-half/musl/src/math/__tanl.c",
946     "wasi/libc-top-half/musl/src/math/acos.c",
947     "wasi/libc-top-half/musl/src/math/acosf.c",
948     "wasi/libc-top-half/musl/src/math/acosh.c",
949     "wasi/libc-top-half/musl/src/math/acoshf.c",
950     "wasi/libc-top-half/musl/src/math/acoshl.c",
951     "wasi/libc-top-half/musl/src/math/acosl.c",
952     "wasi/libc-top-half/musl/src/math/asin.c",
953     "wasi/libc-top-half/musl/src/math/asinf.c",
954     "wasi/libc-top-half/musl/src/math/asinh.c",
955     "wasi/libc-top-half/musl/src/math/asinhf.c",
956     "wasi/libc-top-half/musl/src/math/asinhl.c",
957     "wasi/libc-top-half/musl/src/math/asinl.c",
958     "wasi/libc-top-half/musl/src/math/atan.c",
959     "wasi/libc-top-half/musl/src/math/atan2.c",
960     "wasi/libc-top-half/musl/src/math/atan2f.c",
961     "wasi/libc-top-half/musl/src/math/atan2l.c",
962     "wasi/libc-top-half/musl/src/math/atanf.c",
963     "wasi/libc-top-half/musl/src/math/atanh.c",
964     "wasi/libc-top-half/musl/src/math/atanhf.c",
965     "wasi/libc-top-half/musl/src/math/atanhl.c",
966     "wasi/libc-top-half/musl/src/math/atanl.c",
967     "wasi/libc-top-half/musl/src/math/cbrt.c",
968     "wasi/libc-top-half/musl/src/math/cbrtf.c",
969     "wasi/libc-top-half/musl/src/math/cbrtl.c",
970     "wasi/libc-top-half/musl/src/math/ceill.c",
971     "wasi/libc-top-half/musl/src/math/copysignl.c",
972     "wasi/libc-top-half/musl/src/math/cos.c",
973     "wasi/libc-top-half/musl/src/math/cosf.c",
974     "wasi/libc-top-half/musl/src/math/cosh.c",
975     "wasi/libc-top-half/musl/src/math/coshf.c",
976     "wasi/libc-top-half/musl/src/math/coshl.c",
977     "wasi/libc-top-half/musl/src/math/cosl.c",
978     "wasi/libc-top-half/musl/src/math/erf.c",
979     "wasi/libc-top-half/musl/src/math/erff.c",
980     "wasi/libc-top-half/musl/src/math/erfl.c",
981     "wasi/libc-top-half/musl/src/math/exp.c",
982     "wasi/libc-top-half/musl/src/math/exp10.c",
983     "wasi/libc-top-half/musl/src/math/exp10f.c",
984     "wasi/libc-top-half/musl/src/math/exp10l.c",
985     "wasi/libc-top-half/musl/src/math/exp2.c",
986     "wasi/libc-top-half/musl/src/math/exp2f.c",
987     "wasi/libc-top-half/musl/src/math/exp2f_data.c",
988     "wasi/libc-top-half/musl/src/math/exp2l.c",
989     "wasi/libc-top-half/musl/src/math/exp_data.c",
990     "wasi/libc-top-half/musl/src/math/expf.c",
991     "wasi/libc-top-half/musl/src/math/expl.c",
992     "wasi/libc-top-half/musl/src/math/expm1.c",
993     "wasi/libc-top-half/musl/src/math/expm1f.c",
994     "wasi/libc-top-half/musl/src/math/expm1l.c",
995     "wasi/libc-top-half/musl/src/math/fabsl.c",
996     "wasi/libc-top-half/musl/src/math/fdim.c",
997     "wasi/libc-top-half/musl/src/math/fdimf.c",
998     "wasi/libc-top-half/musl/src/math/fdiml.c",
999     "wasi/libc-top-half/musl/src/math/finite.c",
1000     "wasi/libc-top-half/musl/src/math/finitef.c",
1001     "wasi/libc-top-half/musl/src/math/floorl.c",
1002     "wasi/libc-top-half/musl/src/math/fma.c",
1003     "wasi/libc-top-half/musl/src/math/fmaf.c",
1004     "wasi/libc-top-half/musl/src/math/fmal.c",
1005     "wasi/libc-top-half/musl/src/math/fmaxl.c",
1006     "wasi/libc-top-half/musl/src/math/fminl.c",
1007     "wasi/libc-top-half/musl/src/math/fmod.c",
1008     "wasi/libc-top-half/musl/src/math/fmodf.c",
1009     "wasi/libc-top-half/musl/src/math/fmodl.c",
1010     "wasi/libc-top-half/musl/src/math/frexp.c",
1011     "wasi/libc-top-half/musl/src/math/frexpf.c",
1012     "wasi/libc-top-half/musl/src/math/frexpl.c",
1013     "wasi/libc-top-half/musl/src/math/hypot.c",
1014     "wasi/libc-top-half/musl/src/math/hypotf.c",
1015     "wasi/libc-top-half/musl/src/math/hypotl.c",
1016     "wasi/libc-top-half/musl/src/math/ilogb.c",
1017     "wasi/libc-top-half/musl/src/math/ilogbf.c",
1018     "wasi/libc-top-half/musl/src/math/ilogbl.c",
1019     "wasi/libc-top-half/musl/src/math/j0.c",
1020     "wasi/libc-top-half/musl/src/math/j0f.c",
1021     "wasi/libc-top-half/musl/src/math/j1.c",
1022     "wasi/libc-top-half/musl/src/math/j1f.c",
1023     "wasi/libc-top-half/musl/src/math/jn.c",
1024     "wasi/libc-top-half/musl/src/math/jnf.c",
1025     "wasi/libc-top-half/musl/src/math/ldexp.c",
1026     "wasi/libc-top-half/musl/src/math/ldexpf.c",
1027     "wasi/libc-top-half/musl/src/math/ldexpl.c",
1028     "wasi/libc-top-half/musl/src/math/lgamma.c",
1029     "wasi/libc-top-half/musl/src/math/lgamma_r.c",
1030     "wasi/libc-top-half/musl/src/math/lgammaf.c",
1031     "wasi/libc-top-half/musl/src/math/lgammaf_r.c",
1032     "wasi/libc-top-half/musl/src/math/lgammal.c",
1033     "wasi/libc-top-half/musl/src/math/llrint.c",
1034     "wasi/libc-top-half/musl/src/math/llrintf.c",
1035     "wasi/libc-top-half/musl/src/math/llrintl.c",
1036     "wasi/libc-top-half/musl/src/math/llround.c",
1037     "wasi/libc-top-half/musl/src/math/llroundf.c",
1038     "wasi/libc-top-half/musl/src/math/llroundl.c",
1039     "wasi/libc-top-half/musl/src/math/log.c",
1040     "wasi/libc-top-half/musl/src/math/log10.c",
1041     "wasi/libc-top-half/musl/src/math/log10f.c",
1042     "wasi/libc-top-half/musl/src/math/log10l.c",
1043     "wasi/libc-top-half/musl/src/math/log1p.c",
1044     "wasi/libc-top-half/musl/src/math/log1pf.c",
1045     "wasi/libc-top-half/musl/src/math/log1pl.c",
1046     "wasi/libc-top-half/musl/src/math/log2.c",
1047     "wasi/libc-top-half/musl/src/math/log2_data.c",
1048     "wasi/libc-top-half/musl/src/math/log2f.c",
1049     "wasi/libc-top-half/musl/src/math/log2f_data.c",
1050     "wasi/libc-top-half/musl/src/math/log2l.c",
1051     "wasi/libc-top-half/musl/src/math/log_data.c",
1052     "wasi/libc-top-half/musl/src/math/logb.c",
1053     "wasi/libc-top-half/musl/src/math/logbf.c",
1054     "wasi/libc-top-half/musl/src/math/logbl.c",
1055     "wasi/libc-top-half/musl/src/math/logf.c",
1056     "wasi/libc-top-half/musl/src/math/logf_data.c",
1057     "wasi/libc-top-half/musl/src/math/logl.c",
1058     "wasi/libc-top-half/musl/src/math/lrint.c",
1059     "wasi/libc-top-half/musl/src/math/lrintf.c",
1060     "wasi/libc-top-half/musl/src/math/lrintl.c",
1061     "wasi/libc-top-half/musl/src/math/lround.c",
1062     "wasi/libc-top-half/musl/src/math/lroundf.c",
1063     "wasi/libc-top-half/musl/src/math/lroundl.c",
1064     "wasi/libc-top-half/musl/src/math/modf.c",
1065     "wasi/libc-top-half/musl/src/math/modff.c",
1066     "wasi/libc-top-half/musl/src/math/modfl.c",
1067     "wasi/libc-top-half/musl/src/math/nan.c",
1068     "wasi/libc-top-half/musl/src/math/nanf.c",
1069     "wasi/libc-top-half/musl/src/math/nanl.c",
1070     "wasi/libc-top-half/musl/src/math/nearbyintl.c",
1071     "wasi/libc-top-half/musl/src/math/nextafter.c",
1072     "wasi/libc-top-half/musl/src/math/nextafterf.c",
1073     "wasi/libc-top-half/musl/src/math/nextafterl.c",
1074     "wasi/libc-top-half/musl/src/math/nexttoward.c",
1075     "wasi/libc-top-half/musl/src/math/nexttowardf.c",
1076     "wasi/libc-top-half/musl/src/math/nexttowardl.c",
1077     "wasi/libc-top-half/musl/src/math/pow.c",
1078     "wasi/libc-top-half/musl/src/math/pow_data.c",
1079     "wasi/libc-top-half/musl/src/math/powf.c",
1080     "wasi/libc-top-half/musl/src/math/powf_data.c",
1081     "wasi/libc-top-half/musl/src/math/powl.c",
1082     "wasi/libc-top-half/musl/src/math/remainder.c",
1083     "wasi/libc-top-half/musl/src/math/remainderf.c",
1084     "wasi/libc-top-half/musl/src/math/remainderl.c",
1085     "wasi/libc-top-half/musl/src/math/remquo.c",
1086     "wasi/libc-top-half/musl/src/math/remquof.c",
1087     "wasi/libc-top-half/musl/src/math/remquol.c",
1088     "wasi/libc-top-half/musl/src/math/rintl.c",
1089     "wasi/libc-top-half/musl/src/math/round.c",
1090     "wasi/libc-top-half/musl/src/math/roundf.c",
1091     "wasi/libc-top-half/musl/src/math/roundl.c",
1092     "wasi/libc-top-half/musl/src/math/scalb.c",
1093     "wasi/libc-top-half/musl/src/math/scalbf.c",
1094     "wasi/libc-top-half/musl/src/math/scalbln.c",
1095     "wasi/libc-top-half/musl/src/math/scalblnf.c",
1096     "wasi/libc-top-half/musl/src/math/scalblnl.c",
1097     "wasi/libc-top-half/musl/src/math/scalbn.c",
1098     "wasi/libc-top-half/musl/src/math/scalbnf.c",
1099     "wasi/libc-top-half/musl/src/math/scalbnl.c",
1100     "wasi/libc-top-half/musl/src/math/signgam.c",
1101     "wasi/libc-top-half/musl/src/math/significand.c",
1102     "wasi/libc-top-half/musl/src/math/significandf.c",
1103     "wasi/libc-top-half/musl/src/math/sin.c",
1104     "wasi/libc-top-half/musl/src/math/sincos.c",
1105     "wasi/libc-top-half/musl/src/math/sincosf.c",
1106     "wasi/libc-top-half/musl/src/math/sincosl.c",
1107     "wasi/libc-top-half/musl/src/math/sinf.c",
1108     "wasi/libc-top-half/musl/src/math/sinh.c",
1109     "wasi/libc-top-half/musl/src/math/sinhf.c",
1110     "wasi/libc-top-half/musl/src/math/sinhl.c",
1111     "wasi/libc-top-half/musl/src/math/sinl.c",
1112     "wasi/libc-top-half/musl/src/math/sqrt_data.c",
1113     "wasi/libc-top-half/musl/src/math/sqrtl.c",
1114     "wasi/libc-top-half/musl/src/math/tan.c",
1115     "wasi/libc-top-half/musl/src/math/tanf.c",
1116     "wasi/libc-top-half/musl/src/math/tanh.c",
1117     "wasi/libc-top-half/musl/src/math/tanhf.c",
1118     "wasi/libc-top-half/musl/src/math/tanhl.c",
1119     "wasi/libc-top-half/musl/src/math/tanl.c",
1120     "wasi/libc-top-half/musl/src/math/tgamma.c",
1121     "wasi/libc-top-half/musl/src/math/tgammaf.c",
1122     "wasi/libc-top-half/musl/src/math/tgammal.c",
1123     "wasi/libc-top-half/musl/src/math/truncl.c",
1124     "wasi/libc-top-half/musl/src/complex/__cexp.c",
1125     "wasi/libc-top-half/musl/src/complex/__cexpf.c",
1126     "wasi/libc-top-half/musl/src/complex/cabs.c",
1127     "wasi/libc-top-half/musl/src/complex/cabsf.c",
1128     "wasi/libc-top-half/musl/src/complex/cabsl.c",
1129     "wasi/libc-top-half/musl/src/complex/cacos.c",
1130     "wasi/libc-top-half/musl/src/complex/cacosf.c",
1131     "wasi/libc-top-half/musl/src/complex/cacosh.c",
1132     "wasi/libc-top-half/musl/src/complex/cacoshf.c",
1133     "wasi/libc-top-half/musl/src/complex/cacoshl.c",
1134     "wasi/libc-top-half/musl/src/complex/cacosl.c",
1135     "wasi/libc-top-half/musl/src/complex/carg.c",
1136     "wasi/libc-top-half/musl/src/complex/cargf.c",
1137     "wasi/libc-top-half/musl/src/complex/cargl.c",
1138     "wasi/libc-top-half/musl/src/complex/casin.c",
1139     "wasi/libc-top-half/musl/src/complex/casinf.c",
1140     "wasi/libc-top-half/musl/src/complex/casinh.c",
1141     "wasi/libc-top-half/musl/src/complex/casinhf.c",
1142     "wasi/libc-top-half/musl/src/complex/casinhl.c",
1143     "wasi/libc-top-half/musl/src/complex/casinl.c",
1144     "wasi/libc-top-half/musl/src/complex/catan.c",
1145     "wasi/libc-top-half/musl/src/complex/catanf.c",
1146     "wasi/libc-top-half/musl/src/complex/catanh.c",
1147     "wasi/libc-top-half/musl/src/complex/catanhf.c",
1148     "wasi/libc-top-half/musl/src/complex/catanhl.c",
1149     "wasi/libc-top-half/musl/src/complex/catanl.c",
1150     "wasi/libc-top-half/musl/src/complex/ccos.c",
1151     "wasi/libc-top-half/musl/src/complex/ccosf.c",
1152     "wasi/libc-top-half/musl/src/complex/ccosh.c",
1153     "wasi/libc-top-half/musl/src/complex/ccoshf.c",
1154     "wasi/libc-top-half/musl/src/complex/ccoshl.c",
1155     "wasi/libc-top-half/musl/src/complex/ccosl.c",
1156     "wasi/libc-top-half/musl/src/complex/cexp.c",
1157     "wasi/libc-top-half/musl/src/complex/cexpf.c",
1158     "wasi/libc-top-half/musl/src/complex/cexpl.c",
1159     "wasi/libc-top-half/musl/src/complex/clog.c",
1160     "wasi/libc-top-half/musl/src/complex/clogf.c",
1161     "wasi/libc-top-half/musl/src/complex/clogl.c",
1162     "wasi/libc-top-half/musl/src/complex/conj.c",
1163     "wasi/libc-top-half/musl/src/complex/conjf.c",
1164     "wasi/libc-top-half/musl/src/complex/conjl.c",
1165     "wasi/libc-top-half/musl/src/complex/cpow.c",
1166     "wasi/libc-top-half/musl/src/complex/cpowf.c",
1167     "wasi/libc-top-half/musl/src/complex/cpowl.c",
1168     "wasi/libc-top-half/musl/src/complex/cproj.c",
1169     "wasi/libc-top-half/musl/src/complex/cprojf.c",
1170     "wasi/libc-top-half/musl/src/complex/cprojl.c",
1171     "wasi/libc-top-half/musl/src/complex/csin.c",
1172     "wasi/libc-top-half/musl/src/complex/csinf.c",
1173     "wasi/libc-top-half/musl/src/complex/csinh.c",
1174     "wasi/libc-top-half/musl/src/complex/csinhf.c",
1175     "wasi/libc-top-half/musl/src/complex/csinhl.c",
1176     "wasi/libc-top-half/musl/src/complex/csinl.c",
1177     "wasi/libc-top-half/musl/src/complex/csqrt.c",
1178     "wasi/libc-top-half/musl/src/complex/csqrtf.c",
1179     "wasi/libc-top-half/musl/src/complex/csqrtl.c",
1180     "wasi/libc-top-half/musl/src/complex/ctan.c",
1181     "wasi/libc-top-half/musl/src/complex/ctanf.c",
1182     "wasi/libc-top-half/musl/src/complex/ctanh.c",
1183     "wasi/libc-top-half/musl/src/complex/ctanhf.c",
1184     "wasi/libc-top-half/musl/src/complex/ctanhl.c",
1185     "wasi/libc-top-half/musl/src/complex/ctanl.c",
1186     "wasi/libc-top-half/musl/src/crypt/crypt.c",
1187     "wasi/libc-top-half/musl/src/crypt/crypt_blowfish.c",
1188     "wasi/libc-top-half/musl/src/crypt/crypt_des.c",
1189     "wasi/libc-top-half/musl/src/crypt/crypt_md5.c",
1190     "wasi/libc-top-half/musl/src/crypt/crypt_r.c",
1191     "wasi/libc-top-half/musl/src/crypt/crypt_sha256.c",
1192     "wasi/libc-top-half/musl/src/crypt/crypt_sha512.c",
1193     "wasi/libc-top-half/musl/src/crypt/encrypt.c",
1194     "wasi/libc-top-half/sources/arc4random.c",
1197 const crt1_command_src_file = "wasi/libc-bottom-half/crt/crt1-command.c";
1198 const crt1_reactor_src_file = "wasi/libc-bottom-half/crt/crt1-reactor.c";
1200 const emulated_dl_src_files = &[_][]const u8{
1201     "wasi/libc-top-half/musl/src/misc/dl.c",
1204 const emulated_process_clocks_src_files = &[_][]const u8{
1205     "wasi/libc-bottom-half/clocks/clock.c",
1206     "wasi/libc-bottom-half/clocks/getrusage.c",
1207     "wasi/libc-bottom-half/clocks/times.c",
1210 const emulated_getpid_src_files = &[_][]const u8{
1211     "wasi/libc-bottom-half/getpid/getpid.c",
1214 const emulated_mman_src_files = &[_][]const u8{
1215     "wasi/libc-bottom-half/mman/mman.c",
1218 const emulated_signal_bottom_half_src_files = &[_][]const u8{
1219     "wasi/libc-bottom-half/signal/signal.c",
1222 const emulated_signal_top_half_src_files = &[_][]const u8{
1223     "wasi/libc-top-half/musl/src/signal/psignal.c",
1224     "wasi/libc-top-half/musl/src/string/strsignal.c",