commit d7daf7c203f583ed440efc68df6ee690ee8f8f32 (tree)
parent 39f1d96a2fd6aee5bf38b596db5a642bbba3a82d
Author: Jacob Young <jacobly0@users.noreply.github.com>
Date: Sun, 13 Aug 2023 05:55:00 -0400
start: workaround for LLVM 17 regression
Tracking issue #16799
Diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git 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
,