diff --git a/lib/include/zig.h b/lib/include/zig.h index 4ac6537188..0d9e1ab3c2 100644 --- a/lib/include/zig.h +++ b/lib/include/zig.h @@ -3,6 +3,7 @@ #define __STDC_WANT_IEC_60559_TYPES_EXT__ #include #include +#include #include #if defined(__has_builtin) diff --git a/lib/std/start.zig b/lib/std/start.zig index cc8a92d7b6..14903b0bc9 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -506,7 +506,7 @@ fn main(c_argc: c_int, c_argv: [*c][*c]u8, c_envp: [*c][*c]u8) callconv(.C) c_in } fn mainWithoutEnv(c_argc: c_int, c_argv: [*c][*c]u8) callconv(.C) c_int { - std.os.argv = c_argv[0..@intCast(usize, c_argc)]; + std.os.argv = @ptrCast([*][*:0]u8, c_argv)[0..@intCast(usize, c_argc)]; return @call(.{ .modifier = .always_inline }, callMain, .{}); } diff --git a/src/test.zig b/src/test.zig index 0c1ee4c9ec..41e5f23025 100644 --- a/src/test.zig +++ b/src/test.zig @@ -791,6 +791,7 @@ pub const TestContext = struct { .updates = std.ArrayList(Update).init(ctx.cases.allocator), .output_mode = .Exe, .files = std.ArrayList(File).init(ctx.arena), + .link_libc = true, }) catch @panic("out of memory"); return &ctx.cases.items[ctx.cases.items.len - 1]; } diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig index d22fdea866..479f3f781b 100644 --- a/test/stage2/cbe.zig +++ b/test/stage2/cbe.zig @@ -951,7 +951,7 @@ pub fn addCases(ctx: *TestContext) !void { ctx.h("simple header", linux_x64, \\export fn start() void{} , - \\ZIG_EXTERN_C void start(void); + \\zig_extern_c zig_void start(zig_void); \\ ); ctx.h("header with single param function", linux_x64, @@ -959,7 +959,7 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = a; \\} , - \\ZIG_EXTERN_C void start(uint8_t a0); + \\zig_extern_c zig_void start(zig_u8 const a0); \\ ); ctx.h("header with multiple param function", linux_x64, @@ -967,25 +967,25 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = a; _ = b; _ = c; \\} , - \\ZIG_EXTERN_C void start(uint8_t a0, uint8_t a1, uint8_t a2); + \\zig_extern_c zig_void start(zig_u8 const a0, zig_u8 const a1, zig_u8 const a2); \\ ); ctx.h("header with u32 param function", linux_x64, \\export fn start(a: u32) void{ _ = a; } , - \\ZIG_EXTERN_C void start(uint32_t a0); + \\zig_extern_c zig_void start(zig_u32 const a0); \\ ); ctx.h("header with usize param function", linux_x64, \\export fn start(a: usize) void{ _ = a; } , - \\ZIG_EXTERN_C void start(uintptr_t a0); + \\zig_extern_c zig_void start(zig_usize const a0); \\ ); ctx.h("header with bool param function", linux_x64, \\export fn start(a: bool) void{_ = a;} , - \\ZIG_EXTERN_C void start(bool a0); + \\zig_extern_c zig_void start(zig_bool const a0); \\ ); ctx.h("header with noreturn function", linux_x64, @@ -993,7 +993,7 @@ pub fn addCases(ctx: *TestContext) !void { \\ unreachable; \\} , - \\ZIG_EXTERN_C zig_noreturn void start(void); + \\zig_extern_c zig_noreturn start(zig_void); \\ ); ctx.h("header with multiple functions", linux_x64, @@ -1001,15 +1001,15 @@ pub fn addCases(ctx: *TestContext) !void { \\export fn b() void{} \\export fn c() void{} , - \\ZIG_EXTERN_C void a(void); - \\ZIG_EXTERN_C void b(void); - \\ZIG_EXTERN_C void c(void); + \\zig_extern_c zig_void a(zig_void); + \\zig_extern_c zig_void b(zig_void); + \\zig_extern_c zig_void c(zig_void); \\ ); ctx.h("header with multiple includes", linux_x64, \\export fn start(a: u32, b: usize) void{ _ = a; _ = b; } , - \\ZIG_EXTERN_C void start(uint32_t a0, uintptr_t a1); + \\zig_extern_c zig_void start(zig_u32 const a0, zig_usize const a1); \\ ); }