diff --git a/lib/c.zig b/lib/c.zig index 156f471573..39684264ce 100644 --- a/lib/c.zig +++ b/lib/c.zig @@ -17,6 +17,7 @@ comptime { if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) { // Files specific to musl and wasi-libc. _ = @import("c/string.zig"); + _ = @import("c/strings.zig"); } if (builtin.target.isMuslLibC()) { diff --git a/lib/c/strings.zig b/lib/c/strings.zig new file mode 100644 index 0000000000..30e945e7b1 --- /dev/null +++ b/lib/c/strings.zig @@ -0,0 +1,19 @@ +const std = @import("std"); +const common = @import("common.zig"); + +comptime { + @export(&bzero, .{ .name = "bzero", .linkage = common.linkage, .visibility = common.visibility }); +} + +fn bzero(s: *anyopaque, n: usize) callconv(.c) void { + const s_cast: [*]u8 = @ptrCast(s); + @memset(s_cast[0..n], 0); +} + +test bzero { + var array: [10]u8 = [_]u8{ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }; + var a = std.mem.zeroes([array.len]u8); + a[9] = '0'; + bzero(&array[0], 9); + try std.testing.expect(std.mem.eql(u8, &array, &a)); +} diff --git a/lib/libc/musl/src/string/bzero.c b/lib/libc/musl/src/string/bzero.c deleted file mode 100644 index ba536b07e9..0000000000 --- a/lib/libc/musl/src/string/bzero.c +++ /dev/null @@ -1,8 +0,0 @@ -#define _BSD_SOURCE -#include -#include - -void bzero(void *s, size_t n) -{ - memset(s, 0, n); -} diff --git a/src/musl.zig b/src/musl.zig index 71b01aee34..6903544fb3 100644 --- a/src/musl.zig +++ b/src/musl.zig @@ -1840,7 +1840,6 @@ const src_files = [_][]const u8{ "musl/src/string/arm/__aeabi_memset.s", "musl/src/string/bcmp.c", "musl/src/string/bcopy.c", - "musl/src/string/bzero.c", "musl/src/string/explicit_bzero.c", "musl/src/string/i386/memset.s", "musl/src/string/index.c", diff --git a/src/wasi_libc.zig b/src/wasi_libc.zig index bf6e13e556..abd9972aeb 100644 --- a/src/wasi_libc.zig +++ b/src/wasi_libc.zig @@ -1044,7 +1044,6 @@ const libc_top_half_src_files = [_][]const u8{ "musl/src/stdlib/qsort_nr.c", "musl/src/string/bcmp.c", "musl/src/string/bcopy.c", - "musl/src/string/bzero.c", "musl/src/string/explicit_bzero.c", "musl/src/string/index.c", "musl/src/string/memccpy.c",