From d7daf7c203f583ed440efc68df6ee690ee8f8f32 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sun, 13 Aug 2023 05:55:00 -0400 Subject: start: workaround for LLVM 17 regression Tracking issue #16799 --- lib/std/start.zig | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'lib/std') diff --git a/lib/std/start.zig b/lib/std/start.zig index d2099ca803..36379960a4 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn { : [tos] "={rax}" (-> *std.os.plan9.Tos), ); } + switch (native_arch) { + // https://github.com/ziglang/zig/issues/16799 + .riscv64 => @export(argc_argv_ptr, .{ + .name = "__zig_argc_argv_ptr", + .visibility = .hidden, + }), + else => {}, + } asm volatile (switch (native_arch) { .x86_64 => \\ xorl %%ebp, %%ebp @@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn { .riscv64 => \\ li s0, 0 \\ li ra, 0 - \\ sd sp, %[argc_argv_ptr] + \\ lui a0, %hi(__zig_argc_argv_ptr) + \\ sd sp, %lo(__zig_argc_argv_ptr)(a0) \\ andi sp, sp, -16 \\ tail %[posixCallMainAndExit]@plt , -- cgit v1.2.3