1const std = @import("std");
2const mem = std.mem;
3const path = std.fs.path;
4
5const Allocator = std.mem.Allocator;
6const Compilation = @import("../Compilation.zig");
7const build_options = @import("build_options");
8
9pub const CrtFile = enum {
10 crt1_reactor_o,
11 crt1_command_o,
12 libc_a,
13};
14
15pub fn execModelCrtFile(wasi_exec_model: std.lang.WasiExecModel) CrtFile {
16 return switch (wasi_exec_model) {
17 .reactor => CrtFile.crt1_reactor_o,
18 .command => CrtFile.crt1_command_o,
19 };
20}
21
22pub fn execModelCrtFileFullName(wasi_exec_model: std.lang.WasiExecModel) []const u8 {
23 return switch (execModelCrtFile(wasi_exec_model)) {
24 .crt1_reactor_o => "crt1-reactor.o",
25 .crt1_command_o => "crt1-command.o",
26 else => unreachable,
27 };
28}
29
30/// TODO replace anyerror with explicit error set, recording user-friendly errors with
31/// lockAndSetMiscFailure and returning error.AlreadyReported. see libcxx.zig for example.
32pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progress.Node) anyerror!void {
33 if (!build_options.have_llvm) {
34 return error.ZigCompilerNotBuiltWithLLVMExtensions;
35 }
36
37 const gpa = comp.gpa;
38 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
39 defer arena_allocator.deinit();
40 const arena = arena_allocator.allocator();
41
42 switch (crt_file) {
43 .crt1_reactor_o => {
44 var args = std.array_list.Managed([]const u8).init(arena);
45 try addCCArgs(comp, arena, &args, .{});
46 try addLibcBottomHalfIncludes(comp, arena, &args);
47
48 var files = [_]Compilation.CSourceFile{
49 .{
50 .src_path = try comp.dirs.zig_lib.join(arena, &.{
51 "libc", try sanitize(arena, crt1_reactor_src_file),
52 }),
53 .extra_flags = args.items,
54 .owner = undefined,
55 },
56 };
57
58 return comp.build_crt_file("crt1-reactor", .Obj, .@"wasi crt1-reactor.o", prog_node, &files, .{});
59 },
60 .crt1_command_o => {
61 var args = std.array_list.Managed([]const u8).init(arena);
62 try addCCArgs(comp, arena, &args, .{});
63 try addLibcBottomHalfIncludes(comp, arena, &args);
64
65 var files = [_]Compilation.CSourceFile{
66 .{
67 .src_path = try comp.dirs.zig_lib.join(arena, &.{
68 "libc", try sanitize(arena, crt1_command_src_file),
69 }),
70 .extra_flags = args.items,
71 .owner = undefined,
72 },
73 };
74
75 return comp.build_crt_file("crt1-command", .Obj, .@"wasi crt1-command.o", prog_node, &files, .{});
76 },
77 .libc_a => {
78 var libc_sources = std.array_list.Managed(Compilation.CSourceFile).init(arena);
79
80 {
81 // Compile libc-bottom-half.
82 var args = std.array_list.Managed([]const u8).init(arena);
83 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
84 try addLibcBottomHalfIncludes(comp, arena, &args);
85
86 for (libc_bottom_half_src_files) |file_path| {
87 try libc_sources.append(.{
88 .src_path = try comp.dirs.zig_lib.join(arena, &.{
89 "libc", try sanitize(arena, file_path),
90 }),
91 .extra_flags = args.items,
92 .owner = undefined,
93 });
94 }
95 }
96
97 {
98 // Compile libc-top-half.
99 var args = std.array_list.Managed([]const u8).init(arena);
100 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
101 try addLibcTopHalfIncludes(comp, arena, &args);
102
103 for (libc_top_half_src_files) |file_path| {
104 try libc_sources.append(.{
105 .src_path = try comp.dirs.zig_lib.join(arena, &.{
106 "libc", try sanitize(arena, file_path),
107 }),
108 .extra_flags = args.items,
109 .owner = undefined,
110 });
111 }
112 }
113
114 {
115 // Compile musl-fts.
116 var args = std.array_list.Managed([]const u8).init(arena);
117 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
118 try args.appendSlice(&[_][]const u8{
119 "-I",
120 try comp.dirs.zig_lib.join(arena, &.{
121 "libc",
122 "wasi",
123 "fts",
124 }),
125 });
126
127 for (fts_src_files) |file_path| {
128 try libc_sources.append(.{
129 .src_path = try comp.dirs.zig_lib.join(arena, &.{
130 "libc", try sanitize(arena, file_path),
131 }),
132 .extra_flags = args.items,
133 .owner = undefined,
134 });
135 }
136 }
137
138 if (comp.getTarget().cpu.has(.wasm, .exception_handling)) {
139 // Compile libsetjmp.
140 var args = std.array_list.Managed([]const u8).init(arena);
141 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
142 try addLibcTopHalfIncludes(comp, arena, &args);
143
144 for (setjmp_src_files) |file_path| {
145 try libc_sources.append(.{
146 .src_path = try comp.dirs.zig_lib.join(arena, &.{
147 "libc", try sanitize(arena, file_path),
148 }),
149 .extra_flags = args.items,
150 .owner = undefined,
151 });
152 }
153 }
154
155 {
156 // Compile libdl.
157 var args = std.array_list.Managed([]const u8).init(arena);
158 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
159 try addLibcTopHalfIncludes(comp, arena, &args);
160
161 for (emulated_dl_src_files) |file_path| {
162 try libc_sources.append(.{
163 .src_path = try comp.dirs.zig_lib.join(arena, &.{
164 "libc", try sanitize(arena, file_path),
165 }),
166 .extra_flags = args.items,
167 .owner = undefined,
168 });
169 }
170 }
171
172 {
173 // Compile libwasi-emulated-process-clocks.
174 var args = std.array_list.Managed([]const u8).init(arena);
175 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
176
177 for (emulated_process_clocks_src_files) |file_path| {
178 try libc_sources.append(.{
179 .src_path = try comp.dirs.zig_lib.join(arena, &.{
180 "libc", try sanitize(arena, file_path),
181 }),
182 .extra_flags = args.items,
183 .owner = undefined,
184 });
185 }
186 }
187
188 {
189 // Compile libwasi-emulated-getpid.
190 var args = std.array_list.Managed([]const u8).init(arena);
191 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
192
193 for (emulated_getpid_src_files) |file_path| {
194 try libc_sources.append(.{
195 .src_path = try comp.dirs.zig_lib.join(arena, &.{
196 "libc", try sanitize(arena, file_path),
197 }),
198 .extra_flags = args.items,
199 .owner = undefined,
200 });
201 }
202 }
203
204 {
205 // Compile libwasi-emulated-mman.
206 var args = std.array_list.Managed([]const u8).init(arena);
207 try addCCArgs(comp, arena, &args, .{ .want_O3 = true });
208
209 for (emulated_mman_src_files) |file_path| {
210 try libc_sources.append(.{
211 .src_path = try comp.dirs.zig_lib.join(arena, &.{
212 "libc", try sanitize(arena, file_path),
213 }),
214 .extra_flags = args.items,
215 .owner = undefined,
216 });
217 }
218 }
219
220 {
221 // Compile libwasi-emulated-signal.
222 var bottom_args = std.array_list.Managed([]const u8).init(arena);
223 try addCCArgs(comp, arena, &bottom_args, .{ .want_O3 = true });
224
225 for (emulated_signal_bottom_half_src_files) |file_path| {
226 try libc_sources.append(.{
227 .src_path = try comp.dirs.zig_lib.join(arena, &.{
228 "libc", try sanitize(arena, file_path),
229 }),
230 .extra_flags = bottom_args.items,
231 .owner = undefined,
232 });
233 }
234
235 var top_args = std.array_list.Managed([]const u8).init(arena);
236 try addCCArgs(comp, arena, &top_args, .{ .want_O3 = true });
237 try addLibcTopHalfIncludes(comp, arena, &top_args);
238 try top_args.append("-D_WASI_EMULATED_SIGNAL");
239
240 for (emulated_signal_top_half_src_files) |file_path| {
241 try libc_sources.append(.{
242 .src_path = try comp.dirs.zig_lib.join(arena, &.{
243 "libc", try sanitize(arena, file_path),
244 }),
245 .extra_flags = top_args.items,
246 .owner = undefined,
247 });
248 }
249 }
250
251 try comp.build_crt_file("c", .Lib, .@"wasi libc.a", prog_node, libc_sources.items, .{});
252 },
253 }
254}
255
256fn sanitize(arena: Allocator, file_path: []const u8) ![]const u8 {
257 // TODO do this at comptime on the comptime data rather than at runtime
258 // probably best to wait until self-hosted is done and our comptime execution
259 // is faster and uses less memory.
260 const out_path = if (path.sep != '/') blk: {
261 const mutable_file_path = try arena.dupe(u8, file_path);
262 for (mutable_file_path) |*c| {
263 if (c.* == '/') {
264 c.* = path.sep;
265 }
266 }
267 break :blk mutable_file_path;
268 } else file_path;
269 return out_path;
270}
271
272const CCOptions = struct {
273 want_O3: bool = false,
274 no_strict_aliasing: bool = false,
275};
276
277fn addCCArgs(
278 comp: *Compilation,
279 arena: Allocator,
280 args: *std.array_list.Managed([]const u8),
281 options: CCOptions,
282) error{OutOfMemory}!void {
283 const target = comp.getTarget();
284 const arch_name = std.zig.target.muslArchNameHeaders(target.cpu.arch);
285 const os_name = @tagName(target.os.tag);
286 const triple = try std.fmt.allocPrint(arena, "{s}-{s}-musl", .{ arch_name, os_name });
287 const o_arg = if (options.want_O3) "-O3" else "-Os";
288
289 try args.appendSlice(&[_][]const u8{
290 "-std=gnu17",
291 "-fno-trapping-math",
292 "-w", // ignore all warnings
293
294 o_arg,
295
296 "-mthread-model",
297 "single",
298
299 "-I",
300 try comp.dirs.zig_lib.join(arena, &.{
301 "libc",
302 "wasi",
303 "libc-bottom-half",
304 "cloudlibc",
305 "src",
306 }),
307
308 "-isystem",
309 try comp.dirs.zig_lib.join(arena, &.{ "libc", "include", triple }),
310 "-isystem",
311 try comp.dirs.zig_lib.join(arena, &.{ "libc", "include", "generic-musl" }),
312
313 "-DBULK_MEMORY_THRESHOLD=32",
314 });
315
316 if (options.no_strict_aliasing) {
317 try args.appendSlice(&[_][]const u8{"-fno-strict-aliasing"});
318 }
319}
320
321fn addLibcBottomHalfIncludes(
322 comp: *Compilation,
323 arena: Allocator,
324 args: *std.array_list.Managed([]const u8),
325) error{OutOfMemory}!void {
326 try args.appendSlice(&[_][]const u8{
327 "-I",
328 try comp.dirs.zig_lib.join(arena, &.{
329 "libc",
330 "wasi",
331 "libc-bottom-half",
332 "headers",
333 "private",
334 }),
335
336 "-I",
337 try comp.dirs.zig_lib.join(arena, &.{
338 "libc",
339 "wasi",
340 "libc-bottom-half",
341 "cloudlibc",
342 "src",
343 "include",
344 }),
345
346 "-I",
347 try comp.dirs.zig_lib.join(arena, &.{
348 "libc",
349 "wasi",
350 "libc-bottom-half",
351 "cloudlibc",
352 "src",
353 }),
354
355 "-I",
356 try comp.dirs.zig_lib.join(arena, &.{
357 "libc",
358 "wasi",
359 "libc-top-half",
360 "musl",
361 "src",
362 "include",
363 }),
364 "-I",
365 try comp.dirs.zig_lib.join(arena, &.{
366 "libc",
367 "musl",
368 "src",
369 "include",
370 }),
371 "-I",
372
373 try comp.dirs.zig_lib.join(arena, &.{
374 "libc",
375 "wasi",
376 "libc-top-half",
377 "musl",
378 "src",
379 "internal",
380 }),
381 "-I",
382 try comp.dirs.zig_lib.join(arena, &.{
383 "libc",
384 "musl",
385 "src",
386 "internal",
387 }),
388 });
389}
390
391fn addLibcTopHalfIncludes(
392 comp: *Compilation,
393 arena: Allocator,
394 args: *std.array_list.Managed([]const u8),
395) error{OutOfMemory}!void {
396 try args.appendSlice(&[_][]const u8{
397 "-I",
398 try comp.dirs.zig_lib.join(arena, &.{
399 "libc",
400 "wasi",
401 "libc-top-half",
402 "musl",
403 "src",
404 "include",
405 }),
406 "-I",
407 try comp.dirs.zig_lib.join(arena, &.{
408 "libc",
409 "musl",
410 "src",
411 "include",
412 }),
413
414 "-I",
415 try comp.dirs.zig_lib.join(arena, &.{
416 "libc",
417 "wasi",
418 "libc-top-half",
419 "musl",
420 "src",
421 "internal",
422 }),
423 "-I",
424 try comp.dirs.zig_lib.join(arena, &.{
425 "libc",
426 "musl",
427 "src",
428 "internal",
429 }),
430
431 "-I",
432 try comp.dirs.zig_lib.join(arena, &.{
433 "libc",
434 "wasi",
435 "libc-top-half",
436 "musl",
437 "arch",
438 "wasm32",
439 }),
440 "-I",
441 try comp.dirs.zig_lib.join(arena, &.{
442 "libc",
443 "musl",
444 "arch",
445 "generic",
446 }),
447
448 "-I",
449 try comp.dirs.zig_lib.join(arena, &.{
450 "libc",
451 "wasi",
452 "libc-top-half",
453 "headers",
454 "private",
455 }),
456 });
457}
458
459const libc_bottom_half_src_files = [_][]const u8{
460 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/closedir.c",
461 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/dirfd.c",
462 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/fdclosedir.c",
463 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/fdopendir.c",
464 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/opendirat.c",
465 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c",
466 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/rewinddir.c",
467 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/scandirat.c",
468 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/seekdir.c",
469 "wasi/libc-bottom-half/cloudlibc/src/libc/dirent/telldir.c",
470 "wasi/libc-bottom-half/cloudlibc/src/libc/errno/errno.c",
471 "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/fcntl.c",
472 "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/openat.c",
473 "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/posix_fadvise.c",
474 "wasi/libc-bottom-half/cloudlibc/src/libc/fcntl/posix_fallocate.c",
475 "wasi/libc-bottom-half/cloudlibc/src/libc/poll/poll.c",
476 "wasi/libc-bottom-half/cloudlibc/src/libc/sched/sched_yield.c",
477 "wasi/libc-bottom-half/cloudlibc/src/libc/stdio/renameat.c",
478 "wasi/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c",
479 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/ioctl/ioctl.c",
480 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/select/pselect.c",
481 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/select/select.c",
482 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/getsockopt.c",
483 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/recv.c",
484 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/send.c",
485 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/socket/shutdown.c",
486 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstatat.c",
487 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/fstat.c",
488 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/futimens.c",
489 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c",
490 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/stat/utimensat.c",
491 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/time/gettimeofday.c",
492 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/preadv.c",
493 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/pwritev.c",
494 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/readv.c",
495 "wasi/libc-bottom-half/cloudlibc/src/libc/sys/uio/writev.c",
496 "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_getres.c",
497 "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_gettime.c",
498 "wasi/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_MONOTONIC.c",
499 "wasi/libc-bottom-half/cloudlibc/src/libc/time/clock_nanosleep.c",
500 "wasi/libc-bottom-half/cloudlibc/src/libc/time/CLOCK_REALTIME.c",
501 "wasi/libc-bottom-half/cloudlibc/src/libc/time/nanosleep.c",
502 "wasi/libc-bottom-half/cloudlibc/src/libc/time/time.c",
503 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/faccessat.c",
504 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fdatasync.c",
505 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/fsync.c",
506 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/ftruncate.c",
507 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/linkat.c",
508 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/lseek.c",
509 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/pread.c",
510 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/pwrite.c",
511 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/read.c",
512 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/readlinkat.c",
513 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/sleep.c",
514 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/symlinkat.c",
515 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/unlinkat.c",
516 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/usleep.c",
517 "wasi/libc-bottom-half/cloudlibc/src/libc/unistd/write.c",
518 "wasi/libc-bottom-half/sources/abort.c",
519 "wasi/libc-bottom-half/sources/accept-wasip1.c",
520 "wasi/libc-bottom-half/sources/at_fdcwd.c",
521 "wasi/libc-bottom-half/sources/chdir.c",
522 "wasi/libc-bottom-half/sources/complex-builtins.c",
523 "wasi/libc-bottom-half/sources/environ.c",
524 "wasi/libc-bottom-half/sources/errno.c",
525 "wasi/libc-bottom-half/sources/__errno_location.c",
526 "wasi/libc-bottom-half/sources/getcwd.c",
527 "wasi/libc-bottom-half/sources/getentropy.c",
528 "wasi/libc-bottom-half/sources/isatty.c",
529 "wasi/libc-bottom-half/sources/__main_void.c",
530 "wasi/libc-bottom-half/sources/math/math-builtins.c",
531 "wasi/libc-bottom-half/sources/posix.c",
532 "wasi/libc-bottom-half/sources/preopens.c",
533 "wasi/libc-bottom-half/sources/sbrk.c",
534 "wasi/libc-bottom-half/sources/truncate.c",
535 "wasi/libc-bottom-half/sources/__wasilibc_dt.c",
536 "wasi/libc-bottom-half/sources/__wasilibc_environ.c",
537 "wasi/libc-bottom-half/sources/__wasilibc_fd_renumber.c",
538 "wasi/libc-bottom-half/sources/__wasilibc_initialize_environ.c",
539 "wasi/libc-bottom-half/sources/__wasilibc_random.c",
540 "wasi/libc-bottom-half/sources/__wasilibc_real.c",
541 "wasi/libc-bottom-half/sources/__wasilibc_rmdirat.c",
542 "wasi/libc-bottom-half/sources/__wasilibc_tell.c",
543 "wasi/libc-bottom-half/sources/__wasilibc_unlinkat.c",
544};
545
546const libc_top_half_src_files = [_][]const u8{
547 "musl/src/complex/cabs.c",
548 "musl/src/complex/cabsf.c",
549 "musl/src/complex/cabsl.c",
550 "musl/src/complex/cacos.c",
551 "musl/src/complex/cacosf.c",
552 "musl/src/complex/cacosh.c",
553 "musl/src/complex/cacoshf.c",
554 "musl/src/complex/cacoshl.c",
555 "musl/src/complex/cacosl.c",
556 "musl/src/complex/carg.c",
557 "musl/src/complex/cargf.c",
558 "musl/src/complex/cargl.c",
559 "musl/src/complex/casin.c",
560 "musl/src/complex/casinf.c",
561 "musl/src/complex/casinh.c",
562 "musl/src/complex/casinhf.c",
563 "musl/src/complex/casinhl.c",
564 "musl/src/complex/casinl.c",
565 "musl/src/complex/catan.c",
566 "musl/src/complex/catanf.c",
567 "musl/src/complex/catanh.c",
568 "musl/src/complex/catanhf.c",
569 "musl/src/complex/catanhl.c",
570 "musl/src/complex/catanl.c",
571 "musl/src/complex/ccos.c",
572 "musl/src/complex/ccosf.c",
573 "musl/src/complex/ccosh.c",
574 "musl/src/complex/ccoshf.c",
575 "musl/src/complex/ccoshl.c",
576 "musl/src/complex/ccosl.c",
577 "musl/src/complex/__cexp.c",
578 "musl/src/complex/cexp.c",
579 "musl/src/complex/__cexpf.c",
580 "musl/src/complex/cexpf.c",
581 "musl/src/complex/cexpl.c",
582 "musl/src/complex/clog.c",
583 "musl/src/complex/clogf.c",
584 "musl/src/complex/clogl.c",
585 "musl/src/complex/conj.c",
586 "musl/src/complex/conjf.c",
587 "musl/src/complex/conjl.c",
588 "musl/src/complex/cpow.c",
589 "musl/src/complex/cpowf.c",
590 "musl/src/complex/cpowl.c",
591 "musl/src/complex/cproj.c",
592 "musl/src/complex/cprojf.c",
593 "musl/src/complex/cprojl.c",
594 "musl/src/complex/csin.c",
595 "musl/src/complex/csinf.c",
596 "musl/src/complex/csinh.c",
597 "musl/src/complex/csinhf.c",
598 "musl/src/complex/csinhl.c",
599 "musl/src/complex/csinl.c",
600 "musl/src/complex/csqrt.c",
601 "musl/src/complex/csqrtf.c",
602 "musl/src/complex/csqrtl.c",
603 "musl/src/complex/ctan.c",
604 "musl/src/complex/ctanf.c",
605 "musl/src/complex/ctanh.c",
606 "musl/src/complex/ctanhf.c",
607 "musl/src/complex/ctanhl.c",
608 "musl/src/complex/ctanl.c",
609 "musl/src/conf/confstr.c",
610 "musl/src/conf/legacy.c",
611 "musl/src/conf/pathconf.c",
612 "musl/src/crypt/crypt_blowfish.c",
613 "musl/src/crypt/crypt.c",
614 "musl/src/crypt/crypt_des.c",
615 "musl/src/crypt/crypt_md5.c",
616 "musl/src/crypt/crypt_r.c",
617 "musl/src/crypt/crypt_sha256.c",
618 "musl/src/crypt/crypt_sha512.c",
619 "musl/src/crypt/encrypt.c",
620 "musl/src/ctype/__ctype_b_loc.c",
621 "musl/src/ctype/__ctype_get_mb_cur_max.c",
622 "musl/src/ctype/__ctype_tolower_loc.c",
623 "musl/src/ctype/__ctype_toupper_loc.c",
624 "musl/src/ctype/iswalnum.c",
625 "musl/src/ctype/iswalpha.c",
626 "musl/src/ctype/iswblank.c",
627 "musl/src/ctype/iswcntrl.c",
628 "musl/src/ctype/iswctype.c",
629 "musl/src/ctype/iswdigit.c",
630 "musl/src/ctype/iswgraph.c",
631 "musl/src/ctype/iswlower.c",
632 "musl/src/ctype/iswprint.c",
633 "musl/src/ctype/iswpunct.c",
634 "musl/src/ctype/iswspace.c",
635 "musl/src/ctype/iswupper.c",
636 "musl/src/ctype/iswxdigit.c",
637 "musl/src/ctype/towctrans.c",
638 "musl/src/ctype/wcswidth.c",
639 "musl/src/ctype/wctrans.c",
640 "musl/src/ctype/wcwidth.c",
641 "musl/src/env/setenv.c",
642 "musl/src/exit/assert.c",
643 "musl/src/exit/quick_exit.c",
644 "musl/src/fenv/fegetexceptflag.c",
645 "musl/src/fenv/feholdexcept.c",
646 "musl/src/fenv/fenv.c",
647 "musl/src/fenv/fesetexceptflag.c",
648 "musl/src/fenv/fesetround.c",
649 "musl/src/fenv/feupdateenv.c",
650 "musl/src/legacy/getpagesize.c",
651 "musl/src/locale/c_locale.c",
652 "musl/src/locale/duplocale.c",
653 "musl/src/locale/freelocale.c",
654 "musl/src/locale/iconv.c",
655 "musl/src/locale/iconv_close.c",
656 "musl/src/locale/langinfo.c",
657 "musl/src/locale/__lctrans.c",
658 "musl/src/locale/localeconv.c",
659 "musl/src/locale/__mo_lookup.c",
660 "musl/src/locale/pleval.c",
661 "musl/src/locale/setlocale.c",
662 "musl/src/locale/strfmon.c",
663 "musl/src/locale/strtod_l.c",
664 "musl/src/locale/wcscoll.c",
665 "musl/src/locale/wcsxfrm.c",
666 "musl/src/math/acosh.c",
667 "musl/src/math/acoshl.c",
668 "musl/src/math/acosl.c",
669 "musl/src/math/asinf.c",
670 "musl/src/math/asinh.c",
671 "musl/src/math/asinhf.c",
672 "musl/src/math/asinhl.c",
673 "musl/src/math/asinl.c",
674 "musl/src/math/atan2.c",
675 "musl/src/math/atan2f.c",
676 "musl/src/math/atan2l.c",
677 "musl/src/math/atanh.c",
678 "musl/src/math/atanhf.c",
679 "musl/src/math/atanhl.c",
680 "musl/src/math/cbrtl.c",
681 "musl/src/math/__cos.c",
682 "musl/src/math/__cosdf.c",
683 "musl/src/math/coshl.c",
684 "musl/src/math/erf.c",
685 "musl/src/math/erff.c",
686 "musl/src/math/erfl.c",
687 "musl/src/math/exp10l.c",
688 "musl/src/math/exp2f_data.c",
689 "musl/src/math/exp2l.c",
690 "musl/src/math/exp_data.c",
691 "musl/src/math/expl.c",
692 "musl/src/math/expm1.c",
693 "musl/src/math/expm1f.c",
694 "musl/src/math/expm1l.c",
695 "musl/src/math/fma.c",
696 "musl/src/math/fmaf.c",
697 "musl/src/math/ilogb.c",
698 "musl/src/math/ilogbf.c",
699 "musl/src/math/ilogbl.c",
700 "musl/src/math/__invtrigl.c",
701 "musl/src/math/j0.c",
702 "musl/src/math/j0f.c",
703 "musl/src/math/j1.c",
704 "musl/src/math/j1f.c",
705 "musl/src/math/jn.c",
706 "musl/src/math/jnf.c",
707 "musl/src/math/ldexp.c",
708 "musl/src/math/ldexpf.c",
709 "musl/src/math/ldexpl.c",
710 "musl/src/math/lgamma.c",
711 "musl/src/math/lgammaf.c",
712 "musl/src/math/lgammaf_r.c",
713 "musl/src/math/lgammal.c",
714 "musl/src/math/lgamma_r.c",
715 "musl/src/math/llrint.c",
716 "musl/src/math/llrintf.c",
717 "musl/src/math/llrintl.c",
718 "musl/src/math/llround.c",
719 "musl/src/math/llroundf.c",
720 "musl/src/math/llroundl.c",
721 "musl/src/math/log10l.c",
722 "musl/src/math/log1pl.c",
723 "musl/src/math/log2l.c",
724 "musl/src/math/logb.c",
725 "musl/src/math/logbf.c",
726 "musl/src/math/logbl.c",
727 "musl/src/math/logl.c",
728 "musl/src/math/__math_divzero.c",
729 "musl/src/math/__math_divzerof.c",
730 "musl/src/math/__math_invalid.c",
731 "musl/src/math/__math_invalidf.c",
732 "musl/src/math/__math_invalidl.c",
733 "musl/src/math/__math_oflow.c",
734 "musl/src/math/__math_oflowf.c",
735 "musl/src/math/__math_uflow.c",
736 "musl/src/math/__math_uflowf.c",
737 "musl/src/math/__math_xflow.c",
738 "musl/src/math/__math_xflowf.c",
739 "musl/src/math/nearbyintl.c",
740 "musl/src/math/nextafter.c",
741 "musl/src/math/nextafterf.c",
742 "musl/src/math/nextafterl.c",
743 "musl/src/math/nexttoward.c",
744 "musl/src/math/nexttowardf.c",
745 "musl/src/math/nexttowardl.c",
746 "musl/src/math/__polevll.c",
747 "musl/src/math/pow.c",
748 "musl/src/math/pow_data.c",
749 "musl/src/math/powf.c",
750 "musl/src/math/powf_data.c",
751 "musl/src/math/remainder.c",
752 "musl/src/math/remainderf.c",
753 "musl/src/math/remainderl.c",
754 "musl/src/math/__rem_pio2_large.c",
755 "musl/src/math/remquo.c",
756 "musl/src/math/remquof.c",
757 "musl/src/math/remquol.c",
758 "musl/src/math/scalb.c",
759 "musl/src/math/scalbf.c",
760 "musl/src/math/scalbln.c",
761 "musl/src/math/scalblnf.c",
762 "musl/src/math/scalblnl.c",
763 "musl/src/math/scalbn.c",
764 "musl/src/math/scalbnf.c",
765 "musl/src/math/scalbnl.c",
766 "musl/src/math/signgam.c",
767 "musl/src/math/significand.c",
768 "musl/src/math/significandf.c",
769 "musl/src/math/__sin.c",
770 "musl/src/math/__sindf.c",
771 "musl/src/math/sinhl.c",
772 "musl/src/math/__tan.c",
773 "musl/src/math/__tandf.c",
774 "musl/src/math/tanhl.c",
775 "musl/src/math/tgamma.c",
776 "musl/src/math/tgammaf.c",
777 "musl/src/math/tgammal.c",
778 "musl/src/misc/a64l.c",
779 "musl/src/misc/basename.c",
780 "musl/src/misc/dirname.c",
781 "musl/src/misc/getdomainname.c",
782 "musl/src/misc/gethostid.c",
783 "musl/src/misc/getopt.c",
784 "musl/src/misc/getopt_long.c",
785 "musl/src/misc/getsubopt.c",
786 "musl/src/misc/realpath.c",
787 "musl/src/multibyte/btowc.c",
788 "musl/src/multibyte/c16rtomb.c",
789 "musl/src/multibyte/c32rtomb.c",
790 "musl/src/multibyte/internal.c",
791 "musl/src/multibyte/mblen.c",
792 "musl/src/multibyte/mbrlen.c",
793 "musl/src/multibyte/mbrtoc16.c",
794 "musl/src/multibyte/mbrtoc32.c",
795 "musl/src/multibyte/mbrtowc.c",
796 "musl/src/multibyte/mbsinit.c",
797 "musl/src/multibyte/mbsnrtowcs.c",
798 "musl/src/multibyte/mbsrtowcs.c",
799 "musl/src/multibyte/mbstowcs.c",
800 "musl/src/multibyte/mbtowc.c",
801 "musl/src/multibyte/wcrtomb.c",
802 "musl/src/multibyte/wcsnrtombs.c",
803 "musl/src/multibyte/wcsrtombs.c",
804 "musl/src/multibyte/wcstombs.c",
805 "musl/src/multibyte/wctob.c",
806 "musl/src/multibyte/wctomb.c",
807 "musl/src/network/htonl.c",
808 "musl/src/network/htons.c",
809 "musl/src/network/in6addr_any.c",
810 "musl/src/network/in6addr_loopback.c",
811 "musl/src/network/inet_aton.c",
812 "musl/src/network/inet_ntop.c",
813 "musl/src/network/inet_pton.c",
814 "musl/src/network/ntohl.c",
815 "musl/src/network/ntohs.c",
816 "musl/src/regex/fnmatch.c",
817 "musl/src/regex/regerror.c",
818 "musl/src/search/hsearch.c",
819 "musl/src/search/lsearch.c",
820 "musl/src/search/tdelete.c",
821 "musl/src/search/tdestroy.c",
822 "musl/src/search/tfind.c",
823 "musl/src/search/tsearch.c",
824 "musl/src/search/twalk.c",
825 "musl/src/stdio/asprintf.c",
826 "musl/src/stdio/clearerr.c",
827 "musl/src/stdio/dprintf.c",
828 "musl/src/stdio/ext2.c",
829 "musl/src/stdio/ext.c",
830 "musl/src/stdio/fclose.c",
831 "musl/src/stdio/__fclose_ca.c",
832 "musl/src/stdio/feof.c",
833 "musl/src/stdio/ferror.c",
834 "musl/src/stdio/fflush.c",
835 "musl/src/stdio/fgetln.c",
836 "musl/src/stdio/fgets.c",
837 "musl/src/stdio/fgetwc.c",
838 "musl/src/stdio/fgetws.c",
839 "musl/src/stdio/fileno.c",
840 "musl/src/stdio/__fmodeflags.c",
841 "musl/src/stdio/fopencookie.c",
842 "musl/src/stdio/fprintf.c",
843 "musl/src/stdio/fputs.c",
844 "musl/src/stdio/fputwc.c",
845 "musl/src/stdio/fputws.c",
846 "musl/src/stdio/fread.c",
847 "musl/src/stdio/fscanf.c",
848 "musl/src/stdio/fwide.c",
849 "musl/src/stdio/fwprintf.c",
850 "musl/src/stdio/fwrite.c",
851 "musl/src/stdio/fwscanf.c",
852 "musl/src/stdio/getchar_unlocked.c",
853 "musl/src/stdio/getc_unlocked.c",
854 "musl/src/stdio/getdelim.c",
855 "musl/src/stdio/getline.c",
856 "musl/src/stdio/getw.c",
857 "musl/src/stdio/getwc.c",
858 "musl/src/stdio/getwchar.c",
859 "musl/src/stdio/ofl_add.c",
860 "musl/src/stdio/__overflow.c",
861 "musl/src/stdio/perror.c",
862 "musl/src/stdio/putchar_unlocked.c",
863 "musl/src/stdio/putc_unlocked.c",
864 "musl/src/stdio/puts.c",
865 "musl/src/stdio/putw.c",
866 "musl/src/stdio/putwc.c",
867 "musl/src/stdio/putwchar.c",
868 "musl/src/stdio/rewind.c",
869 "musl/src/stdio/scanf.c",
870 "musl/src/stdio/setbuf.c",
871 "musl/src/stdio/setbuffer.c",
872 "musl/src/stdio/setlinebuf.c",
873 "musl/src/stdio/setvbuf.c",
874 "musl/src/stdio/snprintf.c",
875 "musl/src/stdio/sprintf.c",
876 "musl/src/stdio/sscanf.c",
877 "musl/src/stdio/__stdio_exit.c",
878 "musl/src/stdio/swprintf.c",
879 "musl/src/stdio/swscanf.c",
880 "musl/src/stdio/__toread.c",
881 "musl/src/stdio/__towrite.c",
882 "musl/src/stdio/__uflow.c",
883 "musl/src/stdio/ungetc.c",
884 "musl/src/stdio/ungetwc.c",
885 "musl/src/stdio/vasprintf.c",
886 "musl/src/stdio/vfwscanf.c",
887 "musl/src/stdio/vprintf.c",
888 "musl/src/stdio/vscanf.c",
889 "musl/src/stdio/vsprintf.c",
890 "musl/src/stdio/vwprintf.c",
891 "musl/src/stdio/vwscanf.c",
892 "musl/src/stdio/wprintf.c",
893 "musl/src/stdio/wscanf.c",
894 "musl/src/stdlib/atof.c",
895 "musl/src/stdlib/ecvt.c",
896 "musl/src/stdlib/fcvt.c",
897 "musl/src/stdlib/gcvt.c",
898 "musl/src/string/strerror_r.c",
899 "musl/src/string/strverscmp.c",
900 "musl/src/string/wcscasecmp.c",
901 "musl/src/string/wcscasecmp_l.c",
902 "musl/src/string/wcsncasecmp.c",
903 "musl/src/string/wcsncasecmp_l.c",
904 "musl/src/thread/default_attr.c",
905 "musl/src/thread/pthread_attr_destroy.c",
906 "musl/src/thread/pthread_attr_init.c",
907 "musl/src/thread/pthread_attr_setdetachstate.c",
908 "musl/src/thread/pthread_attr_setstack.c",
909 "musl/src/thread/pthread_attr_setstacksize.c",
910 "musl/src/thread/pthread_barrierattr_destroy.c",
911 "musl/src/thread/pthread_barrierattr_init.c",
912 "musl/src/thread/pthread_barrierattr_setpshared.c",
913 "musl/src/thread/pthread_cleanup_push.c",
914 "musl/src/thread/pthread_condattr_destroy.c",
915 "musl/src/thread/pthread_condattr_init.c",
916 "musl/src/thread/pthread_condattr_setpshared.c",
917 "musl/src/thread/pthread_equal.c",
918 "musl/src/thread/pthread_getspecific.c",
919 "musl/src/thread/pthread_mutexattr_destroy.c",
920 "musl/src/thread/pthread_mutexattr_init.c",
921 "musl/src/thread/pthread_mutexattr_setpshared.c",
922 "musl/src/thread/pthread_mutexattr_settype.c",
923 "musl/src/thread/pthread_mutex_init.c",
924 "musl/src/thread/pthread_rwlockattr_destroy.c",
925 "musl/src/thread/pthread_rwlockattr_init.c",
926 "musl/src/thread/pthread_rwlockattr_setpshared.c",
927 "musl/src/thread/pthread_rwlock_destroy.c",
928 "musl/src/thread/pthread_rwlock_init.c",
929 "musl/src/thread/pthread_setcancelstate.c",
930 "musl/src/thread/pthread_setcanceltype.c",
931 "musl/src/thread/pthread_setspecific.c",
932 "musl/src/thread/pthread_testcancel.c",
933 "musl/src/thread/thrd_sleep.c",
934 "musl/src/time/asctime.c",
935 "musl/src/time/asctime_r.c",
936 "musl/src/time/ctime.c",
937 "musl/src/time/ctime_r.c",
938 "musl/src/time/difftime.c",
939 "musl/src/time/ftime.c",
940 "musl/src/time/__month_to_secs.c",
941 "musl/src/time/strptime.c",
942 "musl/src/time/timespec_get.c",
943 "musl/src/time/__year_to_secs.c",
944
945 "wasi/libc-top-half/musl/src/conf/fpathconf.c",
946 "wasi/libc-top-half/musl/src/conf/sysconf.c",
947 "wasi/libc-top-half/musl/src/dirent/alphasort.c",
948 "wasi/libc-top-half/musl/src/dirent/versionsort.c",
949 "wasi/libc-top-half/musl/src/env/clearenv.c",
950 "wasi/libc-top-half/musl/src/env/getenv.c",
951 "wasi/libc-top-half/musl/src/env/putenv.c",
952 "wasi/libc-top-half/musl/src/env/__stack_chk_fail.c",
953 "wasi/libc-top-half/musl/src/env/unsetenv.c",
954 "wasi/libc-top-half/musl/src/errno/strerror.c",
955 "wasi/libc-top-half/musl/src/exit/atexit.c",
956 "wasi/libc-top-half/musl/src/exit/at_quick_exit.c",
957 "wasi/libc-top-half/musl/src/exit/exit.c",
958 "wasi/libc-top-half/musl/src/fcntl/creat.c",
959 "wasi/libc-top-half/musl/src/internal/defsysinfo.c",
960 "wasi/libc-top-half/musl/src/internal/floatscan.c",
961 "wasi/libc-top-half/musl/src/internal/intscan.c",
962 "wasi/libc-top-half/musl/src/internal/libc.c",
963 "wasi/libc-top-half/musl/src/internal/shgetc.c",
964 "wasi/libc-top-half/musl/src/locale/catclose.c",
965 "wasi/libc-top-half/musl/src/locale/catgets.c",
966 "wasi/libc-top-half/musl/src/locale/catopen.c",
967 "wasi/libc-top-half/musl/src/locale/locale_map.c",
968 "wasi/libc-top-half/musl/src/locale/newlocale.c",
969 "wasi/libc-top-half/musl/src/locale/uselocale.c",
970 "wasi/libc-top-half/musl/src/math/__expo2.c",
971 "wasi/libc-top-half/musl/src/math/__expo2f.c",
972 "wasi/libc-top-half/musl/src/math/fmal.c",
973 "wasi/libc-top-half/musl/src/math/powl.c",
974 "wasi/libc-top-half/musl/src/math/__rem_pio2.c",
975 "wasi/libc-top-half/musl/src/math/__rem_pio2f.c",
976 "wasi/libc-top-half/musl/src/math/__rem_pio2l.c",
977 "wasi/libc-top-half/musl/src/math/sinh.c",
978 "wasi/libc-top-half/musl/src/math/sinhf.c",
979 "wasi/libc-top-half/musl/src/misc/fmtmsg.c",
980 "wasi/libc-top-half/musl/src/misc/nftw.c",
981 "wasi/libc-top-half/musl/src/prng/random.c",
982 "wasi/libc-top-half/musl/src/regex/glob.c",
983 "wasi/libc-top-half/musl/src/regex/regcomp.c",
984 "wasi/libc-top-half/musl/src/regex/regexec.c",
985 "wasi/libc-top-half/musl/src/regex/tre-mem.c",
986 "wasi/libc-top-half/musl/src/stat/futimesat.c",
987 "wasi/libc-top-half/musl/src/stdio/__fdopen.c",
988 "wasi/libc-top-half/musl/src/stdio/fgetc.c",
989 "wasi/libc-top-half/musl/src/stdio/fgetpos.c",
990 "wasi/libc-top-half/musl/src/stdio/fmemopen.c",
991 "wasi/libc-top-half/musl/src/stdio/fopen.c",
992 "wasi/libc-top-half/musl/src/stdio/__fopen_rb_ca.c",
993 "wasi/libc-top-half/musl/src/stdio/fputc.c",
994 "wasi/libc-top-half/musl/src/stdio/freopen.c",
995 "wasi/libc-top-half/musl/src/stdio/fseek.c",
996 "wasi/libc-top-half/musl/src/stdio/fsetpos.c",
997 "wasi/libc-top-half/musl/src/stdio/ftell.c",
998 "wasi/libc-top-half/musl/src/stdio/getc.c",
999 "wasi/libc-top-half/musl/src/stdio/getchar.c",
1000 "wasi/libc-top-half/musl/src/stdio/ofl.c",
1001 "wasi/libc-top-half/musl/src/stdio/open_memstream.c",
1002 "wasi/libc-top-half/musl/src/stdio/open_wmemstream.c",
1003 "wasi/libc-top-half/musl/src/stdio/printf.c",
1004 "wasi/libc-top-half/musl/src/stdio/putc.c",
1005 "wasi/libc-top-half/musl/src/stdio/putchar.c",
1006 "wasi/libc-top-half/musl/src/stdio/stderr.c",
1007 "wasi/libc-top-half/musl/src/stdio/stdin.c",
1008 "wasi/libc-top-half/musl/src/stdio/__stdio_close.c",
1009 "wasi/libc-top-half/musl/src/stdio/__stdio_read.c",
1010 "wasi/libc-top-half/musl/src/stdio/__stdio_seek.c",
1011 "wasi/libc-top-half/musl/src/stdio/__stdio_write.c",
1012 "wasi/libc-top-half/musl/src/stdio/stdout.c",
1013 "wasi/libc-top-half/musl/src/stdio/__stdout_write.c",
1014 "wasi/libc-top-half/musl/src/stdio/vdprintf.c",
1015 "wasi/libc-top-half/musl/src/stdio/vfprintf.c",
1016 "wasi/libc-top-half/musl/src/stdio/vfscanf.c",
1017 "wasi/libc-top-half/musl/src/stdio/vfwprintf.c",
1018 "wasi/libc-top-half/musl/src/stdio/vsnprintf.c",
1019 "wasi/libc-top-half/musl/src/stdio/vsscanf.c",
1020 "wasi/libc-top-half/musl/src/stdio/vswprintf.c",
1021 "wasi/libc-top-half/musl/src/stdio/vswscanf.c",
1022 "wasi/libc-top-half/musl/src/stdlib/strtod.c",
1023 "wasi/libc-top-half/musl/src/stdlib/wcstod.c",
1024 "wasi/libc-top-half/musl/src/stdlib/wcstol.c",
1025 "wasi/libc-top-half/musl/src/thread/pthread_attr_get.c",
1026 "wasi/libc-top-half/musl/src/thread/pthread_attr_setguardsize.c",
1027 "wasi/libc-top-half/musl/src/thread/pthread_attr_setschedparam.c",
1028 "wasi/libc-top-half/musl/src/thread/pthread_cancel.c",
1029 "wasi/libc-top-half/musl/src/thread/pthread_condattr_setclock.c",
1030 "wasi/libc-top-half/musl/src/thread/pthread_key_create.c",
1031 "wasi/libc-top-half/musl/src/thread/pthread_mutexattr_setprotocol.c",
1032 "wasi/libc-top-half/musl/src/thread/pthread_mutexattr_setrobust.c",
1033 "wasi/libc-top-half/musl/src/thread/pthread_mutex_destroy.c",
1034 "wasi/libc-top-half/musl/src/thread/pthread_self.c",
1035 "wasi/libc-top-half/musl/src/time/getdate.c",
1036 "wasi/libc-top-half/musl/src/time/gmtime.c",
1037 "wasi/libc-top-half/musl/src/time/gmtime_r.c",
1038 "wasi/libc-top-half/musl/src/time/localtime.c",
1039 "wasi/libc-top-half/musl/src/time/localtime_r.c",
1040 "wasi/libc-top-half/musl/src/time/mktime.c",
1041 "wasi/libc-top-half/musl/src/time/__secs_to_tm.c",
1042 "wasi/libc-top-half/musl/src/time/strftime.c",
1043 "wasi/libc-top-half/musl/src/time/timegm.c",
1044 "wasi/libc-top-half/musl/src/time/__tm_to_secs.c",
1045 "wasi/libc-top-half/musl/src/time/__tz.c",
1046 "wasi/libc-top-half/musl/src/time/wcsftime.c",
1047
1048 "wasi/libc-top-half/sources/arc4random.c",
1049
1050 "wasi/thread-stub/pthread_barrier_destroy.c",
1051 "wasi/thread-stub/pthread_barrier_init.c",
1052 "wasi/thread-stub/pthread_barrier_wait.c",
1053 "wasi/thread-stub/pthread_cond_broadcast.c",
1054 "wasi/thread-stub/pthread_cond_destroy.c",
1055 "wasi/thread-stub/pthread_cond_init.c",
1056 "wasi/thread-stub/pthread_cond_signal.c",
1057 "wasi/thread-stub/pthread_cond_timedwait.c",
1058 "wasi/thread-stub/pthread_cond_wait.c",
1059 "wasi/thread-stub/pthread_create.c",
1060 "wasi/thread-stub/pthread_detach.c",
1061 "wasi/thread-stub/pthread_getattr_np.c",
1062 "wasi/thread-stub/pthread_join.c",
1063 "wasi/thread-stub/pthread_mutex_consistent.c",
1064 "wasi/thread-stub/pthread_mutex_getprioceiling.c",
1065 "wasi/thread-stub/pthread_mutex_lock.c",
1066 "wasi/thread-stub/pthread_mutex_timedlock.c",
1067 "wasi/thread-stub/pthread_mutex_trylock.c",
1068 "wasi/thread-stub/pthread_mutex_unlock.c",
1069 "wasi/thread-stub/pthread_once.c",
1070 "wasi/thread-stub/pthread_rwlock_rdlock.c",
1071 "wasi/thread-stub/pthread_rwlock_timedrdlock.c",
1072 "wasi/thread-stub/pthread_rwlock_timedwrlock.c",
1073 "wasi/thread-stub/pthread_rwlock_tryrdlock.c",
1074 "wasi/thread-stub/pthread_rwlock_trywrlock.c",
1075 "wasi/thread-stub/pthread_rwlock_unlock.c",
1076 "wasi/thread-stub/pthread_rwlock_wrlock.c",
1077};
1078
1079const crt1_command_src_file = "wasi/libc-bottom-half/crt/crt1-command.c";
1080const crt1_reactor_src_file = "wasi/libc-bottom-half/crt/crt1-reactor.c";
1081
1082const fts_src_files = &[_][]const u8{
1083 "wasi/fts/musl-fts/fts.c",
1084};
1085
1086const setjmp_src_files = &[_][]const u8{
1087 "wasi/libc-top-half/musl/src/setjmp/wasm32/rt.c",
1088};
1089
1090const emulated_dl_src_files = &[_][]const u8{
1091 "wasi/libc-top-half/musl/src/misc/dl.c",
1092};
1093
1094const emulated_process_clocks_src_files = &[_][]const u8{
1095 "wasi/libc-bottom-half/clocks/clock.c",
1096 "wasi/libc-bottom-half/clocks/getrusage.c",
1097 "wasi/libc-bottom-half/clocks/times.c",
1098};
1099
1100const emulated_getpid_src_files = &[_][]const u8{
1101 "wasi/libc-bottom-half/getpid/getpid.c",
1102};
1103
1104const emulated_mman_src_files = &[_][]const u8{
1105 "wasi/libc-bottom-half/mman/mman.c",
1106};
1107
1108const emulated_signal_bottom_half_src_files = &[_][]const u8{
1109 "wasi/libc-bottom-half/signal/signal.c",
1110};
1111
1112const emulated_signal_top_half_src_files = &[_][]const u8{
1113 "musl/src/signal/psignal.c",
1114 "musl/src/string/strsignal.c",
1115};