| author | |
| committer | |
| log | 4f652fb4e36c7f2791bb4c7fb1909a897a662c3b |
| tree | 056163215715c5551f6463f8feb115d2d2dc3e71 |
| parent | 9d3e9054a7a154730261d5fae96631cc04bdef93 |
| signature |
* and remove their musl/wasi implementation7 files changed, 45 insertions(+), 41 deletions(-)
lib/c.zig+2| ... | @@ -25,6 +25,8 @@ comptime { | ... | @@ -25,6 +25,8 @@ comptime { |
| 25 | _ = @import("c/strings.zig"); | 25 | _ = @import("c/strings.zig"); |
| 26 | _ = @import("c/wchar.zig"); | 26 | _ = @import("c/wchar.zig"); |
| 27 | 27 | ||
| 28 | _ = @import("c/sys.zig"); | ||
| 29 | |||
| 28 | if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) { | 30 | if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) { |
| 29 | // Files specific to musl and wasi-libc. | 31 | // Files specific to musl and wasi-libc. |
| 30 | } | 32 | } |
lib/c/sys.zig created+3| ... | @@ -0,0 +1,3 @@ | ||
| 1 | comptime { | ||
| 2 | _ = @import("sys/utsname.zig"); | ||
| 3 | } | ||
lib/c/sys/utsname.zig created+40| ... | @@ -0,0 +1,40 @@ | ||
| 1 | const std = @import("std"); | ||
| 2 | const common = @import("../common.zig"); | ||
| 3 | const builtin = @import("builtin"); | ||
| 4 | |||
| 5 | comptime { | ||
| 6 | if (builtin.target.isMuslLibC()) { | ||
| 7 | @export(&unameLinux, .{ .name = "uname", .linkage = common.linkage, .visibility = common.visibility }); | ||
| 8 | } | ||
| 9 | |||
| 10 | if (builtin.target.isWasiLibC()) { | ||
| 11 | @export(&unameWasi, .{ .name = "uname", .linkage = common.linkage, .visibility = common.visibility }); | ||
| 12 | } | ||
| 13 | } | ||
| 14 | |||
| 15 | fn unameLinux(uts: *std.os.linux.utsname) callconv(.c) c_int { | ||
| 16 | const linux = std.os.linux; | ||
| 17 | |||
| 18 | return switch (linux.errno(linux.uname(uts))) { | ||
| 19 | .SUCCESS => 0, | ||
| 20 | else => |err| blk: { | ||
| 21 | std.c._errno().* = @intFromEnum(err); | ||
| 22 | break :blk -1; | ||
| 23 | }, | ||
| 24 | }; | ||
| 25 | } | ||
| 26 | |||
| 27 | fn unameWasi(uts: *std.c.utsname) callconv(.c) c_int { | ||
| 28 | // note the @bitCast's for NUL termination! | ||
| 29 | uts.sysname[0..5].* = @bitCast("wasi".*); | ||
| 30 | uts.nodename[0..7].* = @bitCast("(none)".*); | ||
| 31 | uts.release[0..6].* = @bitCast("0.0.0".*); | ||
| 32 | uts.version[0..6].* = @bitCast("0.0.0".*); | ||
| 33 | uts.machine[0..7].* = @bitCast(switch (builtin.target.cpu.arch) { | ||
| 34 | .wasm32 => "wasm32", | ||
| 35 | .wasm64 => "wasm64", | ||
| 36 | else => comptime unreachable, | ||
| 37 | }.*); | ||
| 38 | uts.domainname[0..7].* = @bitCast("(none)".*); | ||
| 39 | return 0; | ||
| 40 | } | ||
lib/libc/musl/src/misc/uname.c deleted-7| ... | @@ -1,7 +0,0 @@ | ||
| 1 | #include <sys/utsname.h> | ||
| 2 | #include "syscall.h" | ||
| 3 | |||
| 4 | int uname(struct utsname *uts) | ||
| 5 | { | ||
| 6 | 	return syscall(SYS_uname, uts); | ||
| 7 | } | ||
lib/libc/wasi/libc-top-half/musl/src/misc/uname.c deleted-32| ... | @@ -1,32 +0,0 @@ | ||
| 1 | #include <sys/utsname.h> | ||
| 2 | #ifdef __wasilibc_unmodified_upstream // Implement uname with placeholders | ||
| 3 | #include "syscall.h" | ||
| 4 | #else | ||
| 5 | #include <string.h> | ||
| 6 | #endif | ||
| 7 | |||
| 8 | int uname(struct utsname *uts) | ||
| 9 | { | ||
| 10 | #ifdef __wasilibc_unmodified_upstream // Implement uname with placeholders | ||
| 11 | 	return syscall(SYS_uname, uts); | ||
| 12 | #else | ||
| 13 | 	// Just fill in the fields with placeholder values. | ||
| 14 | 	strcpy(uts->sysname, "wasi"); | ||
| 15 | 	strcpy(uts->nodename, "(none)"); | ||
| 16 | 	strcpy(uts->release, "0.0.0"); | ||
| 17 | 	strcpy(uts->version, "0.0.0"); | ||
| 18 | #if defined(__wasm32__) | ||
| 19 | 	strcpy(uts->machine, "wasm32"); | ||
| 20 | #elif defined(__wasm64__) | ||
| 21 | 	strcpy(uts->machine, "wasm64"); | ||
| 22 | #else | ||
| 23 | 	strcpy(uts->machine, "unknown"); | ||
| 24 | #endif | ||
| 25 | #ifdef _GNU_SOURCE | ||
| 26 | 	strcpy(uts->domainname, "(none)"); | ||
| 27 | #else | ||
| 28 | 	strcpy(uts->__domainname, "(none)"); | ||
| 29 | #endif | ||
| 30 | 	return 0; | ||
| 31 | #endif | ||
| 32 | } | ||
src/libs/musl.zig-1| ... | @@ -1156,7 +1156,6 @@ const src_files = [_][]const u8{ | ... | @@ -1156,7 +1156,6 @@ const src_files = [_][]const u8{ |
| 1156 | "musl/src/misc/setrlimit.c", | 1156 | "musl/src/misc/setrlimit.c", |
| 1157 | "musl/src/misc/syscall.c", | 1157 | "musl/src/misc/syscall.c", |
| 1158 | "musl/src/misc/syslog.c", | 1158 | "musl/src/misc/syslog.c", |
| 1159 | "musl/src/misc/uname.c", | ||
| 1160 | "musl/src/misc/wordexp.c", | 1159 | "musl/src/misc/wordexp.c", |
| 1161 | "musl/src/mman/madvise.c", | 1160 | "musl/src/mman/madvise.c", |
| 1162 | "musl/src/mman/mincore.c", | 1161 | "musl/src/mman/mincore.c", |
src/libs/wasi_libc.zig-1| ... | @@ -1054,7 +1054,6 @@ const libc_top_half_src_files = [_][]const u8{ | ... | @@ -1054,7 +1054,6 @@ const libc_top_half_src_files = [_][]const u8{ |
| 1054 | "wasi/libc-top-half/musl/src/math/sinhf.c", | 1054 | "wasi/libc-top-half/musl/src/math/sinhf.c", |
| 1055 | "wasi/libc-top-half/musl/src/misc/fmtmsg.c", | 1055 | "wasi/libc-top-half/musl/src/misc/fmtmsg.c", |
| 1056 | "wasi/libc-top-half/musl/src/misc/nftw.c", | 1056 | "wasi/libc-top-half/musl/src/misc/nftw.c", |
| 1057 | "wasi/libc-top-half/musl/src/misc/uname.c", | ||
| 1058 | "wasi/libc-top-half/musl/src/prng/random.c", | 1057 | "wasi/libc-top-half/musl/src/prng/random.c", |
| 1059 | "wasi/libc-top-half/musl/src/regex/glob.c", | 1058 | "wasi/libc-top-half/musl/src/regex/glob.c", |
| 1060 | "wasi/libc-top-half/musl/src/regex/regcomp.c", | 1059 | "wasi/libc-top-half/musl/src/regex/regcomp.c", |